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

来源:互联网 发布:nginx配置外网访问 编辑:程序博客网 时间:2024/06/07 12:17

原作者:飞鸿惊雪 地址点击打开链接

本文主要探究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 StreamOpen CL下编程模型


        CPU正向不断增加吞吐量和提高能效性的方向发展;而从GPU角度来讲,其可编程性能本来是在芯片内部固化的程序,然后发展到局部可编程,最后是完全可编程。也就是说,GPU是在提高所处理的吞吐量的同时,向通用处理的方向发展。


2 Linux工作站下搭建OpenCL环境

        高性能实验室,已经在两台工作站上配置了LinuxOpenCL环境。

其中的硬件和操作系统等配置如下:

高性能实验室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 SDKAMDCPU提供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
  1. ./ati-driver-installer-8.85.7.2-x86.x86_64.run   
直到显卡驱动成功,会出现如下显示:
[cpp] view plain copy
  1. Created directory fglrx-install.0PFT89  
  2. Verifying archive integrity... All good.  
  3. Uncompressing ATI Catalyst(TM) Proprietary Driver-8.911  
  4. ......................................................................................................  
  5. ==================================================================  
  6. ATI Technologies Catalyst(TM) Proprietary Driver Installer/Packager   
  7. ==================================================================  
  8. Detected configuration:  
  9. Architecture: i686 (32-bit)  
  10. X Server: X.Org 6.9 or later  
配置驱动程序,运行下面的命令
[cpp] view plain copy
  1. 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
  1. su  
  2. mkdir SDK-install  
  3. cd SDK-install  
  4. cp AMD-APP-SDK-v2.5-lnx64.tgz ./  
  5. tar -xvzf AMD-APP-SDK-v2.5-lnx64.tgz  
  6. rm AMD-APP-SDK-v2.5-lnx64.tgz  
运行自动安装sh
[cpp] view plain copy
  1. ./ Install-APP.sh  
重启机器
[cpp] view plain copy
  1. reboot  
运行测试程序,激活OpenCL环境
[cpp] view plain copy
  1. cd /opt/AMDAPP/samples  
  2. make  
编译正常,没有出错!

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

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

[cpp] view plain copy
  1. cd opencl/bin/x86_64  
  2. ./FFT  

运行正常没有出错!
注意:必须到OpenCl安装目录make编译一遍,不然OpenCL环境没被激活,不能使用。


2.2 Arch Linux工作环境搭建

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

        第一 安装NVIDIA显卡驱动;

        第二 安装NVIDIAOpenCL SDK--NVIDIAGPU使用;

        第三 安装AMDOpenCL SDK--AMD多核CPU使用;

具体的安装步骤和2.1节中形似,这里不多冗述。




0 0
原创粉丝点击