#windows #cmake #opencl #gpgpu #spir-v
#Windows #cmake #opencl #gpgpu #spir-v
Вопрос:
Я нашел руководство по автономной компиляции ядер OpenCL в SPIR-V с использованием инструментов с открытым исходным кодом для clang
, но я не могу найти официальный способ сделать это с помощью других компиляторов.
Есть ли способ переноса ядра OpenCL в SPIR-V с помощью CMake? Если нет, существует ли другой универсальный способ создания одного и того же проекта, содержащего OpenCL, кроме написания пользовательских сценариев и вызова clang
в разных операционных системах (меня особенно интересуют Linux и Windows)?
Я видел, что SPIR-V предназначен для использования OpenCL 2.0 , но видеокарты NVidia поддерживают только OpenCL 1.2-. Будут ли приложения, содержащие модули SPIR-V, работать на видеокартах NVidia?
Комментарии:
1. clang доступен для нескольких операционных систем. Не должно быть ничего, что мешало бы вам скомпилировать SPIR-V на одной платформе и использовать этот SPIR-V затем во всех реализациях OpenCL, поддерживающих SPIR-V.
Ответ №1:
но я не могу найти официальный способ сделать это с помощью других компиляторов.
Потому что официального способа нет. Большинство реализаций даже не позволяют запускать их компилятор в автономном / автономном режиме. Существует Clang, и у IIRC Intel был автономный компилятор OpenCL; я не знаю ни о каких других.
существует ли другой универсальный способ создания одного и того же проекта, содержащего OpenCL, кроме написания пользовательских сценариев и вызова clang в разных операционных системах
Зависит от того, что вы подразумеваете под «сборкой». Единственный способ, который работает почти везде, — это распространять исходные тексты OpenCL вместе с вашей программой и вызывать clBuildProgram() во время выполнения. Если это вам не подходит, тогда у вас есть два варианта: 1) запутать исходные файлы CL, 2) распространять двоичные файлы. Для 2) не существует официального двоичного формата, который работает везде. SPIR-V подходит близко, но его поддержка обязательна только начиная с OpenCL 2.1.
Будут ли приложения, содержащие модули SPIR-V, работать на видеокартах NVidia?
Нет. Вы можете получить двоичные файлы, специфичные для Nvidia, используя «официальный способ», вызвав clGetProgramInfo() после clBuildProgram() .