出于某种原因,这段代码似乎可以工作;
bool * copyHostToDevice(bool * h_input, size_t numElems)
{
bool * d_output;
cudaMalloc((void **) &d_output, numElems*sizeof(bool));
checkCudaErrors(cudaMemcpy((void *)d_output,(void *)h_input,numElems*sizeof(bool), cudaMemcpyHostToDevice));
return d_output;
}
但这会产生错误:
bool * copyDeviceToHost(bool * d_input, size_t numElems)
{
bool * h_output;
cudaMalloc((void **) &h_output, numElems*sizeof(bool));
cudaMemcpy((void *)h_output,(void *)d_input, numElems*sizeof(bool),cudaMemcpyDeviceToHost));
return h_output;
}
我在并行编程的 udacity 课程中远程运行它。
调用第二个函数时的输出是:
我们无法执行您的代码。您是否正确设置了网格和/或块大小?
您的代码已编译!
所以它得到一个运行时错误。当我删除第二个 fcn 的片段时,很明显错误是由 cuaMemcpy() 调用生成的。
提前致谢!