Попробуйте передать NULL
в качестве первого параметра clCreateContext
. Идентификатор устройства уже передается, поэтому первый параметр, вероятно, не требуется и может вызвать эти дополнительные вызовы clGetPlatformInfo
.
Еще одна вещь, которую нужно попробовать, - это связать с библиотекой OpenCL, отличной от Nvidia. Необязательно использовать библиотеку OpenCL от производителя графического процессора, любая из них должна работать, если используемые вами функции реализованы в этой другой библиотеке OpenCL. С Nvidia риска нет, потому что на сегодняшний день последней поддерживаемой версией является OpenCL 1.2, которую уже поддерживают большинство, если не все производители. Таким образом, вы можете попробовать OpenCL lib от других поставщиков SDK, таких как Intel или AMD. Если вы используете Ubuntu, вы можете использовать ocl-icd-opencl-dev
.
====== ОБНОВЛЕНИЕ =========
Попробуйте указать платформу при создании контекста:
const cl_context_properties properties[] = { CL_CONTEXT_PLATFORM, (cl_context_properties) platformId, 0};
cl_context context = clCreateContext (
properties, // <-- here
1,
&deviceId,
nullptr,
nullptr,
nullptr);
Может случиться так, что когда платформа не указана при создании контекста, тогда она будет запрашиваться каждый раз, когда это необходимо, но когда указано выше, это не будет.