本文主要探究OpenCL的GPU和多核CPU的异构计算问题,主要简要阐述了什么是OpenCL异构计算,讲述CPU和GPU各自的特点,并且把他们结合起来做异构计算的前景。然后具体讲述在高性能实验室Linux工作站上如何搭建多GPU和多核CPU异构OpenCL环境。最后用实验验证了所安装的OpenCL异构计算环境能够正常工作,说明什么是OpenCL的多GPU与多核CPU异构环境的platform,device等。
用两篇文章介绍以上内容,转载请注明原作者及地址!
1 何为OpenCL异构计算
图1 OpenCL标准所提倡的CPU-GPU异构计算
我们知道CPU和GPU各有所长,一般而言CPU擅长处理不规则数据结构和不可预测的存取模式,以及递归算法、分支密集型代码和单线程程序。这类程序任务拥有复杂的指令调度、循环、分支、逻辑判断以及执行等步骤。例如,操作系统、文字处理、交互性应用的除错、通用计算、系统控制和虚拟化技术等系统软件和通用应用程序等等。而GPU擅于处理规则数据结构和可预测存取模式。例如,光影处理、3D 坐标变换、油气勘探、金融分析、医疗成像、有限元、基因分析和地理信息系统以及科学计算等方面的应用。
图2 AMD GPU在OpenCL下的存储体系
尽管在不少方面GPU表现优异,但在一段时间内,还会维持CPU与GPU各自发展的态势,它们可以继续在各自擅长的领域发挥作用,而未来的演进方向是相互取长补短,走向融合,而OpenCL正是它们融合与并行发展的连接桥梁。从CPU角度来讲,为了提高处理能力,以前是多线程,目前是多核,将来的发展方向是众核。
OpenCL的标准很大程度上决定了它的未来。获得整个计算机/视频硬件行业的支持也将起到帮助作用。从独立软件开发商的角度来看,OpenCL是通向混合(GPU/CPU)计算的大门。任何涉足高性能计算领域的人都会告诉你,在非标准的API上投入资金和时间是一项具有风险的业务,而OpenCL显然具备更大的潜力。
图3 ATI Stream在Open CL下编程模型
CPU正向不断增加吞吐量和提高能效性的方向发展;而从