Я хочу скомпилировать ядро OpenCL для определенного AMD GPU - который не доступен на моей машине - чтобы позже я мог просто загрузить и запустить его, когда этот GPU присутствует.
Я читал этот вопрос здесь на 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()
, верно? Как мне установить список устройств для него на устройство, которое мне нравится?