嘻嘻miumiu
OpenCL是GPU通用运算API。是显卡作通用浮点运算的API。比如视频转码,原来这个工作都是CPU来做的。现在显卡运算能力比较强,这个工作完全可以交给显卡来做。
要调用显卡,这个工作不需要再由程序员考虑了,因为已经有一个现成的接口了,程序员只要管好转码的算法,然后直接调用OpenCL中现成的指令,这个工作就自动由CPU转交到GPU了。
OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器形成。OpenCL由一门用于编写kernels (在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。OpenCL提供了基于任务分割和数据分割的并行计算机制。
OpenCL类似于另外两个开放的工业标准OpenGL和OpenAL,这两个标准分别用于三维图形和计算机音频方面。OpenCL扩展了GPU用于图形生成之外的能力。OpenCL由非盈利性技术组织Khronos Group掌管。
扩展资料
API之主要目的是提供应用程序与开发人员以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。API是一种接口,故而是一种抽象。
应用程序接口(英语:Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。由于近年来软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。[1]
参考资料来源 OpenCL_百度百科
海上花的故事
是在用OpenAL(Open Audio Library)库下的编程吧?al.h的al应该是和OpenAL的AL一样的含义,意思是这个头文件对OpenAL提供一般性支持。alc应该是Audio Library Context的缩写。
往昔岁月
在学习C的同时,要看计算机原理是需要的,数据结构需要看,编程中经常用到,基本算法看看就可以啦,等C掌握成熟啦,有拉很多的实践后,可以继续深入离散数学,有兴趣可以看看吧,总之外围的数还是要多看看
四叶细辛
做异构计算的。你可以把异构理解为对设备进行抽象。就像我们编程会对类和方法进行封装抽象一样。这个东西可以对设备进行抽象,就是说不管你是gpu啦,cpu啦,还是说你接入了一些fpga、dsp这样的设备;他都可以通过标准化配置,把他们视为一个组(group),然后给其中一个设备分配控制权(通常是cpu来担任此角色),协同一起进行计算。也就是说,你用不在意“cpu应该怎么做”、也不用关心“gpu又该怎么做”,更不用在意“如果我想让cpu和gpu‘交火’,他们应该如何协调”。OpenCL帮你搞定这些细节。更通俗点讲,就是它为你提供方法组件你的“智囊团”,但你不用过于关心里面成员各自的特性。题外话:这东西我记得最早可以说是从OpenGL延伸来的,那个时候CPU的算力有限,一些先驱探索者们,尝试用一些小把戏,通过OpenGL的接口,达到“让它帮我计算,但却不需要渲染图形”的目的。久而久之,这样的需求促使了这个标准的诞生和发展。(不知道有没有记错。。。)所以现在你看到了,我们不仅可以“让GPU帮我计算,但不用渲染”,还可以“让各种不同特性不同风格的设备联合在一起帮我计算”,而你不用关心他们内部如何协作。——如果要让你亲自来协调多种设备高效协作计算,那对开发者而言门槛无疑是很高的;因为光是在一个CPU以外的设备上好好执行计算已经颇有难度了,更别提还有一些开发者可能在CPU上用多线程都会出各种问题。
优质英语培训问答知识库