Re: [問題] 同程式 CUDA核心數量與速度問題

作者: icbruce (justlikethis)   2014-11-13 15:01:45
※ 引述《k387259 (台灣李宏感)》之銘言:
: 大家好
: 想請問cuda核心數量與運算處理速度的差異
: 我在網路上有抓到一隻程式
: 目前也感覺他把平行化處理的很好
: 用了兩張卡測試(用CUDA-Z看的)
: GTX760 CUDA核心1152 處理速度1084M Hz
: Quadro K5000 CUDA核心1536 處理速度740M Hz
: 在K5000上"明顯"低於GTX760
: (K5000 FPS:30 GTX760 FPS:60)
: 處理速度的差異我知道
: 但想詢問核心數目的差異到底在哪
: 是GPU上運算部分可以平行化處理的東西更多嗎?
是!
就像是可以簡單想成總共有幾個人可以同時幫你做事。
: 但是我用CUDA-Z看thread和grid數量一樣
: 核心多/處理慢 跟 核心少/處理慢
: gpu運算的code內要怎麼處理會比較好呢?
CUDA Optimize 考量因素非常多,
在分配 thread block grid 上就必須要去看硬體的規格,
例如thread 要能整除一個 wrap同時執行的核心數(通常是32)、
block要多過那張卡上SM的數量,讓CUDA運算可以滿載。
記憶體的部分也非常重要
GPU上的記憶體,分為Global memory, share memory, register memory 等 (不懂就查)
你怎麼把你的要用的擺在相對應的記憶體區塊,
如果想要更快,可以考慮memory alignment 、memory coalesce
一般而言,你如果能把你要運算的資料一口氣放入share memory裡面,
避免在運算過程中 access global memory 這樣是最完美的。
也可以考慮stream (overlap).
如果不想要那麼麻煩的寫CUDA,也可以看看OpenACC,就像openmp一樣地去加#就行了。
加油!
作者: k387259 (台灣李宏感)   2014-11-13 16:52:00
stream的方法和官方文件有用過 memory這塊處理沒什麼問題關於卡上面SM的數量指的就是CUDA核心數量還是規格寫的block最大數量呢?還是你指的是compute capability 3.0之類的東西?http://en.wikipedia.org/wiki/CUDA上面的哪一項呢? 感謝解答
作者: icbruce (justlikethis)   2014-11-14 15:13:00
http://ppt.cc/wU5Q第六頁,kelper共有15個SMX
作者: iHakka (iHakka)   2014-11-14 20:52:00
是GK110晶片有15個SMX,不是kepler架構都有15個SMX
作者: k387259 (台灣李宏感)   2014-11-14 20:53:00
所以要去查那個該顯卡晶片有幾個SMX嗎?找了一下網頁 都只有表格顯示該顯卡thread數量等數據http://ppt.cc/P7g~像該網址提到6 SMX processors應該就是6個沒錯了吧
作者: iHakka (iHakka)   2014-11-14 20:59:00
15個SMX是前期,GK110到後期才有完整解封印的卡CUDA6.5搭配這世代的顯示卡寫程式不用顧慮這麼多讀官方手冊放開心去寫就好了,效能都不致於太差SM多只是你的卡比較高級裝的下比較多核心跟你怎麼寫無關
作者: k387259 (台灣李宏感)   2014-11-14 22:13:00
喔喔,感謝!因為研究關係想發揮顯卡最強效能
作者: icbruce (justlikethis)   2014-11-14 22:14:00
恩恩,其實單純寫很容易,我之前笨笨的就只有用一個block速度就很慢,之後才知道block要開多一點,讓cuda自己排程

Links booklink

Contact Us: admin [ a t ] ucptt.com