我将我的示例代码编写如下。
int ** d_ptr;
cudaMalloc( (void**)&d_ptr, sizeof(int*)*N );
int* tmp_ptr[N];
for(int i=0; i<N; i++)
cudaMalloc( (void**)&tmp_ptr[i], sizeof(int)*SIZE );
cudaMemcpy(d_ptr, tmp_ptr, sizeof(tmp_ptr), cudaMemcpyHostToDevice);
这段代码运行良好,但是在内核启动后,我无法接收到结果。
int* Mtx_on_GPU[N];
cudaMemcpy(Mtx_on_GPU, d_ptr, sizeof(int)*N*SIZE, cudaMemcpyDeviceToHost);
此时,出现了段错误(segment-fault-error)。但是我不知道哪里出错了。
int* Mtx_on_GPU[N];
for(int i=0; i<N; i++)
cudaMemcpy(Mtx_on_GPU[i], d_ptr[i], sizeof(int)*SIZE, cudaMemcpyDeviceToHost);
这段代码也存在相同的错误。
我认为我的代码肯定有些错误,但是我整天都找不到它。
给我一些建议。