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

看板C_and_CPP作者 (追風箏的孩子)時間7年前 (2016/12/12 07:36), 7年前編輯推噓2(203)
留言5則, 4人參與, 最新討論串1/1
開發平台(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

12/12 11:02, , 1F
這是很常見的狀況,因為pci bus的來回要花時間
12/12 11:02, 1F

12/12 11:06, , 2F
你都算float不如用1080 核心數多3倍
12/12 11:06, 2F

12/12 11:07, , 3F
這種卡不算double都是錢錢丟水溝
12/12 11:07, 3F
學校 server 配的 因為原始 C code 用 float, 所以沒試過用 double

12/12 11:49, , 4F
cudaMallocHost配置的記憶體也是在cpu吧
12/12 11:49, 4F

12/12 12:39, , 5F
是在host的memory裡,不是在CPU
12/12 12:39, 5F
※ 編輯: obelisk0114 (71.95.52.50), 12/12/2016 14:57:52
文章代碼(AID): #1OJUBZOp (C_and_CPP)