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 ...
随机推荐
- centos7安装hadoop
本次安装 hadoop版本为2.7.4,单节点安装.注意,在安装hadoop前要先安装jdk并配置好环境变量. 1. 上传hadoop压缩包文件到服务器上去(主机名centos1,ip 192.168 ...
- Ubuntu截图工具gnome-screenshot使用教程
Ubuntu自带的截图工具非常好用,可以自已设置各种截图的快捷键,下面我们一起来了解一下这个截图工具gnome-screenshot Ubuntu自带的截图工具非常好用,可以自已设置各种截图的快捷 ...
- java代码混淆
仅做记录之用. java代码可以反编译,因此有时候要保护自己的知识产权还真得费点心思,一般来说有三个思路: 1.将class文件加密,这个是最安全的,但也费事儿,因为要重写classloader来解密 ...
- 安卓多个RecyclerView滑动与显示问题
最近在项目遇到这样的问题:在一线性垂直布局内,有两个垂直的RecyclerView,如果直接高度直接设置wrap-content, 通常会导致滑动冲突或是内容显示不全. 首先说下解决的思路,就是在最外 ...
- WebGL 踩坑系列-3
WebGL 踩坑系列-3 绘制球体 在 WebGL 中绘制物体时需要的顶点是以直角坐标表示的, 当然了,gl_Position 是一个四维的向量,一般将顶点赋值给 gl_Position 时,最后一维 ...
- kafka的分区分配策略
用过 Kafka 的同学应该都知道,每个 Topic 一般会有很多个 partitions.为了使得我们能够及时消费消息,我们也可能会启动多个 Consumer 去消费,而每个 Consumer 又会 ...
- 非关系型数据库(NOSQL)-Redis
整理一波Redis 简介,与memcached比较 官网:http://redis.io Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括 ...
- <Android 基础(八)> Palette
介绍 Palette, 英文翻译,调色板,意思比较接近,Google给它的定位应该是颜色萃取器. 看下Source Code Palette , A helper class to extract p ...
- 安装Android模拟器Genymotion【Android学习入门】
安装Android模拟器Genymotion 推荐教程:一个强大的Android模拟器Genymotion具体内容如下: 相信很多Android开发者一定受够了速度慢.体验差效率及其地下的官方模拟器了 ...
- 【起航计划 023】2015 起航计划 Android APIDemo的魔鬼步伐 22 App->Menu->Inflate from XML 使用xml资源展示菜单
本例MenuInflateFromXml.java演示了如何从Menu 资源(XML 定义)展开菜单项.这个例子的onCreate 采用了使用代码来创建Activity 界面的方法 而通常的方法是采用 ...