[問題] cuda 速度比原本 c 還要慢

作者: obelisk0114 (追風箏的孩子)   2016-12-12 07:35:56
開發平台(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 那邊寫不好
作者: hn12404988 (Willy)   2016-12-12 11:02:00
這是很常見的狀況,因為pci bus的來回要花時間
作者: damody (天亮damody)   2016-12-12 11:06:00
你都算float不如用1080 核心數多3倍這種卡不算double都是錢錢丟水溝
作者: opl164 (opl)   2016-12-12 11:49:00
cudaMallocHost配置的記憶體也是在cpu吧
作者: Caesar08 (Caesar)   2016-12-12 12:39:00
是在host的memory裡,不是在CPU

Links booklink

Contact Us: admin [ a t ] ucptt.com