类型为struct的CUDA __device__

时间:2011-07-08 14:30:54

标签: cuda

CUDA专家,如果我在主机代码中定义了一个新类型:

struct float_3{
 float x;
 float y;
 float z;
};

并且我已将此类型的一些数据传输到设备,我是否可以创建该新类型的__device__次调用,即:

__device__ float_3 foo(float_3 r,float b,int a){
}

我们可以创建任何类型的__device__吗?或者只是intfloatdloublevoid等... 是否可以在__device__上返回一个指针?即 __device__ float_3* foo(){}

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:2)

  

我们可以创造吗?   任何类型的__device__

简短的回答是。答案很长,是的,如果它是用户定义的类型float_3,您可以使用__device__定义cudaMalloc变量指针并在设备中分配内存。

  

是否可以返回指针   设备

是的,你可以做到。