您的位置:首页 > 运维架构

OpenCL的多GPU和多核CPU异构计算--1

2016-04-27 11:57 246 查看
原作者:[b]飞鸿惊雪 地址点击打开链接[/b]

本文主要探究OpenCL的GPU和多核CPU的异构计算问题,主要简要阐述了什么是OpenCL异构计算,讲述CPU和GPU各自的特点,并且把他们结合起来做异构计算的前景。然后具体讲述在高性能实验室Linux工作站上如何搭建多GPU和多核CPU异构OpenCL环境。最后用实验验证了所安装的OpenCL异构计算环境能够正常工作,说明什么是OpenCL的多GPU与多核CPU异构环境的platform,device等。

1 何为OpenCL异构计算

OpenCL不仅仅是一种计算机语言,更是一个非常好的API,它可以使得开发者很容易的开发出跨平台的GPU计算程序,充分利用GPU强大的计算能力然后应用在各种领域。同时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正向不断增加吞吐量和提高能效性的方向发展;而从GPU角度来讲,其可编程性能本来是在芯片内部固化的程序,然后发展到局部可编程,最后是完全可编程。也就是说,GPU是在提高所处理的吞吐量的同时,向通用处理的方向发展。

2 Linux工作站下搭建OpenCL环境

高性能实验室,已经在两台工作站上配置了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环境。具体环境的配置如下。

2.1 RedHat Linux 6.1工作环境搭建

首先在Linux文本模式下安装ATI显卡驱动,再在图形界面下安装AMD OpenCL SDK。

2.1.1 安装ATI显卡驱动

华硕HD 6870显卡的GPU芯片为ATI Radeon HD 6870,到AMD主页上下载最新的显卡驱动,这里是ati-driver-installer-8.85.7.2-x86.x86_64.run。

安装驱动


进入Linux下的文本命令行模式(也即启动方式为3),root根用户下运行命令:

[cpp] view
plain copy

./ati-driver-installer-8.85.7.2-x86.x86_64.run

直到显卡驱动成功,会出现如下显示:

[cpp] view
plain copy

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

配置驱动程序,运行下面的命令

[cpp] view
plain copy

aticonfig --initial

没有输出错误信息,说明安装正常。

重新设为X Window模式(即为启动方式5),重启,下面安装AMD OpenCL SDK。

2.1.2 安装AMD OpenCL SDK

下载64位AMD OpenCL SDK软件AMD-APP-SDK-v2.5-RC2-lnx64.tgz

解压原始AMD openCL SDK包

[cpp] view
plain copy

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

[cpp] view
plain copy

./ Install-APP.sh

重启机器

[cpp] view
plain copy

reboot

运行测试程序,激活OpenCL环境

[cpp] view
plain copy

cd /opt/AMDAPP/samples

make

编译正常,没有出错!

按理说不需要这一步,因为样例程序可以不编译测试,但是不知为何这个opencl不编译样例程序就不能正常运行,必须要编译,搞不懂。

到samples/opencl/bin/x86_64下运行编译好的样例程序

[cpp] view
plain copy

cd opencl/bin/x86_64

./FFT

运行正常没有出错!

注意:必须到OpenCl安装目录make编译一遍,不然OpenCL环境没被激活,不能使用。

2.2 Arch Linux工作环境搭建

该工作站中,有两个NVIDIA的显卡,还有一个AMD的多核CPU,因此安装步骤主要是以下三步:

第一 安装NVIDIA显卡驱动;

第二 安装NVIDIA的OpenCL SDK--供NVIDIA的GPU使用;

第三 安装AMD的OpenCL SDK--供AMD多核CPU使用;

具体的安装步骤和2.1节中形似,这里不多冗述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: