
英伟达
GPU既能用于渲染,也可用于计算。OpenCL是GPU的计算应用程序接口(API),OpenGL则是GPU的渲染API。虽然高版本的OpenGL设有compute shader专门用于计算,但它本质上还是以渲染为主。OpenGL诞生的时间很早,它是一种将数学表达式转换为图像的框架。当时工业界主要使用DirectX,而学术界以OpenGL为主,并且这时的OpenGL仅支持命令模式操作。之后,人们考虑能否将网格顶点处理和片元处理的编程能力开放给用户,于是可编程管道应运而生,用户能够编写程序来处理顶点和片元了。再后来,人们又思考是否可以利用GPU的并行性进行计算。于是,大家把数据组织成纹理图,一个片元对应一个像素,借助片元处理程序来驱动GPU进行计算。随后,人们发觉把计算问题转换为渲染问题过于复杂,于是出现了能够直接驱动GPU进行计算的API。CUDA率先达成了这一目标,但CUDA只能在
英伟达(NV)的显卡上使用,因此众多
公司联合起来推出了开放标准OpenCL。再往后,
苹果想要推广自己的
Metal,
谷歌要推行Vulkan,OpenCL和OpenGL就被逐渐弃用了。