Компилятор времени выполнения OpenCL2.0 не поддерживает c ++ 11 - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь собрать ядро ​​OpenCL, используя OpenCL2.0.Я вызываю функцию сборки cl :: Program и передаю флаг -cl-std = CL2.0.Компилятор g ++ завершает работу и создает ссылки без ошибок.Однако, когда я запускаю программу, функция сборки выдает исключение (см. Ниже).Хотел посмотреть, видел ли кто-нибудь это раньше и есть ли решение.Спасибо.

Я пробовал другие флаги, такие как -cl-std = c ++ 11, -cl-std = CL2.2, но ни один из них не работал.

[20:03:47.768768][info][Demosaic] CL_FLAGS = -cl-std=CL2.0 -D IMAGE_MAD_INDEXING -D AMD_GPU_ARCH -D DEVICE_WAVEFRONT_SIZE=64 -D WG_SIZE_MAX=256
terminate called after throwing an instance of 'cl::BuildError'
[20:03:47.788335][error][Demosaic] Build failed: In file included from /tmp/OCL21460T1.cl:244:
/usr/include/CL/cl2.hpp:495:2: error: Visual studio 2013 or another C++11-supporting compiler required
#error Visual studio 2013 or another C++11-supporting compiler required

1 Ответ

1 голос
/ 30 мая 2019

Не является ли cl2.hpp файлом, который должен быть #include d в коде хоста , а не в коде ядра OpenCL?

Я предполагаю, что он проверяет значение __cplusplus, которое,если я правильно читаю соответствующий раздел спецификации OpenCL C ++ , он не определен в диалекте C ++, используемом для ядер OpenCL.

...