【问题标题】:CUDA __device__ of type struct结构类型的 CUDA __device__
【发布时间】:2011-07-08 14:30:53
【问题描述】:

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(){}

【问题讨论】:

    标签: cuda


    【解决方案1】:

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

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

    【讨论】:

    • CUDA float3 类型也有正确的对齐声明,另一个优点。
    【解决方案2】:

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

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

    是否可以返回一个指针 设备?

    是的,你可以做到。

    【讨论】:

      猜你喜欢
      • 2016-01-18
      • 2020-01-31
      • 1970-01-01
      • 2015-12-10
      • 2013-11-22
      • 2011-12-25
      • 2011-08-08
      • 2014-12-30
      • 1970-01-01
      相关资源
      最近更新 更多