言简意赅地讲一下什么是OpenCL【转】

xiaoxiao2021-02-28  24

    OpenCL和OpenGL是两个不同的API。OpenGL是3D API。OpenCL是GPU通用运算API。要理解什么是OpenCL,首先要明确一下什么叫API(应用程序接口)。API是已经开发好的一些函数。举个简单的例子。比如编写一个程序,其中有一个步骤要将运算的内容输出到打印机上。那么为了这个步骤,得写一大堆程序,包括如何调用打印机的驱动,为硬件分配I/O地址等等。相当繁锁。OK,现在这个程序写好了,要开发第二个程序了。结果发现,第二个程序中,也有一个步骤是要把内容打印出来的。那么就没必要再把程序重新写一遍了,直接把第一个程序中这个函数复制过来就好了。久而久之,大家干脆把一些常用的函数给独立出来,就是API。这样,所有软件,无论是WORD、WPS、PHOTOSHOP还是其他软件,都不需要费事单独去写这段代码了,直接从API里调用就好。这样一来,不仅开发过程简化了,程序本身也更精练了。那么OpenGL或DirectX是什么呢?是负责3D图形处理的API,包括各种光照、纹理、烟雾、阴影等效果。程序员在开发游戏的时候,只要考虑什么时候、在哪个位置,加上什么样的烟雾,就可以了。而不必考虑究竟要怎样去编写代码,才能实现烟雾效果的问题。OpenCL呢?是显卡作通用浮点运算的API。比如视频转码,原来这个工作都是CPU来做的。现在显卡运算能力比较强,这个工作完全可以交给显卡来做。那究竟怎样调用显卡呢?这个工作不需要再由程序员考虑了,因为已经有一个现成的接口了,程序员只要管好转码的算法,然后直接调用OpenCL中现成的指令,这个工作就自动由CPU转交到GPU了。说得有点复杂,也不是很严谨,但大概意思就是这样的。

转载请注明原文地址: https://www.6miu.com/read-2150127.html

最新回复(0)