年少的时光就是晃,用大把的时间彷徨,只用几个瞬间成长。 收藏本站
登陆 / 注册 搜索

阅读: 11.2K   回复: 3

为什么现在更多用的是GPU而不是CPU,如挖矿甚至破解密码

[复制链接]
小执念 古黑浩劫论坛大牛 2015-12-8 22:38 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员 五周年纪念
  我只想说就目前的计算机架构,GPU只能称作是小众。GPU作为后来者,出现的太晚了,计算机架构已经定型,不太可能撼动 Intel 的霸主地位,而且Intel 一定会借着先天优势打压其他竞争对手。
& W5 h% ^* m9 S& D; b( e
  E3 Q' @- o  j9 e* h
( |- B' Q+ w* p% x/ l" K% }  最近bitcoin被媒体炒作的太过了,出现在了公众的视野中。媒体写新闻的那群人只要是写点和技术沾边的文章,就能暴露他们的无知,倒霉的还是无辜的群众。我简单提一下为什么GPU只能算作是小众。$ S* t) X6 t$ o0 c. u  p; x
6 M3 d3 }( W! P5 L3 r# t$ T, n% I
' }. ^( B' `  \" [
  在计算机上运行的程序从性能的角度来说大致可分为三类:
% D) x% y& V& X  \: \9 L. ^  b. @
6 t1 d# G$ \, G" T+ [+ q
  Q) o+ [0 B  [) @; r# {: ^9 V, `  (1) I/O intensive;; @. D" a) U: |& {$ s+ l  h
  (2) Memory intensive " d2 x6 m2 u! }1 k" L' _8 p
  (3) Compute-intensive
9 c8 c5 ~1 B& h5 y' f; m7 r4 D% d' K' a

2 g9 d9 z2 n! Y# ?  (1)I/O intensive的程序其性能瓶颈是I/O,也就是说程序运行的大部分时间花在了硬盘读写/网络通信上,而I/O处在计算机体系结构金字塔的最底层,速度非常慢。& c0 y- M. i/ X1 A; S  s$ O( P

3 N/ y9 }' b8 t! n7 Y! V+ A" M
. b! m1 n% J9 u/ f  最近炒的很火的big data 讨论的就是这一类应用程序。几百TB 甚至到PB级别的数据往哪搁,只能放在硬盘上。一台机器容量太小CPU太少怎么办,搞几百台甚至上千台机器用网线连起来分布处理。所以这块全是I/O, 现在大的互联网公司不多搞几个上千节点的集群肯定撑不住。
: g9 k6 t& T8 }6 l1 U& q
; f- ^  C2 j. }! ]) g; O9 P4 N! [; h9 f- ?/ O, _7 c0 W/ F; _
  (2)Memory intensive的程序其性能瓶颈在内存访问,程序中有大量的随机访问内存的操作,但是基本没有I/O,  这类程序已经比第一类程序快一个数量级了,但是和寄存器的速度还是没法比。目前大部分应用程序都属于这类。个人电脑里装的的各种软件基本就是这类,如果有点I/O,  立刻就会非常得卡。3 r# g0 ^1 w" x- i
$ E) W( v8 R/ m* S1 m

3 Z1 Q2 c& g7 K( \% D  ]  以上提到的这两类程序的应用最广泛,涵盖了大部分有用的计算机软件,但遗憾的是GPU在这两块毫无用处, GPU只有在计算密集型的程序有些作用。I/O是瓶颈的程序,花在计算的时间可以忽略不计,再怎么用GPU加速也没用。 含有大量内存随机访问的程序也不适合在GPU上执行,大量的随机访问甚至可以使GPU的行为由并行变为串行。什么类型的程序适合在GPU上运行? + {: g5 x) z& Y7 o) F3 Q9 i7 s1 z6 _
# @1 i5 \+ d  m! p/ u+ O, w# Y

* I4 h2 h. Y3 O- R  (1)计算密集型的程序。所谓计算密集型(Compute-intensive)的程序,就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD, 也实在是太慢了。
5 F, ~# B8 p; K0 W1 M, X5 s! h' v( x+ g
, H0 a# A0 j; t0 n8 }1 W4 T: D
  (2)易于并行的程序。GPU其实是一种SIMD(Single Instruction Multiple Data)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情。满足以上两点,就可以用GPU做运算了。 不过你还得先用CUDA或者Open CL 把能在GPU上运行的程序写出来, 这也是很麻烦的,写一下就知道了。
/ l3 d! d- i, S! i, V3 R+ b  ?0 m' g! o* V- t& J+ _7 T, ^# [, A. z+ I- T/ i; S
5 T& F+ W4 h- B5 T6 O* W$ B! G* G, D
   而且GPU的架构比较特殊,要想写出高效率的程序,要花很多很多时间。我想说写GPU程序是一件很蛋疼的事情。GPU在某些地方很有用,但应用面比较窄,远远没有某公司声称的那么有用。
  W3 M. V! G/ P, @
) n0 \+ x- ]1 r
" Y, m7 e, Z7 w6 g. I9 S5 M  当今还是Intel的天下, 现在计算机的速度已经很快了,计算其实已经不是什么大问题。I/O才是最需要解决的问题。 记得曾经看过N家的GTC峰会,黄某人吹得神乎其神,连我都被感动了,多少多少T FLOPS的计算速度。 程序运行时间从100 秒 变成 1秒。' U3 T8 H6 ?1 f" W! ^+ |4 g" S
8 `: r# }/ `( |- R) v( M0 i7 i
( H# d- v$ _# z) o  v
  其实没多重要,你倒杯水的功夫就100秒了。运行时间从100天缩短到1天才是大贡献。 前者就是GPU做的事情,后者才是我们真正需要的。
/ J, J: z! l/ V8 K$ q, ]/ L
上一篇
下一篇
帖子热度 1.1万 ℃
小执念发帖时在路边捡到 1 个 金币,偷偷放进了口袋.

雾月 「出类拔萃」 2017-9-1 20:15 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

感谢分享~
左岸云烟 「出类拔萃」 2018-6-3 22:51 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

学海无涯,回头是岸!
那一缕微光 「龙战于野」 2018-6-13 06:29 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

有空一起交流一下
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

快速回复 返回列表