OpenCL 是目前最多厂商采用的异构并行计算编程框架,最初它是由苹果公司倡议,作为一个开发标准现在由非盈利机构 Khronos Group 维护,目前已经有 Altera、AMD、苹果、ARM、IBM、ImgTec、英特尔、英伟达、高通、三星等多家公司提供了基于该标准的实现。
OpenCL 最初版采用了基于 C99 的语法标准,所有的 C 以及 C 衍生语言(例如 Jave、C++)程序员几乎不需要额外的学习就掌握该语言的语法规范。
最初的 1.0 标准在很大程度上参考了 NVIDIA CUDA C,所以如果是 CUDA 开发人员的话基本上也能很快理解 OpenCL 中的许多概念。例如 OpenCL 中的 work-item 对应 CUDA C 里的 thread、workgroup 对应 block,相应的内存层次化都是如出一辙,只是部分名称改了。
对开发人员或者用户来说,OpenCL 的好处是开源、免权利金,有更多的厂商实现,平台迁移理论上只需要重新编译一次即可,而像 CUDA C 这样的厂商语言是又不少限制的。
新版本 OpenCL 2.0 引入了 C11、C++11 标准的支持,原子及同步操作可以让 work-item 以及 workgroup 的数据交换变得更简捷,除此以外,2.0 还有许多重要特性的支持,例如 SVM、动态并行化、通用寻子空间、Images、Pipes 等,AMD 公司现在已经发布了 FirePro 服务器 GPU 的 OpenCL 2.0 驱动,开发人员可以马上就使用上 OpenCL 的新特性。
在最新的 OpenCL 2.1 中,会用 C++ 替代原来的 C,支持 C++14,此外还有不少新的特性被引入,不过这个版本暂时还是预览阶段。
AMD 公司在其官网有一个针对开发人员的频道:http://developer.amd.com/,上面有大量的 OpenCL 开发文档、工具、AMD 公司自己的开发工具包,并且还提供了不少第三方的资源链接。
AMD APP SDK 3.0:
AMD APP SDK 3.0 是 AMD 公司的异构计算开发包,最新的 3.0 版提供了 OpenCL 2.0、Windows 10、AMD 第六代 A 系列处理器(代号 Carrizo)、RADEON R9(代号 Fiji)、FirePro W8100/W9100 等新标准、新产品的支持。
OpenCL 2.0 引入的 SVM(共享式虚拟内存)可以让程序员在 CPU 和 GPU 等设备之间之间共享数据对象,这样的编程模型在多核 CPU 上已经有很长的采用时间,现在在 AMD 的 GPU 上也能实现了。
对于计算加速而言,在 CPU 和 GPU 之间实现指针型数据结构的内存共享可以显著简化利用 GPU 时的代码编写难度,提升采用 GPU 计算的编程效率。
下载地址:http://developer.amd.com/community/blog/2015/08/26/introducing-app-sdk-30-opencl-2/
AMD ACL:
ACL 的全称是 AMD Compute Library,即 AMD 计算库,其中包含了 clBLAS、clFFT、clSPARSE(稀疏矩阵)、clRNG 等四个在科学计算中经常使用到的功能集合。
目前 AMD ACL 提供了 1.0 beta 2 版,下载地址是:
http://developer.amd.com/tools-and-sdks/opencl-zone/acl-amd-compute-libraries/
AMD 提供了 clSPARSE SpGEMM 搭配 AMD FirePro W9100 与 NVIDIA cuSPARSE 搭配 Tesla K40 的对比测试结果:
从测试结果来看,clSPARSE + W9100 的性能在最高的情况下比 cuSPARSE + K40 快 2.83 倍。
除了这两个 AMD 的官方工具外,网络上其他其他不少的 OpenCL 工具 AMD 都有参与贡献,例如:
深度计算库 Caffe:https://github.com/amd/OpenCL-caffe
Caffe 的 OpenCL 版实际上是由 AMD 在原有的 Caffe 基础上开发的,以完全开源的方式提供给开发人员使用。
目前该深度神经网络库有三个分支,分别是稳定版、开发人员版、master 版,其中稳定版是针对用户的。Caffe OpenCL 的所有层都已经移植到 OpenCL 上,支持 OpenCL 2.0、1.2,采用 C++ 和 OpenCL 实现,界面部分和原来的 Caffe 一致。用户可以直接使用的 DNN 模型有:AlexNet、VGG-16 和 VGG-19。
AMD 表示,Caffe OpenCL 已经在 AMD 的 APU/GPU/CPU 产品上完成测试验证,其他厂商的产品交叉兼容性计划在将来实现。
在 Caffe OpenCL 的 wiki 里有该开发套件的安装、构建、性能测试指南:
https://github.com/amd/OpenCL-caffe/wiki
深度计算库 Torch:https://github.com/hughperkins/cltorch
Torch 最近也引入了 OpenCL 的支持,但是目前似乎还是只有一个人维护,宣称提供了 Torch 的全部特性支持,而且维护的活跃度还是可以的。
除了这个衍生版外,网络上还有其他的 Torch OpenCL 衍生版:https://github.com/jonathantompson/jtorch
PyOpenCL:http://mathema.tician.de/software/pyopencl/
Python 是目前比较流行的面向对象解释语言,可以和很多语言粘合使用,例如用 C/C++ 编写出性能先决的代码,然后将其封装为 Python 可以调用的扩展类库。
PyOpenCL 采用 MIT 开源协议,开发人员可以藉此使用 Python 语言编程的时候轻而易举的使用 OpenCL,参考:http://www.drdobbs.com/open-source/easy-opencl-with-python/240162614。
AMD 官网 OpenCL Zone 网页:
AMD 官网 OpenCL 文档资源:
AMD 超算加速卡推荐:
蓝宝 PGS AMD FirePro S9170 32GiB:http://www.sapphirepgs.com/productdetail.asp?IDno=90&lang=chs
蓝宝 PGS AMD FirePro S9150 16GiB:http://www.sapphirepgs.com/productdetail.asp?IDno=83&lang=chs
蓝宝 PGS AMD FirePro S10000 6GiB:http://www.sapphirepgs.com/productdetail.asp?IDno=45&lang=chs
@更多信息请访问
蓝宝PGS网站: http://www.SapphirePGS.com/
技术支持邮箱: ws.cn@sapphiretech.com
中国区唯一指定销售服务商
景丰电子网站: http://www.kingfung.com/
景丰天猫旗舰店:http://lianjingsm.tmall.com/
蓝宝 PGS 京东购买网址:京东蓝宝 PGS FirePro 产品列表
深圳KF景丰:0755 – 8375 9168 / 0755-83295070(深圳市福田区深南中路佳和华强大厦B座21楼)
广州KF景丰:020 – 3849 8045 / 0755-83295070 (广州天河区石牌西路1-7号太平洋数码广场B场G306室)
上海KF景丰:021 – 5490 1989 / 0755-83295070(上海市徐汇区漕溪北路41号汇嘉大厦太平洋数码广场一期16楼1608室)
北京KF景丰:010-8268 9066 / 0755-83295070(北京中关村科贸电子城6楼A133室)