zl程序教程

您现在的位置是:首页 >  后端

当前栏目

《OpenCL实战》一1.5 OpenCL标准和扩展

标准扩展 实战 1.5 OpenCL
2023-09-11 14:17:33 时间
当你在通过网站www.khronos.org/opencl了解OpenCL时,你会看到一个名为opencl-1.1.pdf的重要文件。这其中包含了OpenCL1.1的标准,它所包含的是大量关于编程语言的内容。

本节书摘来异步社区《OpenCL实战》一书中的第1章,第1.5节,作者: 【美】Matthew Scarpino 译者: 陈睿 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.5 OpenCL标准和扩展

当你在通过网站www.khronos.org/opencl了解OpenCL时,你会看到一个名为opencl-1.1.pdf的重要文件。这其中包含了OpenCL1.1的标准,它所包含的是大量关于编程语言的内容。它不仅仅定义了OpenCL的函数和数据结构,还对厂商所提供的开发工具提出了功能上的要求。除此之外,它还设定了一系列的标准来判定设备的兼容性。

但是兼容软件和硬件所能提供的功能已经超出了标准所设定的内容。这些额外的特性需要通过扩展(extensions)的方式供OpenCL应用程序使用。有两种主要类型的扩展:一种和厂商的软件包(叫做平台)相关,一种和设备相关。第2章将讨论如何编写代码来确认这些软件平台扩展和设备扩展。

每个OpenCL扩展都有特定的名字,而这也反映了它的兼容度。如果一个扩展为OpenCL工作组所认可,它的名字就会像cl_khr_一样,如果它只是发布在开发商的SDK中,还没有得到工作组的认可,它的名字则形如cl__。

例如,在我的Linux中,AMD平台所支持的扩展便是cl_khr_icd。这个扩展就是软件平台扩展。而这也让开发工具能够找到安装在系统里,针对特定厂商的OpenCL库文件。ICD表示的是Installable Client Driver(可安装的用户驱动),附录A会更深入地讨论这个问题。


《CUDA高性能并行计算》----2.2 需要知道的CUDA API和C语言拓展 CUDA并行所需要的基本任务包含以下几点: 使用特定的网格维度加载核函数(线程块和线程的数目)。 明确哪些函数编译后运行在设备(GPU)上、主机(CPU)上,或者两者之上。 访问和运用线程块和线程的计算索引值。 分配内存和传输数据。
《OpenCL实战》一 导读 1997年的夏天,我被震惊了。除了能在自己的专业(微电子工程)做实习生,我所能找到的最好的工作就是在一个专门研究高速信号处理的实验室做事,负责用C和MPI(Message Passing Interface,消息传递接口)编程实现二维快速傅里叶变换(fast Fourier transform,FFT)。
《OpenCL实战》一1.2 为什么是OpenCL 你可能听说过这样的表述,OpenCL指的是一门独立的语言,但其实,这种表述其实并不准确。OpenCL标准只是在C和C++的基础之上,扩展定义了一些数据类型,数据结构以及函数罢了。尽管开发人员已经针对Java和Python设计了一系列的OpenCL接口库,但标准中只要求OpenCL框架提供C和C++编写的API。
1.4 OpenCL应用程序的第一印象 现在,你应该对OpenCL的目标有了一个大致的了解。我还希望你能对OpenCL应用程序的运行过程有所认识。但如果想要更全面而深入地认识OpenCL,你还需要仔细阅读源代码。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。