LLVM IR ядра OpenCL для PTX в двоичный файл - PullRequest
1 голос
/ 01 ноября 2019

Я использую clang для генерации IR LLVM для ядер Nvidia OpenCL и Cuda, которые я хочу впоследствии использовать, делая что-то подобное для OpenCL:

clang -c -x cl -S -emit-llvm -cl-std=CL2.0 kernel.cl -o kernel.ll

и что описано здесь для Cuda.

То, что я ищу, - это способ перейти от инструментированного IR к реальному двоичному файлу. Для случая Cuda я знаю, что могу использовать бэкэнд NVPTX для генерации компиляции PTX и JIT, как описано здесь (или, возможно, использовать ptxas?). Мне было интересно, возможно ли нечто подобное для случая OpenCL, и если да, то, возможно, минимальный пример. Заранее спасибо.

1 Ответ

2 голосов
/ 02 ноября 2019

В принципе вы можете извлечь двоичные файлы для загруженных и скомпилированных ядер OpenCL, используя clGetProgramInfo() с CL_PROGRAM_BINARY_SIZES и CL_PROGRAM_BINARIES.

Насколько я знаю, этобудет производить двоичные файлы в полностью определенном реализацией формате. Так что, если вам не повезет, вы все равно получите ИК-код обратно. Однако, если повезет, он может содержать машинный код PTX на вашей платформе.

...