结构类型的 CUDA __device__

标签 cuda

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/

相关文章:

c++ - 如何为数组结构的数组分配内存

c++ - CUDA 编译器 (nvcc) 宏

algorithm - cuda矩阵逆高斯乔丹

cuda - CUDA 中的一维 fftshift

for-loop - 在 for 循环中重复调用内核的 CUDA 程序的性能受到影响

c++ - 如何在 CUDA 中实现基本的 C++ 二维数组循环

cuda - 计算 CUFFT 的性能

CUDA:atomicAdd 花费太多时间,序列化线程

c++ - 高效布局和减少虚拟2D数据(抽象)

c - 如何处理 CUDA 设备上的 64 位字?