我一直在阅读关于模板函数的 CUDA 编程指南,这样的工作是否有效?
#include <cstdio>
/* host struct */
template <typename T>
struct Test {
T *val;
int size;
};
/* struct device */
template <typename T>
__device__ Test<T> *d_test;
/* test function */
template <typename T>
T __device__ testfunc() {
return *d_test<T>->val;
}
/* test kernel */
__global__ void kernel() {
printf("funcout = %g \n", testfunc<float>());
}
我得到了正确的结果,但有一个警告:
“警告:不能在设备函数中直接读取主机变量“d_test [with T=T]”?
testfunction 中的结构是否要实例化*d_test<float>->val
?
KR,伊吉