2

这是一个有点愚蠢的问题,但我想知道 CUDA 是使用解释器还是编译器?我想知道,因为我不太确定 CUDA 如何设法让源代码在具有不同计算能力的两张卡上运行。

4

3 回答 3

2

来自维基百科

程序员使用“C for CUDA”(带有 Nvidia 扩展和某些限制的 C),通过 PathScale Open64 C 编译器编译。

所以,你的答案是:它使用编译器。

并谈到它可以在多张卡上运行的原因(来源):

CUDA C/C++ 提供了一种抽象,它是您表达您希望程序如何执行的一种方式。编译器生成的 PTX 代码也不是硬件特定的。在运行时,为特定的目标 GPU 编译 PTX - 这是每次发布新 GPU 时都会更新的驱动程序的责任。

于 2012-05-16T04:46:15.267 回答
0

这些官方文档CUDA C Programming GuideThe CUDA Compiler Driver (NVCC)解释了编译过程的所有细节。

从第二个文件:

nvcc 模仿 GNU 编译器 gcc 的行为:它接受一系列常规编译器选项,例如用于定义宏和包含/库路径,以及用于指导编译过程。

于 2012-05-16T04:47:29.730 回答
0

不仅限于 cuda ,directx 或 opengl 中的着色器也符合某种字节码,并由底层驱动程序转换为本机代码。

于 2012-06-02T18:06:12.603 回答