Estoy tratando de optimizar mis kernels OpenCL y todo lo que tengo ahora es NVidia Visual Profiler, que parece bastante restringido. Me gustaría ver el perfil línea por línea de los núcleos para comprender mejor los problemas con la fusión, etc. ¿Hay alguna forma de obtener datos de creación de perfiles más completos que el proporcionado por Visual Profiler?Perfilando kernels OpenCL
Respuesta
No, no existe tal herramienta, pero puede crear un perfil de los cambios en su código. Intenta medir la velocidad de tu código, cambia algo y luego mídelo una vez más. clEnqueueNDRangeKernel tiene un argumento de Evento que se puede usar con clGetEventProfilingInfo después, el temporizador es muy nítido, la precisión se mide en orden de microsegundos. Esta es la única forma de medir el rendimiento de un código separado ...
No lo he probado, pero acabo de encontrar este programa http://www.gremedy.com/gDEBuggerCL.php. La descripción es: "Este nuevo producto aporta las capacidades avanzadas de depuración, análisis de perfil y memoria de gDEBugger al mundo del desarrollador OpenCL ..."
LTPV is an open-source, OpenCL profiler que pueden ajustarse a sus requisitos. Por ahora, solo funciona bajo Linux.
(divulgación: Yo soy el programador de esta herramienta)
creo que AMD CodeXL es lo que busca. Es un conjunto gratuito de herramientas que contiene un depurador OpenCL y un generador de perfiles GPU. El depurador OpenCL le permite realizar la depuración línea por línea de sus kernels y código de host OpenCL, ver todas las variables en diferentes grupos de trabajo, ver eventos especiales y errores que ocurren, etc. El generador de perfiles GPU tiene una buena característica que genera una línea de tiempo que muestra cuánto tiempo su programa pasa en tareas como la transferencia de datos y la ejecución del kernel.
para obtener más información y enlaces de descarga, echa un vistazo a http://developer.amd.com/tools-and-sdks/heterogeneous-computing/codexl/
- 1. Cómo estructurar kernels OpenCL grandes?
- 2. ¿Qué debería reemplazar a "memcpy" dentro de los kernels OpenCL?
- 3. Perfilando Django
- 4. ¿La forma correcta de informar los kernels OpenCL de muchos objetos de memoria?
- 5. Perfilando generadores Python
- 6. Perfilando extensiones python C
- 7. Perfilando una función mex
- 8. Perfilando Node.js usando DTrace
- 9. Perfilando C++ con Xcode
- 10. ¿Cómo puedo depurar un kernel OpenCL en Xcode 4.1?
- 11. Compartiendo la GPU entre programas compatibles con OpenCL
- 12. Perfilando la aplicación g ++ en MacOSX?
- 13. ¿Cómo configurar kernels remotos paralelos en Mathematica?
- 14. Perfilando de forma remota una JVM
- 15. Perfilando una aplicación ruby / ruby on rails
- 16. Kernels precalculados con LibSVM en Python
- 17. ¿Cómo uso la memoria local en OpenCL?
- 18. Llamar al kernel OpenCL desde otro kernel OpenCL
- 19. OpenCL FFT en hardware Nvidia y AMD?
- 20. OpenCL para Python
- 21. OpenCL Performance Optimization
- 22. Memoria en OpenCL
- 23. Distribución de OpenCL
- 24. Exclusividad del dispositivo OpenCL
- 25. Barreras en OpenCL
- 26. ¿Cómo obtener OpenCL SDK?
- 27. Histograma de imagen OpenCL
- 28. ¿Opencl admite variables booleanas?
- 29. biblioteca de matriz opencl
- 30. Depurador para OpenCL
OpenXL - GPUOPEN sólo funciona para los procesadores de AMD, la cual es una limitación importante para muchos usuarios – TripleS
pienso que usted está mezclando dos términos diferentes: CodeXL es un conjunto de herramientas por AMD, y es uno de los productos de fuente abierta como parte de la iniciativa GPUOpen de AMD. Creo que el propósito de esta iniciativa fue permitir que los desarrolladores y otros actores de la industria amplíen estas herramientas, de modo que admitan plataformas adicionales. – AmitB