Я только что попробовал ваш пример с двумя Intel OpenCL SDK, но у вас не было точной версии под рукой. Оба работали без ошибок, поэтому: не может воспроизвести .
Этот кажется немного старше вашего (по номеру сборки):
CL_DEVICE_VERSION: OpenCL 1.2 (Build 43)
CL_DRIVER_VERSION: 1.2.0.43
CL_DEVICE_OPENCL_C_VERSION: OpenCL C 1.2
Второй, я думаю, все еще самый последний драйвер процессора Intel:
CL_DEVICE_VERSION: OpenCL 2.1 (Build 0)
CL_DRIVER_VERSION: 18.1.0.0920
CL_DEVICE_OPENCL_C_VERSION: OpenCL C 2.0
Я использовал GCC 7.4.0 в Ubuntu 18.4.
По моему опыту не проблема установить соответствие с Intel OpenCL Runtime для процессоров .
Я использовал его вместе с MPI на суперкомпьютерах, где у вас было бы несколько, например 4, процессы MPI для каждого вычислительного узла и затем для каждой среды выполнения process ' устанавливают маску ЦП для несвязанного подмножества доступных ядер. Среда выполнения Intel OpenCL (использующая встроенные блоки Intel Threading Building Blocks) внутри каждого процесса будет порождать по одному потоку на каждое назначенное ядро, то есть, как и ожидалось, придерживаться маски ЦП хост-процесса. Возможно, результат будет другим, если вы зададите сходство с первым потоком, а также зависит от того, где в заданной программе (относительно того, где среда выполнения OpenCL порождает его потоки).
Как вы, кажется, уже запустили свой код в отладчике и сузили его до clcreatecontext
. Я бы посоветовал вам попробовать более новый драйвер OpenCL.