2011-04-14 48 views
2

我有此結構:如何將結構數組傳遞給GPU?

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

如何我可以聲明節點的數組,並把它傳遞給GPU?問題是我必須先爲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); 
+0

是的,這將以更快的速度在單個陣列中分配的一切。這是常見的做法。 – jmilloy 2011-04-14 18:19:47

回答