如题
global函数是不是不能调用自己所在源文件之外的device函数?
如题
global函数是不是不能调用自己所在源文件之外的device函数?
楼主您好!
调用另外一个文件里面的__device__是可以的。我将在下一个段落中为您讲述如何操作。
操作步骤:
首先,您需要使用cuda toolkit 5.0, 之前的任何版本的toolkit只能整体编译。
其次,您使用您的鼠标邮件点击您的solution, 选择属性。然后在弹出的窗口中,选择cuda c/c++ → comm。
然后,您需要找到Generate Relocatable Device Code的选项(-rdc=true)。选择它。
编码步骤:
在文件a.cu里定义您的__device__函数。例如__device__ int r(int i) {return i * i;}
在文件b.cu里声明该函数,extern device int r(int);
然后您可以在您的b.cu里面的__global__里直接使用r函数。
在完成上述2个段落后。您需要以至少2.0(以及以上的)计算能力配置,重新编译您的项目。
然后您会看到,b.cu可以成功使用来自a.cu里面的device functions.
再次重申,这是cuda 5.0的新特性,以及,您需要至少一张2.0的卡。
感谢您莅临CUDAZone China,
祝您祝您操作成功!
谢谢解答
您客气了。
能服务您是我的荣幸!