在不使用任何库(如 cuda 或 opencl)的情况下对 gpu 进行编程?

programming a gpu without using any library like cuda or opencl?

我想知道有没有一种方法可以在不使用任何库或 API 的情况下使用 GPU 进行计算(例如两个矩阵的乘法)。我只想用 C 编写一个程序,我不想使用 CUDA 或 OpenCL 或类似的东西。

无法将C 直接编译为gpu。但是,您可以编写自己的着色器并使用它来进行计算。看看 HLSL 和 GLSL。

真正简短的回答是,不,你不能那样做。我熟悉的所有标准 "C or C++ like" GPU 编程模型都要求您使用 API(计算 APIs,如 OpenCL 或 OpenCL,或图形 APIs,如 OpenGL 和Direct3D) 来管理设备并在目标 GPU 上并行加载和执行着色器或计算内核。

关于取消使用底层硬件的需要的最接近(可能唯一)的东西 APIs 是 GPU 的编译辅助并行性,例如 OpenACC。在那里,您可以使用预处理器指令来修饰 C、C++ 或 Fortran 代码,并依靠编译器为设备生成并行代码。底层计算或图形 API 和驱动程序仍然存在并仍在使用,但您看不到它们。