我在主机中有一个bool,它被复制到设备,然后循环复制回主机。这是我的代码。
bool h_done = true;
bool* d_done;
while(h_done != false){
err = cudaMemcpy(d_done, &h_done, sizeof(bool), cudaMemcpyHostToDevice);
......
bfs<<<blocksPerGrid, threadsPerBlock>>>(h_edges, h_vertices, d_current_depth, d_done);
err = cudaMemcpy(&h_done, d_done, sizeof(bool), cudaMemcpyDeviceToHost);
......
}
代码在bool必须从设备复制回主机的位置失败,并出现以下错误。
Failed to copy d_done to host(error code unspecified launch failure)!
我在这里做错了什么。
答案 0 :(得分:-1)
也许您在其他地方这样做,但根据您提供的代码,您没有这样做:
d_done=(bool *)cudaMalloc(sizeof(bool))
这里有其他很好的例子:
https://docs.nvidia.com/cuda/cuda-c-programming-guide/#device-memory