enqueueNDRangeKernel을 반복 호출 할 때 다른 OpenCL 함수를 호출해야합니까?OpenCL에서 enqueueNDRangeKernel을 반복 호출
이 방식으로 enqueueNDRangeKernel을 사용하는 방법을 보여주는 튜토리얼을 찾을 수 없어서 불행히도 처리되지 않은 예외 오류가 발생했습니다. 이전에 비슷한 질문을했지만 응답이 내 상황에 적용되지 않는 것 같습니다.
나는 현재 내가 다음 순서로 OpenCL을 함수를 호출하는 루프가 있습니다
- setArg을
- enqueueNDRangeKernel
- enqueueMapBuffer
- enqueueUnmapMemObject 내가 부르고
setArg enqueueNDRangeKernel을 호출하기 전에 커널에 대한 입력이 변경되기 때문입니다. 커널 출력이 호스트 코드에서 사용되므로 enqueueMapBuffer 및 enqueueUnmapMemObject를 호출합니다. 커널은 처음에는 정상적으로 실행되지만 출력은 올바르지 만 두 번째 패스에서 루프를 통과하는 동안 enqueueMapBuffer를 호출 할 때 처리되지 않은 예외 오류가 발생합니다.
내가 사용하고다음과 같은 설정 :
-
(인텔 I7의 CPU에) CL_DEVICE_TYPE_CPU와
- 인텔의 OpenCL SDK
- 비주얼 스튜디오 2010 IDE 호스트 코드는 C로 작성
- 윈도우 7 ++ OpenCL C++ 바인딩으로.
감사합니다.