最近要在用crnn,跑的pytorch模型,本来在gpu跑的好好的,但是后来由于各种原因,需要在cpu上跑,才发现cpu上跑的是真的慢,后来发现了mkldnn这个东西,这是intel开发的开源项目,就是针对cpu上运行神经网络做了一些并行优化。
用了以后,大概速度快了7,8倍吧,效果还是比较明显的。
mkldnn的github链接: https://github.com/intel/mkl-dnn
安装过程基本没发现太多问题,按照README上一步一步走就行了:
git clone https://github.com/intel/mkl-dnn.git
cd scripts && ./prepare_mkl.sh && cd ..
mkdir -p build && cd build && cmake $CMAKE_OPTIONS .. && make
make test
make doc
make install
编完以后,直接跑一下程序,并没有什么卵用……看来还需要一些步骤把mkldnn与pytorch “连接”起来。看了一下mkldnn,基本上就是提供了一个c++的借口和一些lib库,所以,要么pytorch已经做了相关处理,到时候只要添加个环境变量之类的就可以,要么就是我要重编pytorch,build工程的时候就把相关库一起编进去。找了找,没发现啥要添加的环境变量,就重编吧。
跑到一半会发现打印编译信息:
发现MKLDNN选项打开了,放心等就ok了~
编完以后就直接可以用了,至于其他工具,估计也是差不多的步骤,如果以后用到了,再补充吧~