как передать массив структуры в GPU? - PullRequest
2 голосов
/ 14 апреля 2011

У меня есть такая структура:

struct Node
{
     int *ptr;
     int k;   
}*d_ptr;

как я могу объявить массив узлов и передать его в графический процессор? проблема в том, что я должен сначала выделить память для ptr, а затем Node!

У меня есть это до сих пор:

int N=100;
int NumbOfNodes=5;
cudaMalloc((void **) &d_NodeArr, sizeof(Node)*NumbOfNodes);
for(int i=0;i<NumbOfNodes;i++)
    cudaMalloc((void **) d_NodeArr[i].Degree, sizeof(int)*N);

было бы быстрее, если бы я выделил все в одном массиве следующим образом:

int N=100;
int NumbOfNodes=5;
int SIZE=(100*5)+5;//the +5 is for the k
cudaMalloc((void **) &d_ptr,sizeof(int)*SIZE);

1 Ответ

1 голос
/ 14 апреля 2011

Сначала создайте структуру на хосте. То есть создайте структуру, а затем выполните cudaMalloc для массива int. Впоследствии скопируйте саму структуру с хоста на устройство.

Это может помочь вам: http://forums.nvidia.com/index.php?showtopic=196084

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