是否有离线OpenCL编译器(用于NVIDIA图形卡)?

是否有离线OpenCL编译器(用于NVIDIA图形卡)?,opencl,gpgpu,nvidia,Opencl,Gpgpu,Nvidia,运行OpenCL程序的正常方式是包含在运行时编译的OpenCL内核(在线编译) 但我以前见过将OpenCL编译成二进制的例子,称为离线编译。我知道缺点(降低了硬件之间的兼容性) 曾经有一个离线编译器在,但它似乎不再可用 那么OpenCL是否有离线编译器可用,特别是对于基于NVIDIA的卡?有人建议NVIDIA的CUDA SDK中的nvcc.exe可以使用 nvcc -x cu file.cl -o file.out -lOpenCL …但它说至少在Windows上缺少cl.exe。不过,这可能

运行OpenCL程序的正常方式是包含在运行时编译的OpenCL内核(在线编译)

但我以前见过将OpenCL编译成二进制的例子,称为离线编译。我知道缺点(降低了硬件之间的兼容性)

曾经有一个离线编译器在,但它似乎不再可用


那么OpenCL是否有离线编译器可用,特别是对于基于NVIDIA的卡?

有人建议NVIDIA的CUDA SDK中的nvcc.exe可以使用

nvcc -x cu file.cl -o file.out -lOpenCL
…但它说至少在Windows上缺少cl.exe。不过,这可能值得一看:

以及:

  • (AMD维护的离线编译器)
  • (还包括指向上述内容和更多内容的链接)

clGetProgramInfo和CL_PROGRAM_二进制文件和卡?那么,您的意思是您可以使用标准OpenCl函数编译成二进制文件,然后使用此二进制文件运行编译后的OpenCl程序?可能只有类似的平台。我同意huseyin tugrul buyukisik的观点,您可以在运行时通过OpenCl API来实现这一点。例如,应用程序第一次运行时,编译内核并生成二进制文件,将其保存在存储器中的某个位置。下次运行同一应用程序时,可以直接使用预编译的内核二进制文件。缺少cl.exe意味着它依赖于与Visual Studio捆绑在一起的Microsoft C/C++编译器。这是NVIDIA的CUDA SDK的先决条件吗?@CodyGray nvcc通常需要在后台使用C编译器(即,它对C部分使用C编译器,对CUDA或OpenCL部分使用自己的魔法)。一般来说,@Roalt:一种解决方法是编写一个小型的独立应用程序,它基本上是相应的
clCompileProgram
-(etc)调用的包装器,这样您就可以获得一个小型的命令行编译器,它接收一组CL输入文件,对它们进行编译并写入结果(然后通过
CL\u程序\u二进制文件
获得)输入到输出文件中。。。