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__ 上返回一个指针? IE
__device__ float_3* foo(){}
最佳答案
是的,您可以创建 __device__
任何类型。它只是一个限定符,使该函数编译为在设备上运行并可从设备调用。
顺便说一下,CUDA 有一个 float3
类型。我从未使用过它,但如果我没记错的话,它提供了与您的 float_3
相同的功能。并且还带有一个构造函数。
关于结构类型的 CUDA __device__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6625967/