我有一个问题(CUDA)我可以在没有 nvcc 编译器的情况下在 C 上执行内核函数吗?我被问到这个问题,他们告诉我,如果你用 C 直接从 CUDA 驱动程序 API 调用 Call 就可以完成,只是难度更大。
但我也想得到其他人的反馈。
目前,使用 nvidia 提供的打包工具链,如果您用 C 语言编写 CUDA 代码,则在某些时候将需要设备编译器 (nvcc) 至少将此 C 源代码转换为有效的 PTX。 在那之后,工具包(包括 nvcc)就不是绝对必要的了。 PTX 代码可以由驱动程序(与工具包分离)进行 JIT 编译,生成适用于所使用的任何 GPU 的可执行代码。 并且启动适当编写的内核(可能是从 PTX 进行 JIT 编译)的过程可以仅使用调用驱动程序 API 来完成。
创建运行时 API,部分原因是它可以简化流程,并使整体代码创建过程看起来与典型的 C/C++ 程序员习惯的过程类似。