내가 아래와 같이 작동하는 CUDA 코드가이상한 오류 :</p> <pre><code>cpyDataGPU --> CPU while(nsteps){ cudaKernel1<<<,>>> function1(); cudaKernel2<<<,>>> } cpyDataGPU --> CPU </code></pre> <hr> <p>그리고 기능 1가 같다 : cudaErrorLaunchFailure
cudaMemcpy documentation에 따르면function1{
cudaKernel3<<<,>>>
cudaKernel4<<<,>>>
cpyNewNeedDataCPU --> GPU // Error line
cudaKernel5<<<,>>>
}
,이 기능을 "cudaSuccess", "cudaErrorInvalidValue", "cudaErrorInvalidDevicePointer"및 "cudaErrorInvalidMemcpyDirection"의 4 가지 오류 코드를 생성 할 수 있습니다.
"cudaErrorLaunchFailure": "커널을 실행하는 동안 장치에서 예외가 발생했습니다. 일반적인 원인으로 잘못된 장치 포인터를 역 참조하고 공유 메모리를 초과하여 액세스하는 경우가 있습니다. 장치를 untilcudaThreadExit()가 호출됩니다. 기존의 모든 장치 메모리 할당은 유효하지 않으며 프로그램이 CUDA를 계속 사용하려면 재구성해야합니다. "
아무에게도 왜 내가이 오류가 발생하는지에 대한 생각이 있습니까? 내가 뭘 잘못하고 있니?
이전의 커널 호출 후 데이터를 CPU-> GPU로 복사 하시겠습니까? 문제는 각 "while"단계에서 변경 될 수 있으므로 각 단계에서 해당 데이터를 복사해야한다는 것입니다.
탁월한 사전!
당신이'cudaDeviceSynchronize()'라고 내게 말했던 것처럼 코드를 debuged했고 이전 커널에서 오류가있었습니다. 마지막으로 나는 버그를 발견하고 그것을 고쳤다. 도움을 주셔서 대단히 감사합니다! – horstmann