开发平台(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 那边写不好