dat*_*olf 10
我认为您需要直接了解CPU和GPU之间的工作分离.如果您编写代码并使用不针对GPU执行的常规编译器进行编译,则代码将始终执行CPU.
在主程序中对OpenGL或DirectX函数的所有调用都在CPU上执行,没有"神奇"的转换层.然而,一些调用让GPU做了一些事情,比如绘制三角形.
CUDA和OpenCL是针对数据并行执行体系结构的语言.GPU就是这样一种架构.但是CUDA和OpenCL代码需要一些主机程序,而后者又会在CPU上执行.可编程着色器(HLSL,GLSL)也是如此.
所以:程序的主机部分(设置工作环境,发出渲染调用或GPU执行)将在CPU上运行.GPU上运行的代码在单独的编译单元中编译(即上传到OpenGL的GLSL着色器代码,使用OpenCL/CUDA编译器编译的OpenCL/CUDA代码).