2011-06-06 72 views
7

是什麼cudaMemcpy - 從主機複製一個int到設備錯誤

cudaMemcpy and cudaMemset?? 

如何從主機複製一個int值,設備之間的區別? 這是我使用

int addXdir = 1; 
int devAddXdir; 
cudaMalloc((void**)&devAddXdir, sizeof(int)); 
cudaMemcpy(devAddXdir, addXdir, sizeof(int), cudaMemcpyHostToDevice); 

它提供了以下錯誤 錯誤代碼:類型的參數「INT」是類型爲「無效*」的參數不兼容 錯誤:類型的參數「INT」不兼容參數類型爲「const void *」

+1

cudaMemcpy和cudaMemset之間的差別在於一個取值爲源,另一個指針。這兩個函數的API文檔中明確地說明了這種差異。 – talonmies 2011-06-06 08:42:20

+0

發佈後5年內接受答案必須是某種記錄。 – talonmies 2016-08-23 20:06:57

回答

7

devAddXdir必須是該代碼工作的指針。另外,您必須通過參考cudaMemcpy來通過addXdir,而不是通過值。像這樣:

int addXdir = 1; 
int * devAddXdir; 
cudaMalloc((void**)&devAddXdir, sizeof(int)); 
cudaMemcpy(devAddXdir, &addXdir, sizeof(int), cudaMemcpyHostToDevice); 
相關問題