2011-10-16 3 views
2

enqueueNDRangeKernel을 반복 호출 할 때 다른 OpenCL 함수를 호출해야합니까?OpenCL에서 enqueueNDRangeKernel을 반복 호출

이 방식으로 enqueueNDRangeKernel을 사용하는 방법을 보여주는 튜토리얼을 찾을 수 없어서 불행히도 처리되지 않은 예외 오류가 발생했습니다. 이전에 비슷한 질문을했지만 응답이 내 상황에 적용되지 않는 것 같습니다.

나는 현재 내가 다음 순서로 OpenCL을 함수를 호출하는 루프가 있습니다

  1. setArg을
  2. enqueueNDRangeKernel
  3. enqueueMapBuffer
  4. enqueueUnmapMemObject
  5. 내가 부르고

setArg enqueueNDRangeKernel을 호출하기 전에 커널에 대한 입력이 변경되기 때문입니다. 커널 출력이 호스트 코드에서 사용되므로 enqueueMapBuffer 및 enqueueUnmapMemObject를 호출합니다. 커널은 처음에는 정상적으로 실행되지만 출력은 올바르지 만 두 번째 패스에서 루프를 통과하는 동안 enqueueMapBuffer를 호출 할 때 처리되지 않은 예외 오류가 발생합니다.

내가 사용하고

다음과 같은 설정 :

    (인텔 I7의 CPU에) CL_DEVICE_TYPE_CPU와
  1. 인텔의 OpenCL SDK
  2. 비주얼 스튜디오 2010 IDE 호스트 코드는 C로 작성
  3. 윈도우 7 ++ OpenCL C++ 바인딩으로.

감사합니다.

답변

1

문제 해결 ... 올바른 OpenCL 함수 호출 순서를 사용하고있는 것으로 나타났습니다. 루프의 첫 번째 반복 이후에 나타나는 커널에 문제가있었습니다.

0

나는 너와 똑같은 것을 시도하고 있지만 나는 한 순간에 붙어있다. 나는 OpenCL 프로그램과 커널을 만들었지 만 둘 다 작동 시키지만 여러 번 반복 할 때만 코드를 반복하여 할당 코드를 만들어 모든 메모리를 할당 해제 할 때만 작동합니다.

관련 문제