何らかの理由で、このコードは機能しているようです。
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 クラスでリモートで実行しています。
2 番目の関数を呼び出したときの出力は次のとおりです。
コードを実行できません。グリッドやブロックのサイズを正しく設定しましたか?
コードがコンパイルされました!
そのため、実行時エラーが発生します。2 番目の fcn の一部を削除すると、エラーが cuaMemcpy() 呼び出しによって生成されていることが明らかになります。
前もって感謝します!