2
下面是一小段代碼,它將陣列中的4個元素複製到GPU。我真的不明白爲什麼cudaMemcpy在這種情況下拋出一個錯誤。請幫助cudaMemcpy簡單複製期間拋出錯誤
int size = 5;
float *a = (float*)malloc(size * sizeof(float));
a[0] = 1.0;
a[1] = 2.0;
a[2] = 3.0;
a[3] = 4.0;
a[4] = 5.0;
float *g;
cudaMalloc((void**)g, 4 * sizeof(float));
float *tem = a+2;
cudaError_t err = cudaMemcpy(g,a,4 * sizeof(float), cudaMemcpyHostToDevice);
if(err !=0){
printf("Cudamemcpy threw error\n");
getchar();
}
是它扔了什麼錯誤,到底是什麼? 'cudaGetErrorString'將解析任何運行時API函數的返回狀態爲可讀的字符串。 – talonmies 2012-01-13 16:01:54
我看到你正在GPU上分配一個大小爲4的浮點數組,並將大小爲5的浮點數組複製到它。 – nouveau 2012-01-15 17:38:22
@Jay:內存拷貝只是將'4 * sizeof(float)'字節拷貝到數組中。它不是緩衝區溢出。 – talonmies 2012-01-17 16:17:02