GPU计算的后CUDA时代-OpenACC(转)

在西雅图超级计算大会(SC11)上发布了新的基于指令的加速器并行编程标准,既OpenACC。这个开发标准的目的是让更多的编程人员可以用到GPU计算,同时计算结果可以跨加速器使用,甚至能用在多核CPU上。
出于显而易见的原因,NVIDIA在大力推广和支持OpenACC。但事实上PGI和Cray才是最早推动这项技术商业化的公司。PGI已经推出了一组非常类似的加速器指令,目前也成为了OpenACC标准的基础部分之一。Cray公司正在开发自己的OpenACC编译器,并且他的XK6客户如橡树岭国家实验室和瑞士国家超级计算机中心,预计将成为该技术的第一批超级计算机用户。
简而言之,OpenACC指令与OpenMP指令工作方式很类似,但前者特别适用于高度数据并行代码。它们可插入标准的C,C + +和Fortran程序直接指导编译器进行某些代码段的并行。编译器会特别注意数据在CPU和GPU(或其他)之间来回转移的逻辑关系,并将计算映射到适当的处理器上。
这样,开发人员就可以在现存的或者新的代码上做相对小的改动以标示出加速并行区域。由于指令设计适用于一个通用并行处理器,这样相同的代码可以运行在多核CPU、GPU或任何编译器支持的其他类型的并行硬件上。这种硬件的独立性对于HPC的用户来说特别重要,因为他们不愿意接受那种受供应商限制的,非便携式编程环境。
站在NVIDIA的角度,目标就是将GPU计算带入后CUDA时代。今天,CUDA C和CUDA Fortran广泛用于GPU编程。但是这个底层技术属于NVIDIA,对于GPU计算提供了一个相对低阶的软件模型,因此想较于对一般编程人员或者研究人员,CUDA的使用对于计算科学类型而言受限制程度越来越明显。
受NVIDIA、AMD等支持的OpenCL同样也提供了GPU和其他加速器的并行编程框架。与CUDA不一样的是,OpenCL是个真正开放的标准。 但与CUDA相似的是,OpenCL相对底层,需要对目标处理器的内部结构有一定了解。因此与CUDA一样,使用OpenCL对于计算机科学家来说有很大的局限性。
NVIDIA公司估计这个星球上有超过10万的CUDA程序员和比较多的的OpenCL开发人员,但他们也意识到如果能够使GPU编程更加开放且开发界面更加友好,就会有一个更大的潜在观众。从本质上讲,他们认为OpenACC将能够被数以百万计的科学家和研究人员使用,这些人不需要关心和涉足处理器架构,也不需要关心芯片与芯片之间通信。
NVIDIA的Tesla业务部门的首席技术官Steve Scott总结了OpenACC目标:“我们确实想在这一点上做到大幅提高适用性和人们利用GPU的广度和深度。”Scott表示作为高层OpenACC不会影响执行性能。这来自于他以前在Cray公司做首席技术官的经验,他遇到了基于加速器的指令代码只比手工CUDA编码的性能低5%到10%而已。据他介绍,这是相当典型的。Scott说,有些应用程序甚至做的比他们用CUDA编程要好,这受益于编译器在对某些代码进行优化的能力超越了凡人。在任何情况下,OpenACC的目的是要利用CUDA进行互操作,因此如果需要的话,可以手工调整内核,并与指令代码做无缝连接。
除了PGI和Cray公司,法国的多核软件工具的开发者CAPS公司,也签署了协议支持新的指令。这三家厂商预计在2012年上半年推出支持OpenACC的编译器。值得注意的是OpenACC支持者列表中缺少了英特尔和AMD,不过这也不会阻止PGI、CAPS或者Cray建立支持英特尔和AMD硬件的OpenACC编译器。
PGI和NVIDIA目前向开发人员推出了30天免费试用PGI的加速指令编译器。活动宣传说可以在四周之内将应用性能翻倍。上百位研究人员已经注册了申请试用,不过对于OpenACC的支持者来说真正终结这场游戏的是将指令纳入到OpenMP标准。因为OpenACC的一部分工作来源于OpenMP,所以就意味着这件事情发生的可能性很高,不过目前没有时间表,但最有可能结合的时间是在2012年某时OpenMP 4.0发布的时候。
GPU计算的后CUDA时代-OpenACC(转)的更多相关文章
- CUDA刷新:GPU计算生态系统
CUDA刷新:GPU计算生态系统 CUDA Refresher: The GPU Computing Ecosystem 这是CUDA Refresher系列的第三篇文章,其目标是刷新CUDA中的关键 ...
- GPU计算的十大质疑—GPU计算再思考
http://blog.csdn.NET/babyfacer/article/details/6902985 原文链接:http://www.hpcwire.com/hpcwire/2011-06-0 ...
- OpenGL实现通用GPU计算概述
可能比較早一点做GPU计算的开发者会对OpenGL做通用GPU计算,随着GPU计算技术的兴起,越来越多的技术出现,比方OpenCL.CUDA.OpenAcc等,这些都是专门用来做并行计算的标准或者说接 ...
- GPU编程自学4 —— CUDA核函数运行参数
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题.这里主要记录自己的GPU自学历程. 目录 <GPU编程自学1 -- 引言> <GPU编程自学2 -- CUD ...
- “后PC”时代来临
“后PC”时代来临 数年前,喜达屋酒店及度假村国际集团将总部搬迁至美国康涅狄格州斯坦福,这也让公司首席执行官Frits van Paasschen有机会“除尘换新”. 那么,Frits van Paa ...
- 后Hadoop时代的大数据技术思考:数据即服务
1. Hadoop 的神话正在破灭 IBM leads BigInsights for Hadoop out behind barn. Shots heard IBM has announced th ...
- (Matlab)GPU计算简介,及其与CPU计算性能的比较
1.GPU与CPU结构上的对比 2.GPU能加速我的应用程序吗? 3.GPU与CPU在计算效率上的对比 4.利用Matlab进行GPU计算的一般流程 5.GPU计算的硬件.软件配置 5.1 硬件及驱动 ...
- OpenCL入门:(二:用GPU计算两个数组和)
本文编写一个计算两个数组和的程序,用CPU和GPU分别运算,计算运算时间,并且校验最后的运算结果.文中代码偏多,原理建议阅读下面文章,文中介绍了OpenCL相关名词概念. http://opencl. ...
- GPU编程自学3 —— CUDA程序初探
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题.这里主要记录自己的GPU自学历程. 目录 <GPU编程自学1 -- 引言> <GPU编程自学2 -- CUD ...
随机推荐
- 工作ui(2)
做完整个小Demo整理的一些方法和踩过的miniUI的坑,分享出来希望大家批评指正,共同进步. 1.动态创建列:尽量不要直接在html文件里创建列,动态设置在js文件里方面添加.修改等. 首先把列定义 ...
- Hibernate通过自编写Sql修改
@Override public void updateTemMsg(String ticket,String time) { String sql="UPDATE INTER_TEMPTO ...
- 386. Lexicographical Numbers 把1--n按字典序排序
https://leetcode.com/problems/lexicographical-numbers/description/ 前20个是 1, 10, 11, 12, 13, 14, .... ...
- CAD安装失败怎样卸载CAD 2009?错误提示某些产品无法安装
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- [转]25个HTML5和JavaScript游戏引擎库
本文转自:http://www.open-open.com/news/view/27c6ed 1. The GMP JavaScript Game Engine GMP是一个基于精灵2-D游戏,它可以 ...
- WSGI学习系列WSME
Introduction Web Services Made Easy (WSME) simplifies the writing of REST web services by providing ...
- [原创]Dubbo配置(Spring4+Hiberante4+Druid)
如果dubbo使用注解,并且spring也使用注解,如使用事务,则dubbo加过注解的类无法发布. <?xml version="1.0" encoding="UT ...
- Java基础入门 - 三种注释及文档注释详解
类似C/C++,Java也支持单行和多行注释 注释中的字符在编译时会被忽略 注释通常为类.变量和方法的主要描述 单行注释 // 注释内容 多行注释 /* 注释内容 */ /* * 注释内容 */ 文档 ...
- Spring课程 Spring入门篇 3-5 Spring bean装配(上)之Resource
课程链接: 1 resource简析 2 resource代码演练 1 resource简析 urlsource:url对应的资源 classpath:获取类路径下的资源文件 filesystemre ...
- android 屏幕单击位置测试
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...