类型为struct的CUDA __device__

Man*_*ete 5 cuda

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(){}

jms*_*msu 8

是的,您可以创建__device__任何类型.它只是一个限定符,使该函数编译为在设备上运行并可从设备调用.

顺便说一句,CUDA有一种float3类型.我从来没有使用它,但如果我没记错,它提供了相同的功能,float_3并附带一个构造函数.

  • CUDA float3类型也有正确的对齐声明,另一个优点. (5认同)