MultiGPU上__constant__变量的使用

刚刚试验出来的一点点小发现, 分享一下
就是在多GPU并行中使用__constant__变量的方法
(仿照SDK中simpleMultiGPU中的多GPU方法)

简而言之, 就是: 一次声明, 多卡公用, 各自分配, 互不相关

就是在要在多个GPU上使用__constant__变量, 只需在开始进行一次声明即可:
constant float c_arg;
然后在每个CPU线程(控制着一个GPU)里面,都可以对其进行赋值:
float h_arg=5.0;
cudaMemcpyToSymbol( “c_arg” , &h_arg , sizeof(float) );
这样, 就可以在这个线程里面的Kernel中使用c_arg

也就是说, 每个GPU上都有一个c_arg, 它们的名字都是一样的, 没错, 都是一样的
然后可以分别为每一个GPU上的c_arg进行赋值, 它们之间互不相关, 可以同值, 可以不同值

至少我试验着是正确的
表达不是特别理想, 不知道大家看明白了没…:smiley:
或者大家还有别的什么用法, 拿来分享一下呀~

学习一下,谢谢了,

学习了,呵呵

学习了,谢谢

cudaMemcpyToSymbol( “c_arg” , &h_arg , sizeof(float) );
c_arg为什么加双引号??

貌似早些的CUDA版本要加双引号,引用变量的名字。从CUDA5.0建议直接用变量名不加引号