CUDA专家,如果我在主机代码中定义了一个新类型:
struct float_3{
float x;
float y;
float z;
};
并且我已将此类型的一些数据传输到设备,我是否可以创建该新类型的__device__
次调用,即:
__device__ float_3 foo(float_3 r,float b,int a){
}
我们可以创建任何类型的__device__
吗?或者只是int
,float
,dlouble
,void
等...
是否可以在__device__上返回一个指针?即
__device__ float_3* foo(){}
答案 0 :(得分:7)
是的,您可以创建任何类型的__device__
。它只是一个限定符,使该函数编译为在设备上运行并可从设备调用。
顺便说一句,CUDA有float3
类型。我从来没有使用它,但如果我没记错,它提供了float_3
的相同功能,并且还带有构造函数。
答案 1 :(得分:2)
我们可以创造吗? 任何类型的
__device__
?
简短的回答是是。答案很长,是的,如果它是用户定义的类型float_3
,您可以使用__device__
定义cudaMalloc
变量指针并在设备中分配内存。
是否可以返回指针 设备
是的,你可以做到。