我可以在主机代码上使用cuda而不使用nvcc吗?

我可以在主机代码上使用cuda而不使用nvcc吗?,cuda,gpgpu,Cuda,Gpgpu,我正在编写一个执行cuda内核的单头库。我想知道是否有办法绕过语法,或者从nvcc获得C源代码输出?您可以通过使用CUDA来避免主机语言扩展。它有点冗长,您将需要更多的样板代码来管理上下文,但这并不太困难 按照惯例,您可以编译成PTX或二进制负载以在运行时加载,但是NVIDIA现在还提供了一个实验性的JIT CUDA C编译器库,如果您想从源代码获得JIT,可以尝试使用该库。您可以通过使用CUDA来避免主机语言扩展。它有点冗长,您将需要更多的样板代码来管理上下文,但这并不太困难 按照惯例,您可以

我正在编写一个执行cuda内核的单头库。我想知道是否有办法绕过语法,或者从nvcc获得C源代码输出?

您可以通过使用CUDA来避免主机语言扩展。它有点冗长,您将需要更多的样板代码来管理上下文,但这并不太困难


按照惯例,您可以编译成PTX或二进制负载以在运行时加载,但是NVIDIA现在还提供了一个实验性的JIT CUDA C编译器库,如果您想从源代码获得JIT,可以尝试使用该库。

您可以通过使用CUDA来避免主机语言扩展。它有点冗长,您将需要更多的样板代码来管理上下文,但这并不太困难


按照惯例,您可以编译成PTX或二进制负载,以便在运行时加载,但是NVIDIA现在还提供了一个实验性的JIT CUDA C编译器库,如果您希望从源代码处获得JIT,可以尝试使用该库。

您可以通过将内核编译成CUBIN或PTX文件,并使用驱动程序API加载和执行该文件,从而避免调用nvcc,最终将运行时API的语法调用替换为对的调用。如果这是足够的,我会详细阐述一下,并将其转换为答案。一句话的答案是使用CUDA驱动程序API。谢谢,这就是我要找的!通过将内核编译成CUBIN或PTX文件,并使用驱动程序API加载和执行该文件,最终将运行时API的语法调用替换为对的调用,可以避免调用nvcc。如果这是足够的,我会详细阐述一下,并将其转换为答案。一句话的答案是使用CUDA驱动程序API。谢谢,这就是我要找的!如果仍然希望依赖运行时API,那么:在主机代码中使用内核、手动包含正确的运行时标头、使用nvcc链接设备和主机代码是不够的?@pszilard:No。运行时API依赖大量nvcc生成的样板文件和几个未记录的API调用来实现延迟上下文初始化。如果您不使用nvcc进行编译,那么您将无法获得这一点,也不会有任何效果。除非您使用驱动程序API并自己显式管理上下文和模块。如果您仍然希望依赖运行时API,则不足以:在主机代码中使用内核,请手动包含正确的运行时标头,使用nvcc链接设备和主机代码?@pszilard:否。运行时API依赖于大量nvcc生成的样板文件和几个未记录的API调用来实现延迟上下文初始化。如果您不使用nvcc进行编译,那么您将无法获得这一点,也不会有任何效果。除非您使用驱动程序API并自己显式管理上下文和模块。