ncnn vulkan
ncnn在1月20号提交了对Vulkan的支持,而且更新了benchmark对Vulkan的测试,我们本来尝试在ncnn中添加Opencl,看到支持Vulkan非常高兴,迫不及待想试试。
花了接近一天时间来完成benchmark,记录一下。系统: ubuntu 18.04
查看显卡信息,安装显卡驱动
参考这篇文章,作者写的非常详细,查询显卡和安装驱动。我的显卡是1050ti,按照参考文章推荐的自动安装,下载了nvidia-415驱动,安装成功后使用NVIDIA命令查看显卡详细信息。
nvidia-smi
下载Vulkan linux SDK
从官网下载对应的SDK,我下载的是 vulkansdk-linux-x86_64-1.1.97.0.tar.gz (110MB)
添加环境变量
这里需要注意,要添加两个变量:Vulkan_LIBRARY, Vulkan_INCLUDE_DIR,并且要把Vulkan_BIN路径添加到PATH中,否则会报错找不到gslangValidator
编译ncnn
参考ncnn的notes,需要在cmake命令后添加
-DNCNN_VULKAN=ON
需要注意的是,ncnn的CMakeLists里面默认是没开benchmark的,所以需要去掉注释,打开benchmark。
我的编译脚本如下:
##### linux host system with gcc/g++
mkdir -p build-host-gcc-linux
pushd build-host-gcc-linux
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host.gcc.toolchain.cmake -DNCNN_VULKAN=ON ..
make
make install
popd
运行benchmark
- 首先将模型*.param拷到/ncnn/build-host-gcc-linux/benchmark/目录
- chmod +x benchncnn
- 运行benchncnn
./benchncnn 1 1 0 0
- 四个参数分别是1)循环次数;2)线程数量;3)cpu绑定,0是使用所以cpu;4)gpu,注意如果你只有一个gpu,那么这里只能是0,写1会出现segment fault
结果对比
cpu结果
CPU信息
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 94
Model name: Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
Stepping: 3
CPU MHz: 831.675
CPU max MHz: 3600.0000
CPU min MHz: 800.0000
BogoMIPS: 6384.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 6144K
NUMA node0 CPU(s): 0-3
gpu结果
一个字总结: 优秀,感谢ncnn开发团队!