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异构计算
图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显卡驱动
安装驱动
进入Linux下的文本命令行模式(也即启动方式为3),root根用户下运行命令:
- ./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。
2.1.2 安装AMD OpenCL SDK
解压原始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
- ./ Install-APP.sh
- reboot
- cd /opt/AMDAPP/samples
- make
按理说不需要这一步,因为样例程序可以不编译测试,但是不知为何这个opencl不编译样例程序就不能正常运行,必须要编译,搞不懂。
到samples/opencl/bin/x86_64下运行编译好的样例程序
- 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节中形似,这里不多冗述。
- OpenCL的多GPU和多核CPU异构计算--1
- OpenCL的多GPU和多核CPU异构计算--1
- OpenCL的多GPU和多核CPU异构计算--2
- 显示所有CPU和GPU的OpenCL代码
- CPU和GPU计算的优缺点分析
- openCL在GPU与CPU设备上的区别--计算E值
- CPU+GPU异构计算编程简介
- CPU+GPU异构计算完全解析
- CPU+GPU异构计算编程简介
- 多核CPU加速并行计算的快捷开发和应用
- 关于多核多CPU多线程和并行计算的一点补充
- 多颗CPU和多核CPU的衡量
- 深入理解CPU和异构计算芯片GPU/FPGA/ASIC (上篇)
- 深入理解CPU和异构计算芯片GPU/FPGA/ASIC (下篇)
- 深入理解 CPU 和异构计算芯片 GPU/FPGA/ASIC
- 双剑合璧:CPU+GPU异构计算完全解析
- 双剑合璧:CPU+GPU异构计算完全解析
- 异构计算(CPU + GPU)编程简介
- 如何自学Android?
- static解析
- 得到classpath和当前类的绝对路径的一些方法
- 菜鸟进化史
- one day-php
- OpenCL的多GPU和多核CPU异构计算--1
- 关于GPL协议的理解(开源与商用、免费与收费)
- Android性能优化之:ViewStub
- Matlab从细胞型转换为矩阵From cell to matrix
- Eclipse插件SVN配置
- linux 私房菜学习笔记点——用户组,文件夹权限系列
- Java基础部分内容总结
- Nginx支持PHP配置
- [php] json_encode 的第二个参数详解