一、vulkan编译:
sudo apt-get install cmake git gcc g++ mesa-* libwayland-dev libxrandr-dev
sudo apt-get install libvulkan1 mesa-vulkan-drivers vulkan-utils libxcb-keysyms1-dev
sudo apt-get install libxcb1-dev libx11-dev
wget https://sdk.lunarg.com/sdk/download/1.2.162.1/linux/vulkansdk-linux-x86_64-1.2.162.1.tar.gz
mkdir vulkan
mv vulkansdk-linux-x86_64-1.2.162.1.tar.gz vulkan
cd vulkan
tar xf vulkansdk-linux-x86_64-1.2.162.1.tar.gz
# 下载github
cd 1.2.162.1/source/shaderc
python update_shaderc_sources.py
# 编译
cd 1.2.162.1
bash vulkansdk # 编译vulkan
source setup-env.sh # vulkan -> 系统环境变量
./x86_64/bin/vulkaninfo
可能出现问题:如果找不到python,解决办法如下:
cd到、usr/bin下面,查找python的版本,然后进行软连接。
ln -s /usr/bin/python3.6 /usr/bin/python
二、ncnn编译
mkdir build
cd build
cmake -DNCNN_VULKAN=ON ..
make -j8
make install
1、可能出现问题:fatal: not a git repository (or any of the parent directories): .git
原因:ncnn中glslang文件为空的,在cmake时git不能下载,所以需要手动下载glslang代码
wget https://codeload.github.com/KhronosGroup/glslang/zip/86ff4bca1ddc7e2262f119c16e7228d0efb67610
2、可能出现问题:
解决办法,将编译好opencv的lib和include文件放到、usr/local中的lib和include中
三、编译算法:
1、出现问题:
解决办法:添加 -lglslang -lshaderc_shared ,参考https://github.com/Tencent/ncnn/issues/3207
最终指令如下:
/usr/bin/g++ -o test_multi_cam_gpu main.cpp RrConfig.cpp WindNetPredictDetect_gpu.cpp -I ./
-I /home/mzd/project/ken/ncnn_build_2004_vulkan/include
-I /home/mzd/project/ken/ncnn_build_2004_vulkan/include/ncnn
-I /home/mzd/project/ken/ncnn_build_2004_vulkan/include/glslang
-I /home/mzd/project/ken/ncnn_build_2004_vulkan/include/glslang/Include
-I /home/mzd/project/ken/opencv_build_2004/include
-I /home/mzd/project/ken/opencv_build_2004/include/opencv
-I /home/mzd/project/ken/opencv_build_2004/include/opencv2
-I /home/mzd/project/ken/vulkan/1.2.162.1/x86_64/include
-I /home/mzd/project/ken/vulkan/1.2.162.1/x86_64/include/vulkan
-I /home/mzd/project/ken/vulkan/1.2.162.1/x86_64/include/glslang
-L /home/mzd/project/ken/opencv_build_2004/lib
-L /home/mzd/project/ken/ncnn_build_2004_vulkan/lib
-L /home/mzd/project/ken/vulkan/1.2.162.1/x86_64/lib
-lncnn -lglslang -lvulkan -lSPIRV -lGenericCodeGen -lMachineIndependent -lOGLCompiler -lopencv_imgcodecs -lopencv_video -lopencv_imgproc -lopencv_core -lopencv_highgui -lopencv_videoio -lgomp -lpthread -lstdc++ -fno-builtin -lshaderc_shared