结构类型的CUDA设备

结构类型的CUDA设备,cuda,Cuda,CUDA专家,如果我在主机代码中定义了新类型: struct float_3{ float x; float y; float z; }; 我已经将这种类型的一些数据传输到设备,我可以创建这种新类型的\uuuu设备\uuuu调用吗,即: __device__ float_3 foo(float_3 r,float b,int a){ } 我们可以创建任何类型的\uuuuuuuuuuuuuuuuuuu设备吗?或者只是int,float,dlouble,void,等等。。。 有可能返回设备

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

struct float_3{
 float x;
 float y;
 float z;
};
我已经将这种类型的一些数据传输到设备,我可以创建这种新类型的
\uuuu设备\uuuu
调用吗,即:

__device__ float_3 foo(float_3 r,float b,int a){
}
我们可以创建任何类型的
\uuuuuuuuuuuuuuuuuuu设备吗?或者只是
int
float
dlouble
void
,等等。。。 有可能返回设备上的指针吗?即
\uuuuuuuuuuuuuuuuu设备\uuuuuuuuuuuuu3*foo(){}
是的,您可以创建任何类型的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu设备。它只是一个限定符,使该函数可以编译以在设备上运行,并且可以从设备上调用

顺便说一下,CUDA有一个
float3
类型。我从未使用过它,但如果我没记错的话,它提供了与您的
float_3
相同的功能,还附带了一个构造函数

我们能创造吗
\uuuuuuuuuuuuuuuuuuuu设备
任何类型

简而言之,答案是肯定的。答案很长,是的,如果它是用户定义的类型,如
float\u3
,您可以定义
\uuuuuu设备\uuuuu
变量指针,并使用
cudamaloc
在设备中分配内存

是否可以在上返回指针 装置


是的,你能做到

CUDAfloat3类型还具有正确的对齐声明,这是另一个优势。