Я пытаюсь оптимизировать свои ядра OpenCL, и все, что у меня есть сейчас, это NVidia Visual Profiler, который кажется довольно ограниченным. Я хотел бы увидеть построчный профиль ядер, чтобы лучше понять проблемы с объединением и т. д. Есть ли способ получить более подробные данные профилирования, чем те, которые предоставляет Visual Profiler?
Профилирование ядер OpenCL
Ответы (4)
Я думаю, что AMD CodeXL — это то, что вам нужно. Это бесплатный набор инструментов, который содержит отладчик OpenCL и профилировщик графического процессора. Отладчик OpenCL позволяет выполнять построчную отладку ядер OpenCL и хост-кода, просматривать все переменные в разных рабочих группах, просматривать возникающие особые события и ошибки и т. д. отображение того, сколько времени ваша программа тратит на такие задачи, как передача данных и выполнение ядра.
Для получения дополнительной информации и ссылок для загрузки посетите http://developer.amd.com/tools-and-sdks/heterogeneous-computing/codexl/
Нет, такого инструмента нет, но вы можете профилировать изменения кода. Попробуйте измерить скорость своего кода, измените что-нибудь и измерьте еще раз. clEnqueueNDRangeKernel имеет аргумент Event, который впоследствии можно использовать с clGetEventProfilingInfo, таймер очень точен, точность измеряется порядка микросекунд. Это единственный способ измерить производительность отдельной части кода...
Я не проверял это, но я только что нашел эту программу http://www.gremedy.com/gDEBuggerCL.php а>. Описание: «Этот новый продукт привносит расширенные возможности gDEBugger по отладке, профилированию и анализу памяти в мир разработчиков OpenCL...»
LTPV — это профилировщик OpenCL с открытым исходным кодом, который может соответствовать вашим требованиям. Пока он работает только под Linux.
(раскрытие: я разработчик этого инструмента)