Re: [問題] 請問各位利用CUDA做平行化加速的問題

看板PLT (程式語言與理論)作者 (-858993460)時間13年前 (2011/07/03 04:51), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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

07/12 00:22, , 1F
同意演算法才是關鍵,擁有再快得硬體卻沒有辦法有效平行
07/12 00:22, 1F

07/12 00:23, , 2F
也沒有用,搞不好會更差喔!!因為還是要付出一些成本
07/12 00:23, 2F
文章代碼(AID): #1E3uIwOL (PLT)
文章代碼(AID): #1E3uIwOL (PLT)