本文主要探究OpenCL的GPU和多核CPU的异构计算问题,主要简要阐述了什么是OpenCL异构计算,讲述CPU和GPU各自的特点,并且把他们结合起来做异构计算的前景。然后具体讲述在高性能实验室Linux工作站上如何搭建多GPU和多核CPU异构OpenCL环境。最后用实验验证了所安装的OpenCL异构计算环境能够正常工作,说明什么是OpenCL的多GPU与多核CPU异构环境的platform,device等。
用两篇文章介绍以上内容,转载请注明原作者及地址!
图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正向不断增加吞吐量和提高能效性的方向发展;而从GPU角度来讲,其可编程性能本来是在芯片内部固化的程序,然后发展到局部可编程,最后是完全可编程。也就是说,GPU是在提高所处理的吞吐量的同时,向通用处理的方向发展。
高性能实验室,已经在两台工作站上配置了Linux的OpenCL环境。
其中的硬件和操作系统等配置如下:
高性能实验室workstation-1:
1 Redhat Linux 6.1 64位操作系统
2 64位AMD 6核处理器,32G内存,500G硬盘,双显卡
3 显卡1:华硕HD 6870:AMD的GPU芯片ATI Radeon HD 6870
4 显卡2:NVIDIA Quadro FX 4800
高性能实验室workstation-2:
1. Arch Linux 64位操作系统
2. 64位AMD 6核处理器,32G内存,500G硬盘,双显卡
3. 显卡1:NVIDIA Quadro FX 4800
4. 显卡2:NVIDIA Quadro FX 4800
总的来说GPU显卡的环境配置主要步骤是先装显卡驱动,再装OpenCL SDK;而AMD CPU的环境配置只要直接安装AMD 的OpenCL SDK就行了,像workstation-1中,已经为显卡安装了AMD OpenCL SDK因此可以直接使用CPU;而像workstation-2如果打算在多核CPU上运行程序,则也要在安装一个AMD OpenCL SDK维AMD的CPU提供OpenCL环境。具体环境的配置如下。
首先在Linux文本模式下安装ATI显卡驱动,再在图形界面下安装AMD OpenCL SDK。
./ati-driver-installer-8.85.7.2-x86.x86_64.run直到显卡驱动成功,会出现如下显示:
Created directory fglrx-install.0PFT89 Verifying archive integrity... All good. Uncompressing ATI Catalyst(TM) Proprietary Driver-8.911 ...................................................................................................... ================================================================== ATI Technologies Catalyst(TM) Proprietary Driver Installer/Packager ================================================================== Detected configuration: Architecture: i686 (32-bit) X Server: X.Org 6.9 or later配置驱动程序,运行下面的命令
aticonfig --initial没有输出错误信息,说明安装正常。
重新设为X Window模式(即为启动方式5),重启,下面安装AMD OpenCL SDK。
su mkdir SDK-install cd SDK-install cp AMD-APP-SDK-v2.5-lnx64.tgz ./ tar -xvzf AMD-APP-SDK-v2.5-lnx64.tgz rm AMD-APP-SDK-v2.5-lnx64.tgz运行自动安装sh
./ Install-APP.sh重启机器
reboot运行测试程序,激活OpenCL环境
cd /opt/AMDAPP/samples make编译正常,没有出错!
按理说不需要这一步,因为样例程序可以不编译测试,但是不知为何这个opencl不编译样例程序就不能正常运行,必须要编译,搞不懂。
到samples/opencl/bin/x86_64下运行编译好的样例程序
cd opencl/bin/x86_64 ./FFT
该工作站中,有两个NVIDIA的显卡,还有一个AMD的多核CPU,因此安装步骤主要是以下三步:
第一 安装NVIDIA显卡驱动;
第二 安装NVIDIA的OpenCL SDK--供NVIDIA的GPU使用;
第三 安装AMD的OpenCL SDK--供AMD多核CPU使用;
具体的安装步骤和2.1节中形似,这里不多冗述。
(待续)
原创作品,转载请注明原作者及地址!
by 飞鸿惊雪