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,
祝您祝您操作成功!

谢谢解答

您客气了。

能服务您是我的荣幸!