我可以在带有MPS的NVIDIA Kepler GPU上同时运行非MPI CUDA应用程序吗?我想这样做是因为我的应用程序无法充分利用GPU,所以我希望它们能够共同运行.有没有代码示例呢?
在Kepler 架构白皮书中,NVIDIA 声明SMX 上有32
特殊功能单元 (SFU) 和32
加载/存储单元 (LD/ST)。
SFU 用于“快速近似超越运算”。不幸的是,我不明白这是什么意思。另一方面,在SFU 的特殊 CUDA 双精度触发函数中,据说它们只能在单精度下工作。这在 K20Xm 上仍然正确吗?
LD/ST 单元显然用于存储和装载。通过这些论文之一是否需要任何内存加载/写入?它们是否也用作单一经线?换句话说,是否可以只有一个当前正在写入或读取的经线?
干杯,安迪
在CUDA 6.5的文档中写道:http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#ixzz3PIXMTktb
5.2.3.多处理器级别
...
- 8L用于计算能力3.x的设备,因为多处理器在一个时钟周期内每次发生一对指令,一次四个经线,如Compute Capability 3.x中所述.
这是否意味着GPU Kepler CC3.0处理器不仅是流水线架构,还是超标量?
流水线 - 这两个序列并行执行(一次执行不同的操作):
超标量 - 这两个序列并行执行(一次执行相同的操作):
在CUDA设备中,在全局内存写入中合并与在全局内存读取中合并一样重要吗?如果是,怎么解释?早期的CUDA设备和最近的CUDA设备之间是否存在差异?
我正在使用新的kepler的shuffle指令实现CUDA上的并行缩减,类似于:http://devblogs.nvidia.com/parallelforall/faster-parallel-reductions-kepler/
我在给定矩阵中搜索行的最小值,并在内核的末尾我有以下代码:
my_register = min(my_register, __shfl_down(my_register,8,16));
my_register = min(my_register, __shfl_down(my_register,4,16));
my_register = min(my_register, __shfl_down(my_register,2,16));
my_register = min(my_register, __shfl_down(my_register,1,16));
Run Code Online (Sandbox Code Playgroud)
我的块是16*16,所以一切正常,使用该代码我在同一个内核中的两个子行中获得最小值.
现在我还需要返回矩阵每行中最小元素的索引,所以我打算用"if"语句替换"min"并以类似的方式处理这些索引,我对这段代码感到困惑:
if (my_reg > __shfl_down(my_reg,8,16)){my_reg = __shfl_down(my_reg,8,16);};
if (my_reg > __shfl_down(my_reg,4,16)){my_reg = __shfl_down(my_reg,4,16);};
if (my_reg > __shfl_down(my_reg,2,16)){my_reg = __shfl_down(my_reg,2,16);};
if (my_reg > __shfl_down(my_reg,1,16)){my_reg = __shfl_down(my_reg,1,16);};
Run Code Online (Sandbox Code Playgroud)
没有cudaErrors,但内核现在返回垃圾.不过我已经解决了这个问题:
myreg_tmp = __shfl_down(myreg,8,16);
if (myreg > myreg_tmp){myreg = myreg_tmp;};
myreg_tmp = __shfl_down(myreg,4,16);
if (myreg > myreg_tmp){myreg = myreg_tmp;};
myreg_tmp = __shfl_down(myreg,2,16);
if (myreg > myreg_tmp){myreg = myreg_tmp;};
myreg_tmp = __shfl_down(myreg,1,16);
if (myreg > …
Run Code Online (Sandbox Code Playgroud) 是否有可能使用流在Kepler 3.5 GPU中的同一流多处理器上拥有多个独特的内核?即<<<1,1024>>>
在具有15个SM的Kepler GPU上同时运行30个大小的内核?
我们知道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)上同时支持多少内核?