最新
推荐
2014年高等教育信息化十大“关... 01-04 教育部成立教育信息化专家组 12-24
CERNET第二十一届学术年会 11-24 李志民:互联网促进人类文明迈... 11-15
|
软件篇 4 王者归来的SIMD编程模式 在M.J.Flynn眼里,Cray的向量机,Intel的SSE和AVX指令集与nVIDIA的GPU都可以归到单指令、多数据(SIMD)这一模型中。斯坦福大学校长John Hennessy和伯克利计算机系前主任DavidPatterson在合著的《计算机体系结构:量化研究方法》最新第5版中就遵循这种思路,将这三者放在一章中串讲。现代的GPU使脱胎于古老向量机的SIMD编程模式重新焕发青春,这就如同多核CPU使原先针对SMP机器设计的OpenMP再次流行起来一般。与目前常用的并行工具MPI、OpenMP等多指令多数据(MIMD)模式相比,SIMD模式编程的思维方式更接近串行程序,功耗也更低,因为一条指令能同时处理多个数据。 5 另一个GPU编程选择,OpenCL 2008年,Apple首先提出OpenCL,随后Intel,nVIDIA和AMD各自派人跟进,希望借鉴OpenMP的成功经验,在CUDA之外,制定为各公司广泛接受并支持的通用GPU编程标准。但与PC时代的Windows,智能手机时代的Android一样,出于对抗CUDA的目的,OpenCL希望支持尽可能多的厂商设备,因此在技术上它遇到的“性能可移植性”非常棘手,即为设备A所编写的程序如何在不修改源代码的情况下,在设备B、设备C 上继续获得良好的加速性能。让人郁闷的是,虽然OpenCL的设计初衷是“通用”的CPU+GPU异构计算标准,但现实中出于商业利益的考虑,号称支持OpenCL的厂商都只做了“半吊子”的实现。Intel的OpenCL只支持Intel CPU,nVIDIA的OpenCL只支持nVIDIA GPU,AMD的OpenCL倒是能同时支持CPU和GPU,但只是AMD 自家的产品。随着2011年底nVIDIA宣布会陆续开放CUDA源代码之后,OpenCL最大的亮点“开放性”也似乎黯淡了不少。 6 “巧妇难为无米之炊”的OpenACC CUDA之父Ian Buck博士毕业后加入nVIDIA,从他在斯坦福做的Brook中获得了不少启发,开创性地引入了SM内部线程同步机制,实现了单指令多线程SIMT的编程方式,并在2007年发布1.0版本,之后每个版本都有相当的提高。与FPGA和CELL相较,CUDA当然简单易学,但对于一般应用开发者来说,上手还是比较困难。因此当Cray 前CTO Steve Scott加入nVIDIA成为Tesla部门的CTO之后,他力推基于编译器指令的编程方式,联合了老东家Cray、Portland Group和法国的CAPS,一起推出OpenACC规范,希望做到真正的简单易学好上手。但目前并没有支持OpenACC的免费编译器可用:Cray的编译器可以免费赠送,但只针对购买了Cray机器的用户;Portland和CAPS的编译器都是要收费的。现在让开发者自个掏钱买开发工具的比较少见,在国内就更难了。或许nVIDIA收购其中一家的编译器,然后免费发布给开发者倒不失为一个良策。 |
版权所有:中国教育和科研计算机网网络中心 CERNIC,CERNET,京ICP备15006448号-16,京网文[2017]10376-1180号
关于假冒中国教育网的声明 | 有任何问题与建议请联络:Webmaster@staff.cernet.com