首页 >  资讯 >  详情

opencl不可用_opencl

2023-07-02 05:01:07来源:互联网

1、OpenCL是GPU通用运算API。

2、是显卡作通用浮点运算的API。

3、比如视频转码,原来这个工作都是CPU来做的。


(相关资料图)

4、现在显卡运算能力比较强,这个工作完全可以交给显卡来做。

5、要调用显卡,这个工作不需要再由程序员考虑了,因为已经有一个现成的接口了,程序员只要管好转码的算法,然后直接调用OpenCL中现成的指令,这个工作就自动由CPU转交到GPU了。

6、OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器形成。

7、OpenCL由一门用于编写kernels (在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。

8、OpenCL提供了基于任务分割和数据分割的并行计算机制。

9、OpenCL类似于另外两个开放的工业标准OpenGL和OpenAL,这两个标准分别用于三维图形和计算机音频方面。

10、OpenCL扩展了GPU用于图形生成之外的能力。

11、OpenCL由非盈利性技术组织Khronos Group掌管。

12、扩展资料API之主要目的是提供应用程序与开发人员以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

13、提供API所定义的功能的软件称作此API的实现。

14、API是一种接口,故而是一种抽象。

15、应用程序接口(英语:Application ProgrammingInterface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。

16、由于近年来软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要。

17、程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。

18、良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。

19、[1]参考资料来源OpenCL_百度百科 全称Open Computing Language,开放运算语言,是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境。

20、用于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码。

21、广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。

22、你可以这样理解,把写程序当成做饭,你需要做蛋炒饭,OpenCL就相当于鸡蛋,炒饭。

23、你不必把母鸡养大,然后等它下蛋,你也不必去种地,等大米成熟。

24、无论你想做蛋炒饭,西红柿炒鸡蛋,直接拿来用就好了。

25、程序员在写程序时,会遇见写重复代码的情况,一段代码比较常见,需要经常用到它,那就把它单独拿出来,用的时候,直接放进去就好了,不用再重新写,大大减少了工作量。

26、扩展资料在这里汇总一些OpenCL的基本概念,包括设备、核函数、主机、平台等,把这些概念跟CUDA类比,理解起来就很容易了。

27、设备(Device): GPU及其显存组成的计算系统。

28、核函数(Kernel): 是在设备程序上执行运算的入口函数,在主机上调用。

29、SIMT(Single Instruction Multi Thread): 单指令多线程,GPU并行运算的主要方式,很多个多线程同时执行相同的运算指令,当然可能每个线程的数据有所不同,但执行的操作一致。

30、工作项(Work-item): 跟CUDA中的线程(Threads)是同一个概念,N多个工作项(线程)执行同样的核函数,每个Work-item都有一个唯一固定的ID号,一般通过这个ID号来区分需要处理的数据。

31、工作组(Work-group):跟CUDA中的线程块(Block)是同一个概念,N多个工作项组成一个工作组,Work-group内的这些Work-item之间可以通信和协作。

32、ND-Range: 跟CUDA中的网格是同一个概念,定义了Work-group的组织形式。

33、主机(Host): CPU及其内存组成的计算系统。

34、品台(Platform): 主机和OpenCL管理框架下的若干个设备构成了一个品台,所有GPU操作都限定这这个选择的Platform上运行。

35、OpenCL编程的第一步就是选择并初始化一个平台。

36、上下文(Context): 定义了整个OpenCL的运行环境,包括Kernel、Device、内存管理和指令队列等。

37、指令队列(Command-Queue): 一些需要在设备上执行的OpenCL指令的集合。

38、参考资料来源:百度百科-OpenCLOpenCL和OpenGL是两个不同的API。

39、OpenGL是3D API。

40、OpenCL是GPU通用运算API。

41、要理解什么是OpenCL,首先要明确一下什么叫API(应用程序接口)。

42、API是已经开发好的一些函数。

43、举个简单的例子。

44、比如编写一个程序,其中有一个步骤要将运算的内容输出到打印机上。

45、那么为了这个步骤,得写一大堆程序,包括如何调用打印机的驱动,为硬件分配I/O地址等等。

46、相当繁锁。

47、OK,现在这个程序写好了,要开发第二个程序了。

48、结果发现,第二个程序中,也有一个步骤是要把内容打印出来的。

49、那么就没必要再把程序重新写一遍了,直接把第一个程序中这个函数复制过来就好了。

50、久而久之,大家干脆把一些常用的函数给独立出来,就是API。

51、这样,所有软件,无论是WORD、WPS、PHOTOSHOP还是其他软件,都不需要费事单独去写这段代码了,直接从API里调用就好。

52、这样一来,不仅开发过程简化了,程序本身也更精练了。

53、那么OpenGL或DirectX是什么呢?是负责3D图形处理的API,包括各种光照、纹理、烟雾、阴影等效果。

54、程序员在开发游戏的时候,只要考虑什么时候、在哪个位置,加上什么样的烟雾,就可以了。

55、而不必考虑究竟要怎样去编写代码,才能实现烟雾效果的问题。

56、OpenCL呢?是显卡作通用浮点运算的API。

57、比如视频转码,原来这个工作都是CPU来做的。

58、现在显卡运算能力比较强,这个工作完全可以交给显卡来做。

59、那究竟怎样调用显卡呢?这个工作不需要再由程序员考虑了,因为已经有一个现成的接口了,程序员只要管好转码的算法,然后直接调用OpenCL中现成的指令,这个工作就自动由CPU转交到GPU了。

60、说得有点复杂,也不是很严谨,但大概意思就是这样的,不知道题主看明白了没。

61、做异构计算的。

62、你可以把异构理解为对设备进行抽象。

63、就像我们编程会对类和方法进行封装抽象一样。

64、这个东西可以对设备进行抽象,就是说不管你是gpu啦,cpu啦,还是说你接入了一些fpga、dsp这样的设备;他都可以通过标准化配置,把他们视为一个组(group),然后给其中一个设备分配控制权(通常是cpu来担任此角色),协同一起进行计算。

65、也就是说,你用不在意“cpu应该怎么做”、也不用关心“gpu又该怎么做”,更不用在意“如果我想让cpu和gpu‘交火’,他们应该如何协调”。

66、OpenCL帮你搞定这些细节。

67、更通俗点讲,就是它为你提供方法组件你的“智囊团”,但你不用过于关心里面成员各自的特性。

68、题外话:这东西我记得最早可以说是从OpenGL延伸来的,那个时候CPU的算力有限,一些先驱探索者们,尝试用一些小把戏,通过OpenGL的接口,达到“让它帮我计算,但却不需要渲染图形”的目的。

69、久而久之,这样的需求促使了这个标准的诞生和发展。

70、(不知道有没有记错。

71、)所以现在你看到了,我们不仅可以“让GPU帮我计算,但不用渲染”,还可以“让各种不同特性不同风格的设备联合在一起帮我计算”,而你不用关心他们内部如何协作。

72、——如果要让你亲自来协调多种设备高效协作计算,那对开发者而言门槛无疑是很高的;因为光是在一个CPU以外的设备上好好执行计算已经颇有难度了,更别提还有一些开发者可能在CPU上用多线程都会出各种问题。

73、OpenGL吧. 图形运算接口 和DirectX类似。

74、 但是现在大部分游戏都是用DirectX来渲染的. OpenGL现在更多用于专业绘图 图形站。

75、 一部分游戏还是会用到 . 目前DirectX是民用主流就是了.。

本文到此分享完毕,希望对大家有所帮助。

关键词:

[ 相关文章 ]