本节书摘来异步社区《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会更深入地讨论这个问题。