2016-04-29 23 views
0

代碼:CUDA 6.5(第1.1)的結構的結果cudaMemcpy陣列中「無效參數」

Octree_t* tarr = (Octree*)malloc(nodes * sizeof(Octree_t)); 
//nodearray[2]->test = 42; 
for (int i = 0; i < cnodes; i++) 
{ 
    tarr[i] = *nodearray[i]; 
} 
//printf(" test: %d\n",tarr[2].test); //returns 42 

cudaError_t err; 
Octree_t*  gpu_nodearray; 

//allocate storage on gpu 
err = cudaMalloc(&gpu_nodearray, cnodes * sizeof(Octree_t) != cudaSuccess ); 
if (err != cudaSuccess) 
{ 
    printf("1: %s\n", cudaGetErrorString(err)); 
    return; 
} 
err = cudaMemcpy(gpu_nodearray, tarr, cnodes * sizeof(Octree_t), cudaMemcpyHostToDevice); 
if (err != cudaSuccess) 
{ 
    printf("3: %s\n", cudaGetErrorString(err)); 
    return; 
} 

它編譯細但是當我運行它,則返回「3:無效參數」。很顯然,cudaMempy有些問題。我已經在這裏看過類似的帖子,我找不到我犯的錯誤。

感謝您的任何幫助。

回答

0

err = cudaMalloc(&gpu_nodearray, cnodes * sizeof(Octree_t) != cudaSuccess ); 

應該

err = cudaMalloc(&gpu_nodearray, cnodes * sizeof(Octree_t)); 
+0

哇...我有cudaMalloc在 如果「cudaMalloc(..)!= cudaSuccess) 然後我改變了....好吧,它總是可以毀掉職業球員的小事情文法日;)感謝您的迴應。 – mad1Z

+0

適合所有人:-) – sitic