作者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/cn.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