Я хочу скомпилировать ядро OpenCL для определенного графического процессора AMD, которого нет на моей машине, чтобы позже я мог просто загрузить и запустить его, когда этот графический процессор присутствует.
Я прочитал этот вопрос здесь, на SO:
Автономная компиляция для ядер AMD и NVIDIA OpenCL без установленных карт
И ответ, предлагающий создать контекст OpenCL с CL_CONTEXT_OFFLINE_DEVICES_AMD
. Хорошо, я могу это сделать. Но что тогда? В Руководстве пользователя по программированию OpenCL от AMD говорится:
A.8.6
cl_amd_offline_devices
Чтобы генерировать двоичные образы в автономном режиме, необходимо получить доступ к компилятору для каждого устройства, которое поддерживает среда выполнения, даже если устройство в настоящее время не установлено в системе. Когда во время создания контекстаCL_CONTEXT_OFFLINE_DEVICES_AMD
передается в свойствах контекста, сообщается обо всех поддерживаемых устройствах, будь то онлайн или офлайн, и их можно использовать для создания двоичных образов OpenCL.
хорошо, а как именно? Я предполагаю, что мне нужно позвонить clCompileProgram()
или clBuildProgram()
, верно? Как мне установить для него список устройств, которые мне нравятся?