正如我所看到的,在Google 和许多网站上, nVidia Quadro KXXXXM - 移动 GPU (MXM)都有“共享内存:否” 。
但如果我想为这些卡编写 CUDA C/C++,我可以在代码中使用共享内存吗?如果我可以,那么如果我这样做会发生什么 - 它会使用全局 GPU-RAM 吗?
现在,如果我使用此代码尝试在GeForce GTX460SE(CC2.1)中使用CUDA5.5从CPU-Cores访问GPU-RAM,那么我会收到异常"访问冲突":
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <iostream>
int main()
{
unsigned char* gpu_ptr = NULL;
cudaMalloc((void **)&gpu_ptr, 1024*1024);
*gpu_ptr = 1;
int q; std::cin >> q;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但我们知道,有UVA(统一虚拟寻址).还有一些新的:
是否可以通过使用新CUDA6中的简单指针从CPU-Cores访问内存GPU-RAM?
对象WMA(虚拟内存区域struct vm_area_struct,用于操作内核Linux)和PTE(用于操作MMU的页面表条目)之间的区别是什么,以及为什么我们需要WMA而没有足够的PTE?
通过以下链接编写:https://docs.nvidia.com/deploy/pdf/CUDA_Multi_Process_Service_Overview.pdf
1.1.乍看上去
1.1.1.MPS
多进程服务(MPS)是CUDA应用程序编程接口(API)的替代二进制兼容实现.MPS运行时架构旨在透明地启用协作式多进程CUDA应用程序(通常为MPI作业),以在最新的NVIDIA(基于Kepler的)Tesla和Quadro GPU上使用Hyper-Q功能.Hyper-Q允许在同一GPU上同时处理CUDA内核; 当GPU计算容量未被单个应用程序进程利用时,这可以提高性能.
使用CUDA6.5 + MPI(OpenMPI/IntelMPI)时是否必须使用MPS(多进程服务),或者我可以不使用MPS而丢失一些性能但没有任何错误?
如果我不使用MPS,是否意味着单个服务器上的所有MPI进程将在单个GPU卡上顺序执行(而非并发)GPU内核函数,但所有其他行为将保持不变?
Nvidia GPU列表 - GeForce 900系列 - 有写道:
4单精度性能计算为着色器数量乘以基本核心时钟速度的2倍.
例如,对于GeForce GTX 970,我们可以计算性能:
1664核心*1050 MHz*2 = 3 494 GFlops峰值(3 494 400 MFlops)
我们可以在列中看到这个值 - 处理能力(峰值)GFLOPS - 单精度.
但为什么我们必须乘以2?
写道:http://devblogs.nvidia.com/parallelforall/maxwell-most-advanced-cuda-gpu-ever-made/
SMM使用基于象限的设计,具有四个32核处理模块,每个模块具有专用的warp调度程序,能够在每个时钟发送两条指令.
好的,nVidia Maxwell是超标量体系结构,每个时钟发送两条指令,但是1个CUDA内核(FP32-ALU)每个时钟可以处理多于1条指令吗?
我们知道1个CUDA-Core包含两个单元:FP32-unit和INT-unit.但INT-unit与GFlops(每秒浮点运算)无关.
即一个SMM包含:
要获得GFlops的性能,我们应该只使用:128个FP32单元和32个SFU单元.
即如果我们同时使用128个FP32单元和32个SFU单元,那么我们可以获得160个指令,每个SM每个时钟具有浮点运算.
也就是说,我们必须通过1,2 =(160/132)的instad为2.
1664核心*1050 MHz*1,2 = 2 096 GFlops峰值
为什么在wiki中写入我们必须多个核心*MHz乘2?
众所周知,OpenCV 3.0支持新类cv::Umat,它提供透明API(TAPI)以自动使用OpenCL,如果它可以:http://code.opencv.org/projects/opencv/wiki/Opencv3#tapi
cv::UmatTAPI 有两个简介:
但如果我有:
如果我在OpenCV中打开OpenCL,那么如何在OpenCL代码执行时更改设备:在8核CPU,集成高清显卡上,在第一个nVidia GPU或第二个nVidia GPU上?
如何选择这4个设备中的每个设备使用OpenCL进行并行执行算法cv::Umat?
例如,如何在4xCore的CPU Core-i5上使用OpenCL加速cv::Umat?
我们知道Fermi仅支持与GPU的单一连接,如下所示:http://on-demand.gputechconf.com/gtc-express/2011/presentations/StreamsAndConcurrencyWebinar.pdf
Fermi架构可以同时支持
GPU上最多16个CUDA内核
正如我们所知,Hyper-Q允许来自多个CUDA流,MPI流程或流程中的线程的多达32个同时连接:http://www.nvidia.com/content/PDF/kepler/NVIDIA-Kepler-GK110-架构Whitepaper.pdf
但是在Kepler CC3.0/3.5,16或32(STREAM)上同时支持多少内核?
我正在尝试在Linux中编写一个遍历当前目录的bash脚本,并在每个子目录中启动现有的makefile.它应该适用于每个子目录,无论深度如何.
一些限制:
make只有在此类文件夹中有makefile时,才应启动每个目录的命令.关于如何做的任何想法?
Haswell现在有2个分支单位 - 如下所示:http://arstechnica.com/gadgets/2013/05/a-look-at-haswell/2/
这是否意味着Haswell是双路径执行CPU?
在:http://ditec.um.es/~jlaragon/papers/aragon_ICS02.pdf
这是否意味着Haswell只能在整数ALU和Shift(端口6)上执行第二个分支,而不能在其他端口上的任何其他ALU上执行?
正如这里所说,OpenCV 使用 IPP,而 IPP 使用 GPU:
\n\n\n\n\n原来 OpenCV 正在使用 IPP,而 IPP 本身现在也可以使用 GPU\n。
\n\n以防万一其他人在 google 上搜索“opencv gpu 速度较慢”并且不知道\n IPP GPU 支持;)
\n
另外,我发现了这个:
\n\n\n\n\n使用Intel\xc2\xae IPP异步优化增强现实管道
\n\n使用 Intel\xc2\xae GPU优化 Total Immersion 的 D\'Fusion* 增强现实管道的性能和功耗
\n
而且没有一个关键字:OpenCL、OpenACC、CUDA、nVidia,...
\n\n与GPU相关的关键字只有一个:OpenGL
\n\n这是否意味着Intel IPP仅支持Intel GPU?或者 Intel IPP 支持任何支持 OpenGL 的 GPU(nVidia GeForce、AMD Radeon)?
\n