OpenCL异构并行计算:原理、机制与优化实践
上QQ阅读APP看书,第一时间看更新

序二

计算机的基础组成在过去的十几年发生了很多变化,从单核处理器发展到多核处理器,然后发展到“众核”处理器,高效性的需求一直促进着处理器的发展,最终走到“异构处理器”,如CPU和GPU的结合,CPU和FPGA的结合。这一阶段异构处理器的发展和先前的形式产生了本质的区别,先前的形式主要是将多个异构模块(在物理上)叠加到一颗处理器内,而各异构单元间的内存、数据处理和通信还是分开的,如内存控制器、通信机制还是各模块单独设计。现代的异构处理器着眼于将异构处理模块间的编程模型统一、内存统一、数据统一处理,甚至将各异构处理单元统一纳入操作系统的管理之下,最大限度地提升处理器的可编程性和能效比,为此各大芯片厂商也不遗余力地开发自己的异构片上系统(SoC)。

最近我们看到,由于人工智能和机器学习随着移动互联网的兴起,特别是对图片、视频、语音等非结构化数据的挖掘、识别,带动了以智能算法为核心的应用的兴起,“异构平台”成为各大互联网厂商追逐数据挖掘平台先进性的标志之一。这源于异构计算可使数据处理的特定性能实现成百上千倍提升的特点。

作为异构编程人员首选的编程语言模型OpenCL(Open Computing Language),其将GPU计算的能力释放出来,带来了异构计算的新时代,在苹果公司的大力支持下,得到了包括AMD、Intel等主流处理器厂家的大力支持,也得到了如Altera等主流FPGA芯片公司的支持,OpenCL由Khronos Group精心设计维护,由于其开放、高度通用的跨平台设计原则,正在成为异构处理器的性能调优利器和开发语言。试想,以后运行性能优化能够在不同厂家的异构处理器间兼容而无须重写,实现“一次编写,多环境运行”,则可以大大提高开发效率。

在该书出版之际,OpenCL 2.0的规范也已经发布。本书不但介绍了OpenCL 2.0及硬件厂家(如AMD的HSA架构)对OpenCL 2.0的支持情况,还介绍了当前热点移动处理器对异构平台和OpenCL的支持情况。这几方面相信都是读者非常感兴趣的。

现在市面上关于OpenCL编程的书籍无论翻译的还是国内自己编写的都很多,可见异构计算正在从先前的以科学计算为主导的领域走向更开放的生态系统和应用,这是非常令人欣喜的事情。本书的编写背景和风格与其他书籍稍显不同,本书的几位作者均来自社区,也是活跃在各大GPU厂家的资深技术人员和实际项目的开发工程师。他们从自己使用经验的角度来阐述如何构建一个合理优化的OpenCL程序。根据本书一步一步讲解的内容来进行OpenCL编程,无论你是一个CPU编程人员,还是一个CUDA编程人员,都能很快地学会OpenCL编程。本书中所涉及的案例讲解,作者都在AMD的APU上逐一编写验证过。本书介绍了完整的OpenCL编程模型,同时结合相关的知识、体系结构,形成一个完整的编程知识体系,非常适合工程师阅读和参考,尤其是对正在开发项目的工程师来说,一边阅读,一边动手实践,结合自己的项目实施,一定可以很快掌握。该书也推荐给对异构计算有所耳闻,希望了解它,以借力快速打开异构计算之门和实践的技术爱好者,本书可以帮助他们在计算编程领域更上一层楼。

最后对几位作者在工作之余付出的极大热情和心血表示感谢!欢迎体验异构计算之旅。

楚含进

AMD(中国)异构计算技术总监