從OpenVINO Github原始碼編譯release 2021.2(ubuntu18.04 LTS)
前言:
最近由於工作中遇到的問題,需要自己編譯OpenVINO的原始碼,以下為本次的編譯記錄,總體還是比較順利的。
1. 上github拉取對應的分支:
git clone -b releases/2021/2 https://github.com/openvinotoolkit/openvino.git
有哪些分支可以在github上檢視到,本次我要編譯的版本是最新的2021.2,所以拉取的是這個版本。
2. 拉取完畢,便可以參考官方的文件進行編譯:
https://github.com/openvinotoolkit/openvino/wiki
比如我是在Ubuntu18.04上編譯的,對應的文件連結是:
3. 正式開始編譯:
第一步,clone子模組:
cd openvino
git submodule update --init –recursive
從執行的日誌看,是下載Openvino依賴的第三方子模組,比如mkl-dnn, gflags, gtest等
第二步,安裝編譯的依賴
chmod +x install_build_dependencies.sh ./install_build_dependencies.sh 等待指令碼執行完成,最終會顯示如下字樣,因為我以前就安裝過相關的依賴,所以顯示沒有需要更新的庫。
第三步,確定是否需要編譯對Intel整合顯示的支援。
OpenVINO支援用Intel的整合顯示作推理,在文件裡提到的”GPU”就是特指的整合顯示卡。如果希望支援集顯,就需要安裝OpenCL driver,對應的下載和安裝連結見:https://github.com/intel/compute-runtime/releases/tag/19.41.14441。如果不需要支援集顯,那麼要注意後面在用cmake生成makefile時要指定:-DENABLE_CLDNN=OFF,否則會編譯出錯。我需要用到集顯,所以就安裝了OpenCL driver.
第四步,確定是否需要開啟其它非預設的編譯選項
雖然官方把這一步放在了編譯命令的後頭,但我覺得應該一開始就決定好,比如為了方便除錯我會開啟:-DNGRAPH_DEBUG_ENABLE=ON
第五步,確定是否需要編譯python的wrapper
如果想使用python,那麼需要把-DENABLE_PYTHON=ON的編譯選項給指定上。這裡我把python的支援給打開了,加上的編譯選項如下:
-DENABLE_PYTHON=ON \
-DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
-DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so \
-DPYTHON_INCLUDE_DIR=/usr/include/python3.6
第六步,生成makefile,完整的命令如下:
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DNGRAPH_DEBUG_ENABLE=ON \
-DENABLE_PYTHON=ON \
-DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
-DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so \
-DPYTHON_INCLUDE_DIR=/usr/include/python3.6 ..
一切順利的話可以看到下面的的日誌:
第七步,開始編譯
make --jobs=$(nproc --all)
大概二十分鐘左右就編完了,能看到如下的日誌:
第八步,簡單驗證我們的編譯成果:
通過OpenVINO自帶的sample進行簡單的驗證:cmake --install . --prefix ~/Workspace/ov_install
這裡我成功安裝了,但後面的步驟也沒有去試,等試過了再更新。
小結:
得益於良好而規範的文件,整個編譯過程比較順利,大概花了半天時間就搞定了。
唯一需要注意的是:編譯python時,由於文件裡給出的是python3.7的配置,我是3.6,這裡費了一些功夫。