[问题] 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