OpenCL 응용 프로그램 (특히 컴퓨팅 커널)의 성능을 나타내는 가장 적합한 방법은 무엇입니까? 몇 가지 알고리즘을 구현했으며 속도 향상 및 효율성 차트를 제시하려고 생각했지만 정의에 따르면 계산에 사용한 프로세서의 수를 알아야합니다. OpenCL의 경우에는 수행 할 수 없습니다.OpenCL 성능 측정
답변
일부 GPU는 정확하게 시간을 측정 할 수있는 하드웨어 장치가 없다고 생각합니다. 그래서 이것은 당신이 CPU로 돌아갈 필요가 있음을 의미합니다. 그러나 나는 틀릴 수도 있습니다.
CL_QUEUE_PROFILING_ENABLE 플래그가 설정된 명령 대기열을 만든 다음 clGetEventProfilingInfo를 사용하여 타이밍 데이터를 추출하십시오. 자세한 내용은 "OpenCL 프로그래밍 안내서"의 9 장을 참조하십시오.
나는 언어/런타임의 기능을 활용하여 vocaro의 제안이 가장 적합하다고 말할 수 있습니다. 그러나 플랫폼에 어떤 이유로 든 작동하지 않는다면 주어진 CL 작업의 월 클럭 실행 시간에만 관심이 있다면 다른 솔루션이 있습니다.
clFinish()로 작업을 래핑하고 시스템의 최고 해상도 타이머를 사용하여 경과 시간을 얻을 수 있습니다. 예를 들어 맥 OS X를 사용하여 이런 식으로 뭔가 :
uint64_t start, end;
clFinish(command_queue);
start = mach_absolute_time();
clEnqueueNDRangeKernel(command_queue, /* etc. */);
clFinish(command_queue);
end = mach_absolute_time();
당신은 나노초이 절대 시간을 변환하는 Apple QA1398의 정보를 사용할 수 있습니다. 이 메소드는 clEnqueuNDRangeKernel 및 clFinish의 오버 헤드를 포함하기 때문에 이벤트 프로파일 링을 사용하는 것만 큼 정확하지는 않습니다.
완료 대기로 인해 보류중인 모든 CL 명령이 계산 장치 및에 모두 완료되었음을 보증합니다.
nVidia의 모범 사례 가이드에는 성능 측정에 대한 전체 장이 있습니다. 조만간이 문제로 귀결됩니다. (@James에서 제안한) 외부 타이머를 사용하거나 GPU 프로파일 링 메커니즘 (@vocaro에서 제안)을 사용할 수 있습니다. 비록 내가 개인적으로 단순화를 위해 CPU 타이머를 사용하는 것에 집중할지라도, 후자는 더 나은 정밀도를 제공해야한다. 내가 사용되는 프로세서의 수는 사용자가 직접 제어 계산
이 멀티 CPU 병렬화에 대한 사실에서 사용 얼마나 많은 프로세서를 알 필요가 정의에 따라
. GPU에서는 GPU를 사용할 수 있지만 장치 내에서 일정을 제어 할 수는 없습니다. 그래서 보통 (실제로는 모든 CPU-vs-GPU 차트에서 "SpeedUp (문제 차원)"("마케팅"프레젠테이션) 또는 "SpeedUp (커널 옵션)"(더 많은 "techie" 프리젠 테이션, 커널 옵션은 그리드 매개 변수 또는 일부 코드 특수성 일 수 있습니다) 또는 "SpeedUp (사용 된 GPU 수)"(물론 프로그램이 다중 GPU를 지원하는 경우).
- 1. OpenCL 성능 최적화
- 2. 웹 서버의 성능 측정
- 3. PHP 성능 측정
- 4. Lisp : 함수의 성능 측정
- 5. 안드로이드 브라우저의 성능 측정
- 6. Android에서 성능 측정
- 7. XCode 성능 측정
- 8. 클라이언트 성능 측정
- 9. 자바 알고리즘의 성능 측정
- 10. IE에서 자바 성능 측정
- 11. 부드러운 스크롤링 성능 측정
- 12. 자바 스크립트 성능 측정
- 13. prof로 성능 측정
- 14. Nginx 성능 측정
- 15. 웹 사이트의 성능 측정
- 16. QEMU : 일부 성능 측정
- 17. WP7 - 성능 향상 측정
- 18. Java 프로그램 성능 측정
- 19. AMD GPU OpenCL 시간 측정 문제
- 20. OpenCL AMD vs NVIDIA 성능
- 21. Flask + Jinja2 : 성능 측정 방법
- 22. FPS로 iOS에서 CoreGraphics 성능 측정
- 23. common-lisp 프로그램의 성능 측정
- 24. ASP.NET MVC 3의 성능 측정
- 25. MySQL에서 SQL 쿼리 성능 측정
- 26. C에서 네트워크 성능 측정 도구
- 27. 정확한 환경에서의 성능 측정 테스트
- 28. OpenCL - 대형 문자열 및 메모리 성능?
- 29. Silverlight/Moonlight 응용 프로그램의 성능 측정
- 30. 사용자 정의 dojo 위젯 성능 측정
그래서, 계산 차원의 그래프를 작업 차원의 함수로 나타내야한다고 생각합니까? –
아마 네, 그렇게 생각합니다 (그러나 나는 완전히 확신하지 못합니다). –