CUDA专家,如果我在主机代码中定义了一个新类型:
struct float_3{
float x;
float y;
float z;
};
Run Code Online (Sandbox Code Playgroud)
并且我已将此类型的一些数据传输到设备,我可以创建__device__该新类型的调用,即:
__device__ float_3 foo(float_3 r,float b,int a){
}
Run Code Online (Sandbox Code Playgroud)
我们可以创建__device__任何类型的?或者只是int,float,dlouble,void,等等,并有可能在__device__返回一个指针?即
__device__ float_3* foo(){}
是的,您可以创建__device__任何类型.它只是一个限定符,使该函数编译为在设备上运行并可从设备调用.
顺便说一句,CUDA有一种float3类型.我从来没有使用它,但如果我没记错,它提供了相同的功能,float_3并附带一个构造函数.