gpu的单位表示_如何通过GPU达到加速效能?

53aace930d27ec8fdde88e39bd7ad26d.gif

GPU和CPU本质上有很大的不同,CPU具有较大的缓存(cache)和较快的计算核心,可以处理较复杂的运算。

0f6b15663c91464b56217877dbda907f.png

然而GPU不具备这样的条件,缓存较小且单核心计算速度也没有CPU快,只是取而代之的GPU具有大量的计算核心(通称CUDA Core),故其优势在于适合进行同时间的大量运算。一颗顶级的CPU核心数量可达56核心(Intel Xeon Platinum 9282),计算线程(Threads)达112,但低阶的GPU(如Quadro P620)的核心数就有512(GPU的核心数等于计算线程数量)。

当然这不代表GPU比CPU厉害,而是表示两者适合的计算类型不同。而GPU核心数量多的特点,也需要配合其平行化计算方式,才能将其优点发挥出来,所以由下图可知,GPU在计算时所有核心可高度平行进行计算,而CPU则是以顺序性(sequential)的方式进行计算。GPU是专为图像处理所需的计算密集、高度并行计算设计的。上述应用,都具有计算数据量大且可高度平行化的特性,也就最适合使用GPU来计算。

204626c879c698be9e994869b414428f.png

876fc5b0825138f64ed0868230ead555.png
CPU和GPU设计架构及计算特性

如何使用GPU进行加速运算?

使用GPU进行加速运算方法主要有三大类:

  • 使用商业软件包

  • 使用开源或官方函数库

  • 自行编程CUDA

1、使用商业软件包

第一项种类繁多,其中又以有限元素分析领域最多,此领域相关计算包含流体力学分析、热传导分析、电磁场分析或应力分析等等应用。由于范围涵盖IC设计、建筑设计、甚至许多交通工具或化工厂也需通过这类软件进行仿真分析,故开发这类软件有很大的商业价值。

2、使用开源或官方函数库

NVIDIA官方常见的如矩阵计算函数库cuBLAS、频率分析函数库cuFFT、深度学习函数库cuDNN等等,但也可从如GitHub社群上搜寻。上述两项也可参考NVIDIA官方收录的「GPU-ACCELERATED APPLICATIONS」,内容已将各领域可使用GPU的软件或套件收录并提供简介,让开发者可容易找到合适的应用套件。

3、自行编程CUDA

第三项就必须通过程序语言进行CUDA撰写,不过依照程序语言不同,能够操控的自由度也不相同,其中较底层的程序语言C/C++或Fortran属于自由度最高的程序语言,可利用程序语言控制GPU计算,甚至可针对本机内存与GPU内存数据传输进行优化。其次则为Python,Python也是现今最主流进行人工智能应用开发的程序语言。实现的方式包含PyCuda或是使用Numba函数库,PyCuda的使用者还是需要在核心程序撰写CUDA C,当然其效能几乎也等同于撰写CUDA C的效能,而Numba则是通过装饰器(decorator)于函数声明,并使用函数签名(function signature)完成呼叫CUDA的设定。此外,Java、R、C#等也都可以支持CUDA,但都不如C/C++或Fortran直接。

2530c4f7ef598fe682679d145d3691d7.gif

海普森(Hipeson)——专注计算&助力科研

面向各大高校、科研院所、企事业单位,提供高性能计算产品解决方案

cf64671693850d486aa52192876c0ca6.png375d7cc467c34ee824beb90548b8cad3.png

a327e62f6c4836833eb0ee28d114aab7.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值