메신저 열기구 쓰기 및 나는 이상한 문제가 있습니다. 커널 실행 이전에 clEnqueueReadBuffer가 gpu mem에서 프로그램 mem 20000 배열로 float를 읽는 데 아무런 문제가 없었습니다.하지만 커널이 실행 한 후 전달 된 배열에서 일부 작업을 수행 한 후에는 너무 오래 (~ 150 ms)의 읽기 버퍼가 필요했습니다. 왜? 두 경우 모두 데이터로 채워졌습니다. 커널이 잘못된 것은 무엇일까요? (배열을 통과 한 것은 __global 임).Open CL clEnqueueReadBuffer 실행 시간
1
A
답변
1
clEnqueueNDRangeKernel
실제로 커널을 시작하지 않으면 커널을 "대기"합니다. OpenCL 구현은 적합하다고 판단 될 때마다 커널을 시작할 수 있습니다 (이 경우, 결과를 알기 위해 커널을 실행해야하므로 결과를 읽으라는 요청을 할 때).
그러나 구현시 강제로 clFinish
을 통해 커널을 시작할 수 있습니다.
사실, 150ms 지연은 실제로 커널이 실행되는 데 걸리는 시간입니다.
clFinish
을 실행 및 두 번째 읽기 사이에 호출하면 작동합니다.
관련 문제
- 1. Open CL with AMD
- 2. 예상 실행 시간 대 최악의 실행 시간
- 3. CL 프로그램에서 메시지를받는 방법?
- 4. 실행 비용과 Oracle의 실행 시간
- 5. cl-smtp와 SBCL 오류
- 6. 오픈 CL 기입은 선택
- 7. CL-사람과 형식
- 8. cl-opengl glut은 성숙한가요?
- 9. cl-actors return value
- 10. OpenGL cl interop
- 11. 오픈 CL 컴파일러는
- 12. 런타임에서 최대 실행 시간 감지
- 13. MySQL 실행 시간
- 14. C 언어로 실행 시간
- 15. 실행 시간 계산
- 16. 최대 실행 시간 문제
- 17. PDO 문 실행 시간
- 18. Pyramid의 로깅 실행 시간
- 19. 스크립트 실행 시간 향상
- 20. Clojure 프로그램의 실행 시간
- 21. 프로그램 실행 시간
- 22. File.list() 실행 시간?
- 23. PHP "최대 실행 시간"
- 24. 실행 시간 오류 '91'
- 25. 최대 실행 시간 증가
- 26. 삽입 - 정렬의 실행 시간
- 27. 실행 시간 차이가 있습니까?
- 28. 쿼리 실행 시간
- 29. PHP 최대 실행 시간
- 30. 인라인 어셈블러 실행 시간
커널을 실행하기 전에 GPU 메모리가 데이터로 어떻게 채워 졌습니까? – ardiyu07