Могу ли я скомпилировать код OpenCL в обычные двоичные файлы без OpenCL? - PullRequest
1 голос
/ 09 января 2012

Я оцениваю OpenCL для своих целей.Мне пришло в голову, что вы не можете предполагать, что он работает "из коробки" на Windows или Mac, потому что:

  • Windows требуется драйвер OpenCL (который, конечно, можно установить)
  • MacOS поддерживает OpenCL только в MacOS> = 10,6

Поэтому мне придется кодировать код FPU / SSE / AVX и OpenCL отдельно, чтобы получить два двоичных файла: один без и один сПоддержка OpenCL.

Было бы намного лучше, если бы я мог скомпилировать OpenCL в время компиляции в SSE / AVX и затем отправить двоичный файл без OpenCL.Таким образом, мне не понадобится отдельная реализация для FPU / SSE / AVX!

Есть ли способ сделать это?

Приветствия, - clemens

1 Ответ

2 голосов
/ 09 января 2012

Один из способов добиться этого - установить Intel OpenCL SDK на свой компьютер для разработки и использовать встроенный инструмент OpenCL Offline Compiler, чтобы сгенерировать ассемблерный код для вашего ядра OpenCL и напрямую скомпилировать / связать этот ассемблерный код с вашим приложением.Однако может потребоваться определенная работа, чтобы выяснить правильные соглашения о вызовах и т. Д., Чтобы вручную вызывать сгенерированный код сборки, и тогда вы сами несете ответственность за разбиение своей работы на несколько потоков.

Поэтому, хотя это не то, о чем вы просили, по крайней мере в Windows, вероятно, было бы проще отправить ваше приложение с intelocl.dll и его зависимостями (если лицензия позволяет это; я не проверял), динамически загружать точки входа функции OpenCLоттуда скомпилируйте ваше ядро ​​OpenCL в Assembly на лету и выполните его, используя среду выполнения OpenCL.

...