找回密码
 注册
关于网站域名变更的通知
查看: 181|回复: 1
打印 上一主题 下一主题

转——从GPU程序员的角度谈谈使用体验

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-17 14:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
转——从GPU程序员的角度谈谈使用体验

: c$ ^7 _3 ?: h! e7 L2 d4 t4 g5 z说起GPU,大家第一反应就是打游戏。是的,GPU全称是Graphics Processing Unit,即图形处理单元,是计算机系统中专门负责图形图像绘制的硬件加速器。在没有GPU之前,计算机上显示图形界面是非常昂贵的,因为需要CPU做大量重复性的工作。
4 M& c: a1 z6 A) p9 j* r( |' Z4 y8 ^# _0 b
随着GPU的进一步发展,计算能力与日俱增,远远超越了同时代的CPU,于是很多学者提出了利用GPU进行通用计算的想法(GPGPU),后面经过GPU厂家的合纵连横,最终形成了以CUDA为代表的统一着色器架构,可以由用户控制GPU进行图形图像之外的通用并行计算。
2 {7 n- k& L5 S" e% C; G9 L9 K, ^
0 U6 R& k4 E' _9 c8 f# WOpenCL则是更为通用的异构并行计算模型,不仅支持CPU + GPU的计算架构,还支持诸如多核CPU、CPU + DSP、CPU + FPGA等特定架构。
: Q. I$ i8 s9 h4 i2 D6 k+ l, Z6 b) e

5 {! S- f4 p- }* E! G" o. P% y& L! t
今天,我想从一个GPU程序员的角度谈谈这次使用Altera SoC的体验。2 V8 z- I0 X2 T

8 |& g( v2 S2 p2 h( z. W5 W
4 `- F; U! ~8 `$ i+ W3 t# C3 \# P: o" ?7 l9 C6 w0 a8 {& p# ~: h2 ]
作为GPU程序员,首先要熟悉一种GPU计算语言,我之前是从CUDA开始,后面接触了Open CL。从效率上看,CUDA远远超越OpenCL;但从可移植性上讲,OpenCL完虐CUDA,可以这么说,使用OpenCL开发的kernel程序,可以一字不改地运行在上面所述的CPU+GPU、多核CPU、CPU+DSP、CPU+FPGA等平台上。也就是说,真正做到了一次编写,处处运行(好像是Java的广告词)。随着硬件厂商如Intel, AMD,NVIDIA,ARM, Xilinx, Altera等对OpenCL的大力支持,后续性能方面也可能全面赶超CUDA。
; Z% L" }1 e' e* u5 t! L% ]3 c( H* L& I, I$ T- u; z
1 R3 ^; ~# u2 Z5 g
5 r. `9 M" }" ^/ X* ?- c$ U; v
我们从一个最常用的GEMM(矩阵乘)例子开始,分别在CPU + GPU平台、Altera SoC(ARM + FPGA)平台上运行同一个OpenCL程序。! |/ N9 s! B1 d( S' k5 K4 W
0 C1 q/ H  n2 Z4 e8 J* L1 D

/ d$ f4 d$ Y' M$ B
6 l8 G( X/ x* Z" y# ]$ r7 uOpenCL中,为了便于平台管理,提供了一系列API函数,可以便于用户在异构计算平台选择合适的设备。打开<CL/cl.h>就能看到这些API和详细的参数。在我的工程中,为了方便管理,采用C++面向对象的方式将这些API做了封装,掩盖了具体操作细节。  z& w. o! a1 f& w6 M

% ]; S3 ]8 N/ W
5 ^  c! K" [9 g: h) r
, g" P0 D( w, {+ {) ?在CPU + GPU平台上运行结果如下:5 C- I; V  J9 [; y+ ^3 p* }
1 J5 s/ H+ T3 `7 l- T

3 e, ~9 p, _5 m3 ~% `7 `! e" M; o0 w- G+ {& m- \. G

7 I; `" g4 y; b- r在Altera SoC上运行的结果如下:
  U$ q7 q5 U6 u6 ?3 N% Q% [; d' v% m2 H3 d1 }  H

; E# i! _  d7 g: @
2 E* {' }( @# W0 l# @$ V
2 B# @+ M# C. m5 f! n, I1 V8 J4 ~' @, a% W3 }+ P7 I' c% ]
从速度上来看,同样的参数,GPU(Tesla K80)大约需要0.034816ms,而FPGA需要7.1ms,前者速度是后者的203倍。差距如此之大,主要因为GPU的计算资源丰富(4992个浮点计算核心)、主频高(820MHz),当然成本也很高(taobao上单K80大约38000RMB,此外还需要服务器、主板、电源等配套设施),功耗也高(300W,不包括服务器本身功耗);而FPGA平台则具有速度与面积互换的灵活性,实现成本较低(以DE1-SoC为例,差不多1500RMB,不需要额外的配套设施)、功耗较低(不到40W,整机功耗)。' p" f- f& z% ^: L9 [3 K
+ N" I7 `! i# d

" b, U( h2 _5 _) k) i
2 m3 |  }  ~4 y: o, {; j
3 P" B* Q3 \6 u, R
) J9 r  ]& R* H) U通过这个例子可以看出,一个GPU程序员可以利用Altera提供的Open CL SDK灵活地将已有的程序迁移到FPGA上。
  Q& r' Z0 a/ ?+ ?! G6 f7 ]4 _/ [
- C- g9 T9 a* v  U  e& p5 J6 j当然,后续工作仍需针对FPGA平台做特定的裁剪以达到性能要求。- q8 S2 B5 }" |7 P7 E8 M" y

该用户从未签到

2#
发表于 2019-4-17 16:03 | 只看该作者
讲的很有深度 学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-1 06:02 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表