移植该选GPU还是MIC

GPU和MIC是目前两个流行的异构计算平台,二者在市场上的地位类似。如果当下有一个fortran程序,是该选择移植到GPU上还是MIC上呢?
个人推荐:GPU要优于MIC。
首先,我们来看下GPU和MIC的单机linpack结果:
153513jpm6eui6ez6pcupe.png

LINPACK.png (50.54 KB, 下载次数: 0)

下载附件  保存到相册

linpack of GPU and MIC

2016-12-19 15:35 上传


该测试的GPU为K40m,MIC为31S1P(天河2号专用卡)
从这个测试结果上看,MIC的linpack测试性能似乎略胜于GPU。

其次,从编译器的软件环境来看,CUDA FORTRAN的编译器为PGI,MIC的编译器为intel fortran,两款编译器对于fortran语言标准的支持有细微差别,
从移植的角度来说,如果原来的程序是用的intel的,移植选择intel的编译器可能要少些麻烦。除此以外,intel的编译器是免费的,PGI是收费的,而且
费用还不低,如果单买PGI的fortran,需要5000rmb,同时购买PGI C和fortran,估计价格约为1万rmb。幸运的是,PGI推出了社区版本,可以免费试用1年。

从支持的库来看,MIC支持intel的MKL,而在GPU上的fortran库只有CULA,且CULA目前停止更新。当然可以通过fortran调用C的方式来调用其他的C
版本的库,前提是PGI最好连C版本一起买了。

从使用的难易程度来看,MIC的接口很容易,形似openMP,fortran使用GPU的方式有两种,一种CUDA FORTRAN,一种OPENACC。如果希望能深层次的
优化的话,CUDA FORTRAN更好一些。代价就是,增加了移植的难度。

从debug的角度来说,CUDA有支持的图形化界面nvvp和命令行nvprof,而对于MIC来说,debug则显得不方便,因为接口封装的比较完美,底层不易触及。

最后,我阐述下个人使用GPU和MIC的感受,对于GPU来说,固然有编写代码和优化的难题,但是,其效果是明显和可预期的,只要并行度高的程序总能
有加速比。而MIC表面上使用简单,但真到用起来了也是“谁用谁知道”,简单概况有两大坑:第一,接口的坑。明明一个很简单的类似openmp的接口语句,
就是给你报错,报的莫名其妙,而且debug起来也是头疼不已。第二,性能的坑。linpack测试的结果很喜人,实际用起来就不咋地,有时候不一定加速,甚至
减速也是有可能的。

总之,GPU目前来说更成熟更稳定,MIC的发展要晚于GPU,缺陷较多。希望对疑惑于选择GPU还是MIC的同学们有些帮助。

原文发布时间为: 2016-12-19 16:07:45
原文由:LGZ 发布,版权归属于原作者 
本文来自云栖社区合作伙伴NVIDIA,了解相关信息可以关注NVIDIA官方网站
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
micgpu对比,GPGPUMIC定位相似,两者都是相对于CPU具有较高性价比的高性能解决方案,甚至连外形都是一样使用PCI-E插槽的板卡。但对于“核”这个概念来说,两者却有很大的不同。GPGPU中所说的核,以CUDA为例,是指一个SP(即流处理器),SP的功能只有计算,以NVIDIA的Fermi GPU为例,32个SP组成一个SM(流处理器群),一个SM 才有两个控制单元。也就是说每16个GPU的“核”,必须执行同一条指令。而MIC得设计思路与GPGPU完全不同。MIC的每个“核”,可以简单看作一个X86核心,也就是与现有PC机或小型服务器上的CPU核心相同的核。因此MIC编程可以最大限度地沿袭已有CPU上的并行程序,甚至可以一定程度上认为MIC上的每个“核”都是独立的节点,亦即将MIC作为一个超小型的集群。MIC的“核”虽然是x86架构,虽然单核的功能比GPGPU的核强大不少,但要指望单兵作战接近主流CPU,暂时还是不现实的。MIC依靠和GPGPU一样,靠人海战术。说起“人数”,GPGPU动辄上百核,MIC只有几十核,几十单核性能再强,在并行应用中也掀不起多少浪花。由于MIC的核心是Intel的CPU,核心数即使上不去了,Intel处理器可以超线程。在MIC上,每个核心能同时并发执行4个线程,而且这4个线程被Intel成为“硬件线程”,其性能大幅提升,几乎可以把每个线程看作真正的核心。因此,MIC“执行核”的数量,核GPGPU实际差不多。 另外,MIC采用了SMP结构,以一致性共享缓存为中心,这种设计使得MIC可以使用传统CPU的编程模型,而不需要针对性的硬件,设计新的程序结构。 MIC对现有程序改动之小还体现在编程简易性和工具方面。编程简易性上,MIC常用的offload模式只需要加上少数几条编译指导语句,就可以使程序利用MIC进行运算,而此时的程序源代码,是可以与传统的CPU程序共用的,减少了维护成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值