Cuda 安装JIT编译的代码的最佳实践是什么?

Cuda 安装JIT编译的代码的最佳实践是什么?,cuda,installation,cmake,opencl,jit,Cuda,Installation,Cmake,Opencl,Jit,在设计Unix风格的命令行应用程序的安装时,如果有将被实时(JIT)编译的代码,那么在安装树中应该安装源(和头)的位置是否有标准或最佳做法?${root}/share/${appname}/src合理吗 特定的上下文是一个配置了CMake的混合C/C++应用程序,它最多使用一种CUDA或OpenCL支持(可能使用JIT)进行构建,但我认为这一切都与答案无关 显然,不能依赖源代码树或构建树中的源文件副本,因为它们在运行时不一定存在(或可查找)。对于OpenCL内核代码,请修改构建系统以将代码作为字

在设计Unix风格的命令行应用程序的安装时,如果有将被实时(JIT)编译的代码,那么在安装树中应该安装源(和头)的位置是否有标准或最佳做法?
${root}/share/${appname}/src
合理吗

特定的上下文是一个配置了CMake的混合C/C++应用程序,它最多使用一种CUDA或OpenCL支持(可能使用JIT)进行构建,但我认为这一切都与答案无关


显然,不能依赖源代码树或构建树中的源文件副本,因为它们在运行时不一定存在(或可查找)。

对于OpenCL内核代码,请修改构建系统以将代码作为字符串嵌入头文件中。直接使用字符串传递到OpenCL运行时。没有必要也没有理由将OpenCL内核保存在单独的文件中。您可以使用预处理器将.cl文件转换为头文件,或者最好只编写一个快速python脚本即可


我认为类似的方法也适用于其他系统。可能会有一个标准位置或环境变量(Java中的c.f.CLASSPATH),或者您希望将它们直接嵌入到已安装的二进制文件中。

对于OpenCL内核代码,请修改生成系统,将代码作为字符串嵌入到头文件中。直接使用字符串传递到OpenCL运行时。没有必要也没有理由将OpenCL内核保存在单独的文件中。您可以使用预处理器将.cl文件转换为头文件,或者最好只编写一个快速python脚本即可


我认为类似的方法也适用于其他系统。可能会有一个标准位置或环境变量(Java中的c.f.CLASSPATH),或者您希望将它们直接嵌入到已安装的二进制文件中。

对于OpenCL内核代码,请修改生成系统,将代码作为字符串嵌入到头文件中。直接使用字符串传递到OpenCL运行时。没有必要也没有理由将OpenCL内核保存在单独的文件中。您可以使用预处理器将.cl文件转换为头文件,或者最好只编写一个快速python脚本即可


我认为类似的方法也适用于其他系统。可能会有一个标准位置或环境变量(Java中的c.f.CLASSPATH),或者您希望将它们直接嵌入到已安装的二进制文件中。

对于OpenCL内核代码,请修改生成系统,将代码作为字符串嵌入到头文件中。直接使用字符串传递到OpenCL运行时。没有必要也没有理由将OpenCL内核保存在单独的文件中。您可以使用预处理器将.cl文件转换为头文件,或者最好只编写一个快速python脚本即可


我认为类似的方法也适用于其他系统。可能会有一个标准的位置或环境变量(Java中的c.f.CLASSPATH),或者您希望将它们直接嵌入到已安装的二进制文件中。

使用构建系统将代码嵌入到库或可执行文件中确实是个好主意。在我看来,将它们预处理为嵌入编译源代码并随后传递给JIT编译器的字符串似乎比将它们预处理为已安装的(?)头更好。我的意思是将它们预处理为包含在源代码中的头,只是为了更干净的代码。所以blah.cl变成const char*blah=“…”;在Fo.h中,C或C++源包括Fo.h。这样,您就可以生成一个新文件并将其包含在预处理器中,而不是试图更新一个预先存在的文件。使用构建系统将代码嵌入库或可执行文件似乎确实是一个好主意。在我看来,将它们预处理为嵌入编译源代码并随后传递给JIT编译器的字符串似乎比将它们预处理为已安装的(?)头更好。我的意思是将它们预处理为包含在源代码中的头,只是为了更干净的代码。所以blah.cl变成const char*blah=“…”;在Fo.h中,C或C++源包括Fo.h。这样,您就可以生成一个新文件并将其包含在预处理器中,而不是试图更新一个预先存在的文件。使用构建系统将代码嵌入库或可执行文件似乎确实是一个好主意。在我看来,将它们预处理为嵌入编译源代码并随后传递给JIT编译器的字符串似乎比将它们预处理为已安装的(?)头更好。我的意思是将它们预处理为包含在源代码中的头,只是为了更干净的代码。所以blah.cl变成const char*blah=“…”;在Fo.h中,C或C++源包括Fo.h。这样,您就可以生成一个新文件并将其包含在预处理器中,而不是试图更新一个预先存在的文件。使用构建系统将代码嵌入库或可执行文件似乎确实是一个好主意。在我看来,将它们预处理为嵌入编译源代码并随后传递给JIT编译器的字符串似乎比将它们预处理为已安装的(?)头更好。我的意思是将它们预处理为包含在源代码中的头,只是为了更干净的代码。所以blah.cl变成const char*blah=“…”;在Fo.h中,C或C++源包括Fo.h。这样,您就可以生成一个新文件并将其包含在预处理器中,而不是试图更新一个先前存在的文件。