作者obelisk0114 (追風箏的孩子)
看板C_and_CPP
標題[問題] cuda 速度比原本 c 還要慢
時間Mon Dec 12 07:35:56 2016
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
nvcc
問題(Question):
用 cuda multiple stream 寫的程式跑的速度比 CPU 用 c code 還要慢好幾倍
餵入的資料(Input):
./backprop 16777216
程式碼(Code):(請善用置底文網頁, 記得排版)
https://github.com/r02941066/Question/blob/master/bpnn_layerforward
補充說明(Supplement):
bpnn_layerforward 裡面 #else 之後的部分是原先 C 的程式碼
上面 #ifdef 是改寫要用 GPU 執行的 host 部分
因為 n1 會是 16777216, 所以把那部分用 cuda 來跑, n2 則用 multiple stream
依據 n2 動態調整 stream 數量
in_d 是要餵給 cuda 的 conn[], 用 2D array 分別將數個 1D array 餵給每個 stream
in_temp 是預先複製好每個 stream 應該要的 1D array
out_d 和 out_h 是每個 stream 得到的 1D array,最後用 CPU 加總
in_d2 只用 1D array 是因為資料都一樣,所以只用一份
GPU: C2075
CPU: E5-2620
跑的結果 GPU 比 CPU 慢很多
我懷疑是 dynamic multiple stream 那邊寫不好
--
肝不好 ▁▁ ● ◤
肝若好
人生是黑白的 ▏ ◤
考卷是空白的
▏ ◤
、 ﹐
● ●b 囧 ▎ ●> ● ◤
▌ ﹍﹍ 0 ▊囧>
幹...
▲ ■┘ ■ ▎ ■ █◤ ▌ ㄏ▋ ︶■
〈﹀ ∥ ▁▁∥ ▎ ﹀〉◤
▋ ▊ 〈\
ψcockroach727
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 71.95.52.50
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1481499363.A.633.html
1F:推 hn12404988: 這是很常見的狀況,因為pci bus的來回要花時間 12/12 11:02
2F:推 damody: 你都算float不如用1080 核心數多3倍 12/12 11:06
3F:→ damody: 這種卡不算double都是錢錢丟水溝 12/12 11:07
學校 server 配的
因為原始 C code 用 float, 所以沒試過用 double
4F:→ opl164: cudaMallocHost配置的記憶體也是在cpu吧 12/12 11:49
5F:→ Caesar08: 是在host的memory裡,不是在CPU 12/12 12:39
※ 編輯: obelisk0114 (71.95.52.50), 12/12/2016 14:57:52