看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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 ▎ ●> ● ▌ ﹍﹍ 囧> 幹... ▲ ■┘ ▎ ■ ▋ ︶■ 〈﹀ ∥ ▁▁∥ ▎ ﹀〉▊ 〈\ ψcockroach727 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 71.95.52.50 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1481499363.A.633.html
hn12404988: 這是很常見的狀況,因為pci bus的來回要花時間 12/12 11:02
damody: 你都算float不如用1080 核心數多3倍 12/12 11:06
damody: 這種卡不算double都是錢錢丟水溝 12/12 11:07
學校 server 配的 因為原始 C code 用 float, 所以沒試過用 double
opl164: cudaMallocHost配置的記憶體也是在cpu吧 12/12 11:49
Caesar08: 是在host的memory裡,不是在CPU 12/12 12:39
※ 編輯: obelisk0114 (71.95.52.50), 12/12/2016 14:57:52