Разобрать ядро ​​OpenCL? - PullRequest
11 голосов
/ 14 июля 2011

Я не уверен, если это возможно. Я хочу углубленно изучить OpenCL, поэтому мне было интересно, есть ли инструмент для разборки скомпилированного ядра OpenCL.

Для обычного исполняемого файла x86 я могу использовать objdump, чтобы получить представление о разборке. Есть ли подобный инструмент для ядра OpenCL?

Ответы [ 4 ]

6 голосов
/ 14 июля 2011

Вы можете выполнить следующие действия для дизассемблирования ядра OpenCL:

  1. Используйте clGetEventProfilingInfo, чтобы выгрузить код ptx в файл, скажем ptxfile.ptx.Пожалуйста, обратитесь к спецификации OpenCL для получения более подробной информации об этой функции.

  2. Используйте nvcc для компиляции файла ptx в cubin, например: "nvcc -cubin -arch = sm_20 ptxfile.ptx"скомпилирует ptxfile.ptx на устройство с вычислительными возможностями 2.0.

  3. Используйте cuobjdump, чтобы разобрать файл кубина в инструкции GPU.Например: "cuobjdump -sass ptxfile.cubin"

Надеюсь, это поможет.

4 голосов
/ 22 марта 2012

Я знаю, что это старый вопрос, но в случае, если кто-то придет сюда разобрать ядро ​​AMD GPU, вы можете сделать следующее в linux:

export GPU_DUMP_DEVICE_KERNEL=3

Это делает любое скомпилированное ядрона вашей машине сбросьте собранный код в файл в том же каталоге.

Источник: http://dis.unal.edu.co/~gjhernandezp/TOS/GPU/ATI_Stream_SDK_OpenCL_Programming_Guide.pdf

Разделы 4.2.1 и 4.2.2

0 голосов
/ 03 июля 2018

Поскольку AMD CodeXLAnalyzer больше не поддерживается, используйте Radeon GPU Analyzer

0 голосов
/ 09 ноября 2015

Если вы работаете с AMD GPU, вы можете использовать инструмент Analyzer. Он бесплатный, кроссплатформенный и поставляется в двух формах:

  1. Инструмент командной строки (поставляется как часть пакета CodeXL, поиск исполняемого файла CodeXLAnalyzer после установки).
  2. Приложение CodeXL GUI (просто переключитесь в режим анализатора в CodeXL).

Вот краткое описание того, что вы можете сделать с помощью анализатора:

  1. Скомпилируйте ядра OpenCL, шейдеры OpenGL и шейдеры D3D для любого графического процессора, поддерживаемого установленным драйвером (даже без физической установки графического процессора в вашей системе), и получите ISA. Используя CodeXL Analyzer (опция № 2 выше), вы можете получить дополнительную информацию, такую ​​как оценка количества тактов, необходимых для выполнения инструкции.
  2. Просмотр сгенерированной компилятором статистики (использование SGPR, использование VGPR и т. Д.)
  3. Создание кода AMD IL для ядра OpenCL.
  4. Экспорт скомпилированных двоичных файлов (ELF, в двоичном формате).

Вы можете скачать набор инструментов CodeXL здесь: https://gpuopen.com/compute-product/codexl/

...