큰 배열에서 커널을 실행 중입니다. clEnqueueNDRange 명령을 프로파일 링하면 실행 시간 (end-start)은 .001 ms이지만 제출 및 시작 (시작 - 제출) 사이의 시간은 입력 데이터의 크기에 따라 달라지는 약 120 ms입니다. 명령이 실행될 때까지 명령을 제출하면 어떻게됩니까? 이 큰 시간을 갖는 것이 합리적입니까?OpenCL에서 명령을 제출하고 시작하는 데 걸리는 시간이 오래 걸림
0
A
답변
0
OpenCL은 비동기 적으로 작동합니다. 즉, 일할 것을 요구할 때 그 일은 일어나지 않을 수도 있습니다. 그것은 미래의 어느 시점에 일어날 것입니다. 이것은 약간 이상합니다. 특히 프로파일 링을 시작할 때 특히 그렇습니다.하지만 CPU가 OpenGL 장치에 대한 많은 작업을 큐에 넣을 수 있도록 작업 한 다음 작업이 완료되는 동안 다른 작업을 수행하십시오. 예를 들어
:
여기clEnqueueWriteBuffer(blah);
clEnqueueNDRange(blah);
clEnqueueReadBuffer(blah, but blocking_read = CL_TRUE);
의 writeBuffer과 NDRange 아마 시간의 매우 적은 양을 나타납니다. 그들이해야 할 일은해야 할 일을 기록하는 것입니다. 블로킹 readBuffer는 읽기 결과를 기다려야하기 때문에 시간이 오래 걸립니다. 읽기가 완료되기 전에 읽기 및 커널 시작이 완료되기 전에 쓰기 및 커널 실행이 완료되어야합니다.
이제 읽기는 매우 작을 수 있습니다. 그러나 읽는 시간이 끝나기 전에 모든 것을 기다리고 있기 때문에 그 전에 걸린 명령의 작업량에 따라 달라집니다.
나는 당신이 당신의 질문에서 무엇을 측정하는지 잘 모르지만, 당신이보고있는 것이이 효과라고 기대합니다. 이전 작업이 끝날 때까지 기다려야하기 때문에 작업 시간은 다른 기능에 청구됩니다.
고성능 코드를 작성할 때 어떤 기능이 CPU를 GPU에서 대기하게하는지 알면 큰 트릭 중 하나입니다. 이럴 때마다 CPU가 어떤 유용한 작업을 중단하고 CPU가 다음 작업을 준비하는 동안 GPU가 유휴 상태가 될 가능성이 있습니다. 때로는 대안이 없기 때문에 기다려야합니다.
관련 문제
- 1. 응용 프로그램을 시작하는 데 시간이 오래 걸림.
- 2. MySQL 연결이 끊어지는 데 걸리는 시간이 오래 걸림
- 3. APK 처음으로 시작하는 데 오래 걸림
- 4. tablediff 도구를 실행하는 데 시간이 오래 걸림
- 5. iphone에 비디오를로드하는 데 비디오 시간이 오래 걸림.
- 6. Android 앱을로드하는 데 시간이 오래 걸림
- 7. UIView에 표시하는 데 시간이 오래 걸림
- 8. 사이트의 일부보기 섹션이로드하는 데 시간이 오래 걸림
- 9. Webservice 응답 시간이 오래 걸림
- 10. ob_flush 실행 시간이 오래 걸림
- 11. 로드 시간이 오래 걸리는 자식
- 12. 부자 렌더링 시간이 오래 걸림
- 13. tomcat 6을 종료하는 데 오랜 시간이 걸림
- 14. SQL 삭제 시간이 너무 오래 걸림
- 15. Small Business Server 2011을로드하는 데 시간이 오래 걸리는 이유는 무엇입니까?
- 16. Jasper 보고서를 여는 데 시간이 너무 오래 걸림
- 17. 프로 시저가 쿼리를 실행하는 데 시간이 오래 걸림
- 18. Android AVD가 시작하는 데 너무 오래 걸리는 이유는 무엇입니까?
- 19. POST 응답 시간이 너무 오래 걸림
- 20. ADsGetObject 함수가 반환 시간이 오래 걸림
- 21. Devexpress에서 개체를 저장하는 데 시간이 오래 걸리는 이유는 무엇입니까?
- 22. phpMyAdmin이 쿼리를 표시하는 데 시간이 오래 걸리는 이유는 무엇입니까?
- 23. 내 쿼리를 실행하는 데 시간이 오래 걸리는 이유는 무엇입니까?
- 24. VCC 2003에서 컴파일하는 데 시간이 오래 걸리는 이유는 무엇입니까?
- 25. 로딩 시간이 오래 걸림 Auto Complete Textview
- 26. JSP 페이지를로드하는 데 너무 오래 걸림
- 27. Excel 보고서 생성 시간이 오래 걸림
- 28. Silverlight 원본 파일 저장 시간이 오래 걸림
- 29. Google Apps 스크립트 저장 시간이 오래 걸림
- 30. 페이지 게시물의 시간이 오래 걸리는 이유는 무엇입니까?
커널의 결과가 필요한 clEnqueueNDRange 호출 후에 뭔가가 있습니까? 예를 들어, 커널 뒤에 clEnqueueMapBuffer가 블로킹되어 있습니까? 그렇지 않은 경우, 구현은 커널의 실행을 지연 시킬지 결정할 수 있습니다. – boiler96
예 결과를 읽은 후 두 개의 clEnqueueReadBuffer가 있지만 비 차단 호출로 결과를 읽을 수는 없습니다. 또한 clEnqueueMapBuffer 내게 잘못된 결과를주는 몇 가지 문제가있는 것 같습니다. 어쨌든 비 차단 호출로 데이터를 읽을 수 있습니까? – Damoon