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

序一

随着计算能力的不断提高和可编程性的不断增强,GPU受到越来越多厂商和开发人员的青睐,应用越来越广泛。无论是在科学计算等传统领域还是在多媒体计算等新兴互联网领域,在融合CPU和GPU构成的异构计算系统上使用GPU实现应用程序加速已经成为提高程序性能的主要模式。同时,主流芯片厂商根据实际计算需求,不断发展自己的GPU架构。例如:NVIDIA的Fermi、Kepler和Maxwell架构;AMD的Cypress、Cayman、GCN架构等。这些不同架构的GPU已经深入到从移动计算领域到超级计算领域的方方面面,异构计算正日益作为新的主流计算机体系结构。

与CUDA只能运行在NVIDIA GPU上相比,OpenCL由Khronos国际标准组织发布与维护,是一种针对通用并行计算的开放行业标准和跨厂商解决方案。到目前为止,OpenCL已有包括Intel、NVIDIA、AMD在内的众多硬件厂商和软件厂商的支持与维护。随着异构计算的发展,OpenCL的发展方兴未艾,正逐渐成为异构并行计算领域里异军突起的应用程序编程接口。OpenCL定义了丰富的API,应用程序开发人员可以通过使用OpenCL,以最高效的方式充分利用计算系统中的各种异构计算资源,在实现性能目标的同时又可降低功耗。更重要的是,OpenCL程序可以运行在不同厂商的各种处理器上,实现了高性能并行程序的可移植。

然而,为了实现上述目标,OpenCL被设计成一个相对复杂的并行编程标准,其编程充满了各种困难和挑战。本书首先通过简洁、通俗的语句和丰富的代码示例清晰解释了OpenCL中比较晦涩难懂的各种概念以及API的使用;然后描述了OpenCL到主流GPU处理器的映射,最后通过二维卷积、矩阵乘法等实际案例的开发和优化,进一步帮助读者加深对OpenCL的概念和应用的理解。本书写作以最新的OpenCL 2.0为标准,对SVM机制、管道、原子操作等新概念进行了非常深入的描述,具有较强的前沿性,这为OpenCL开发人员理解、掌握和使用最先进的OpenCL技术提供了很大的帮助。

本书的作者是长期战斗在异构编程第一线的架构师和开发者,具有非常丰富的OpenCL使用和编程经验,本书正是他们多年OpenCL编程经验的总结。本书不仅详细描述了OpenCL的各种概念和特性;而且通过由浅入深的一系列实际应用案例,帮助读者掌握这个令人激动的新编程模型。本书内容充实,不仅适合不同经验水平的学生和开发者,而且对于致力于异构计算的研究人员,也是一本非常不错的OpenCL教科书。

张云泉 研究员

中国科学院计算技术研究所计算机体系结构国家重点实验室