作者LPH66 (-858993460)
看板PLT
标题Re: [问题] 请问各位利用CUDA做平行化加速的问题
时间Sun Jul 3 04:51:03 2011
※ 引述《a4g5i6sefben (a4g5i6)》之铭言:
: 不好意思,我想请问一下各位有使用过GPU平行化的程式(CUDA),
: 利用此功能能让我们的code加快多少倍
: 能请各位给我您所使用的
: GPU型号(例如Tesla C1060,C2050.C2070.....)
: code是计算什麽的(例如积分.解矩阵或积分.....)
: 用几个核心来跑code
: 来做参考(如果有一些小细节会些微影响跑的时间,那些可以不用理会)
: 在我的想法中,理论上用多少核心跑,我们所要平行化的部分就会加快多少,
: 但也要考虑电脑可能会delay,所以会延迟一下,因此我才想问实际是跑多快
: 我会问这个的原因是因为我是一个研究生,
: 我们实验室目前是用openmp加速,也就是利用CPU来加速,但CPU的核心数不会比GPU来的多,
: 假如用4个CPU跑积分最多才加速2~3.4倍,并不会完全增加4倍,我们实验室想买GPU,
: 现在还在评估阶段,但怕GPU的加快速度比CPU还来的差,目前没有机台可供我们测试,
: 因此来此板问各位用过GPU的大大,能让我回报我们教授,感谢各位的帮助
: P.S.假如各位有其他想法可以回复告知我,谢谢!!(我们实验室用的程式是FORTRAN)
你得要先知道一个东西叫 Amdahl's Law
它其实是个很简单的概念 你平行化能加多少速和你的演算法非常相关
如果你的演算法里只有 P 的部份是可以平行化的
而这些部份能加速 N 倍
那麽全体的总加速会只有 1/((1-P)+P/N) 倍
这个公式我相信你自己应该也能推得出来
它的意义在於
你的演算法的相依性严重决定你平行化能加多少速
如果你的演算法里只有 50% 能平行化
即使你把那 50% 的部份加速 20 倍
全体总加速还是只有 1/((1-0.5)+0.5/20) ≒ 1.9 倍而已
如果你能改进到平行化 80% 的部份
那麽即使平行的部份只有(相对)弱弱的 4 倍速
全体总加速依然有 1/((1-0.8)+0.8/4) = 2.5 倍
所以你在寻找更好的加速硬体的同时
你的演算法也要更能够利用平行化的优势才行
那这就要你对你们的演算法有所了解
看能不能够找到更多能够平行化的地方 充份运用平行计算的优势
这才是能够进一步减少你们的演算法的执行时间的方法
--
実琴:「
河野!你真的就这样被
物质慾望给吸引过去了吗?!」
亨:「只要
穿着女装摆出亲切的样子,所有必要花费就能
全免,似乎一点都不坏啊。」
実琴:「难道你没有
男人的尊严了吗?!」
亨:(断然道)「
没有。在
节衣缩食且
生活吃紧的
学生面前,
没有那种东西。」
--プリンセス・プリンセス 第二话
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.230.62
1F:推 allenbody:同意演算法才是关键,拥有再快得硬体却没有办法有效平行 07/12 00:22
2F:→ allenbody:也没有用,搞不好会更差喔!!因为还是要付出一些成本 07/12 00:23