问:
__global__ static void HelloCUDA( )与__global__ void HelloCUDA( )有什么区别吗?static关键字可以放在__global__之前吗?如果可以_global__ static与static _global__ 表达的是同一个意思吧?
答:
(1)有区别的。加上了static修饰后将限制符号的作用范围在本文件(以及,对应的目标文件),不会被导出为全局符号的。这可以防止符号污染。
(2)__global__ static void,和static __global__ void, 和__global__ void static都一样,你如果将kernel放置在多个文件中,那么static修饰的kernel只能从本文件中调用的。不加static的话,开启-rdc=true(设备代码重定位), 可以允许你,例如main函数在一个文件,kernel们在另外一个或者多个文件里。 有的时候这样安排比较清晰。