CUDA __device__ типа struct - PullRequest
       6

CUDA __device__ типа struct

4 голосов
/ 08 июля 2011

Эксперты 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(){}

Ответы [ 2 ]

7 голосов
/ 08 июля 2011

Да, вы можете создать __device__ любого типа.Это просто спецификатор, который делает эту функцию компилируемой для запуска на устройстве и может вызываться из устройства.

И, кстати, CUDA имеет тип float3.Я никогда не использовал его, но если я правильно помню, он обеспечивает ту же функциональность, что и ваш float_3, а также поставляется с конструктором.

2 голосов
/ 09 июля 2011

Можем ли мы создать __device__ любого типа?

Краткий ответ: да .Длинный ответ: да, если это пользовательский тип, такой как float_3, вы можете определить __device__ указатель переменной и выделить память в устройстве, используя cudaMalloc.

Можно ли вернуть указатель на устройство?

Да, вы можете это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...