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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
转——从GPU程序员的角度谈谈使用体验
5 F' g6 h. e+ A  J) J
说起GPU,大家第一反应就是打游戏。是的,GPU全称是Graphics Processing Unit,即图形处理单元,是计算机系统中专门负责图形图像绘制的硬件加速器。在没有GPU之前,计算机上显示图形界面是非常昂贵的,因为需要CPU做大量重复性的工作。' t/ W0 H  W+ L7 P( ?4 i% ]

' ^6 z( D+ _5 x) `. j随着GPU的进一步发展,计算能力与日俱增,远远超越了同时代的CPU,于是很多学者提出了利用GPU进行通用计算的想法(GPGPU),后面经过GPU厂家的合纵连横,最终形成了以CUDA为代表的统一着色器架构,可以由用户控制GPU进行图形图像之外的通用并行计算。
# _+ e( v. z6 Z; s
" `( J0 ^" n6 UOpenCL则是更为通用的异构并行计算模型,不仅支持CPU + GPU的计算架构,还支持诸如多核CPU、CPU + DSP、CPU + FPGA等特定架构。
2 ~8 A, j, }4 @! T
9 ^% ?- N3 h7 G- ?5 d' v' `/ E+ D7 `" R5 l  T, {
) O: `2 w6 n% ^4 ~& h3 A
今天,我想从一个GPU程序员的角度谈谈这次使用Altera SoC的体验。' d) W2 Z$ a1 ]( U3 [

" `+ O% E" I8 W4 q9 A+ t; L% d5 T, E) k" d

2 J( n, |, O  j& c作为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。9 l9 K8 d$ _7 O; ]/ x  ?7 w7 V
" N" h4 s7 y+ ?3 H+ p" H7 R! U

3 J8 A6 C4 l# I/ W! a
' S0 x+ k+ S4 b/ p$ P我们从一个最常用的GEMM(矩阵乘)例子开始,分别在CPU + GPU平台、Altera SoC(ARM + FPGA)平台上运行同一个OpenCL程序。
4 S0 [, S7 F4 V- w. E5 Z8 T4 V
8 O" z- L5 p2 P% a6 f& H: w, Z$ d; y4 D; M4 f5 g' n% P

7 D2 i% ?# v( ^. P& f' }# EOpenCL中,为了便于平台管理,提供了一系列API函数,可以便于用户在异构计算平台选择合适的设备。打开<CL/cl.h>就能看到这些API和详细的参数。在我的工程中,为了方便管理,采用C++面向对象的方式将这些API做了封装,掩盖了具体操作细节。- m, u/ x1 c$ [" n+ Q/ S

$ H$ U- P% f* M8 s3 y$ b9 N' L* |& ~/ V( |' \6 y$ r. R' ?

1 n9 i" \3 s( y, t在CPU + GPU平台上运行结果如下:. T0 {  W! V, w* Q  a! M* L: V, q. a
9 L+ X7 o6 W: A; E3 p4 s9 T
4 S# g5 L! P3 S, \; _& o9 V% q

6 Y: i3 r: ?0 x! c3 f& M
: S9 s( A/ R( K; [在Altera SoC上运行的结果如下:
; l# e8 g( ]+ f; C; h( J
( M2 i; |8 d. b* G; C% ~ # t  z6 {- _, {( k) n' A2 ?
2 `( X+ M/ c5 R/ A7 C
5 Q2 }6 \1 @. R2 i4 @) [
" \6 J& z: u  E# m/ _
从速度上来看,同样的参数,GPU(Tesla K80)大约需要0.034816ms,而FPGA需要7.1ms,前者速度是后者的203倍。差距如此之大,主要因为GPU的计算资源丰富(4992个浮点计算核心)、主频高(820MHz),当然成本也很高(taobao上单K80大约38000RMB,此外还需要服务器、主板、电源等配套设施),功耗也高(300W,不包括服务器本身功耗);而FPGA平台则具有速度与面积互换的灵活性,实现成本较低(以DE1-SoC为例,差不多1500RMB,不需要额外的配套设施)、功耗较低(不到40W,整机功耗)。) P8 E7 a4 H% |  W$ `* M

. b3 R3 F; y1 r6 Y) s& S% M$ f- H" S& f. g) D

* m0 f" D3 n: Z
6 `: y  F9 n" f6 |# z& C" U, o. t+ J, ?$ a" @& C- i
通过这个例子可以看出,一个GPU程序员可以利用Altera提供的Open CL SDK灵活地将已有的程序迁移到FPGA上。. N# f$ u$ S* E* O8 k+ \3 |

: X) Q  i+ ^0 k: g7 u9 V当然,后续工作仍需针对FPGA平台做特定的裁剪以达到性能要求。
. w% e  i) i3 y# i6 Z" p% \$ x

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 03:26 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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