在device和host间拷贝数据出错

checkCudaErrors(cudaMemcpy(h_odata, d_odata, sizeof(float) * num_threads,
cudaMemcpyDeviceToHost));
单步执行,调试时发现这步出错,怎么会拷贝不了呢?查下面的窗口有这个:‡ check 返回 false bool
这是什么意思?

LZ您好,如果您确认是这里出错,那么请检查一下这个函数的参数,h_odata和d_odata是否都合适地申请到了足够的空间。

以及,按照CUDA的特性,如果前面有API错误或者kernel挂掉的话,后面的所有操作都会挂掉的。
考虑到您这是device回传数据,那么前面的kernel是否执行正确,也建议您检查一下。

可以在这一行前面,cudaDeviceSynchronize()一下,然后printf(“%s”,cudaGetErrorString(cudaGetLastError()));看看前面是否运行正常。

祝您调试顺利!