這些說明假定您正在Ubuntu 20.04上構建Popart。這些說明描述瞭如何安裝每個必需的依賴性。如果您是從現有的Ubuntu 20.04安裝開始的,則可能已經安裝了其中一些依賴關係。如果是這樣,請確保這些依賴項的版本與這些說明兼容。其他基於Linux的操作系統也可能起作用,但是軟件包名稱和包裝版本的包裝可能會有所不同。
如果尚未安裝系統,則需要在系統上安裝以下工具:
sudo apt-get install wget git -ysudo apt-get install python3-pip -y
ln -s /usr/bin/python3 /usr/bin/python注意:如果您在系統上安裝了Python 2.X,則可以忽略Symlink。
sudo apt-get install ninja-build -ysudo apt-get install pkg-config -y構建和運行POPART所需的所有python依賴性都可以在requirements.txt中找到。通過運行安裝它們
python3 -m pip install -r requirements.txt如果您想為Popart做出貢獻,則需要其他依賴性。這些在requirements/dev.txt中找到,可以通過運行:
python3 -m pip install -r requirements/dev.txtPOPART與系統上必須可用的許多庫進行編譯:
Ubuntu 20.04( spdlog-dev )中SPDLOG庫的版本與Popart不兼容。相反,您需要從源構建版本1.8.0。為此,在您選擇的目錄中,從SPDLog GitHub頁面下載源,並按照以下方式構建和安裝:
export SPDLOG_INSTALL_DIR= $( pwd ) /spdlog-1.8.0/install_dir/
git clone --branch v1.8.0 https://github.com/gabime/spdlog.git
cd spdlog && mkdir build && cd build
cmake .. -GNinja -DCMAKE_INSTALL_PREFIX= $SPDLOG_INSTALL_DIR && cmake --build . --target install注意:稍後,您需要SPDLOG_INSTALL_DIR的值。
Ubuntu 20.04( pybind11-dev )中PYBIND11庫的版本為2.4.3,與Popart不兼容。相反,您需要從源構建版本2.6.2。為此,在您選擇的目錄中,從Pybind Github頁面下載源,並按照以下方式構建和安裝:
export PYBIND11_INSTALL_DIR= $( pwd ) /pybind11-2.6.2/install_dir/
wget https://github.com/pybind/pybind11/archive/v2.6.2.tar.gz
tar xvfz v2.6.2.tar.gz
rm v2.6.2.tar.gz
pushd pybind11-2.6.2
mkdir build
mkdir install_dir
cd build
cmake ..
-DCMAKE_INSTALL_PREFIX= $PYBIND11_INSTALL_DIR
-GNinja
ninja
ninja install
popd注意:如果您希望用make而不是ninja構建,請刪除-DCMAKE_GENERATOR="Ninja"開關。
注意:稍後您需要PYBIND11_INSTALL_DIR的值。
有關更多信息,請參見:https://github.com/pybind/pybind11/blob/master/docs/compiling.rst。
Ubuntu 20.04( libboost-dev )中的Boost庫為1.71.1,與Popart不兼容。相反,您必須從源構建版本1.80.0。為此,在您選擇的目錄中,從Boost下載頁面下載源,並按以下方式構建和安裝:
export BOOST_INSTALL_DIR= $( pwd ) /boost_1_80_0/install_dir/
wget https://boostorg.jfrog.io/artifactory/main/release/1.70.0/source/boost_1_80_0.tar.gz
tar xvfz boost_1_80_0.tar.gz
rm boost_1_80_0.tar.gz
pushd boost_1_80_0
mkdir install_dir
./bootstrap.sh --prefix= $BOOST_INSTALL_DIR
./b2 -j8 link=static runtime-link=static --abbreviate-paths variant=release toolset=gcc " cxxflags= -fno-semantic-interposition -fPIC " cxxstd=14 --with-test --with-system --with-filesystem --with-program_options --with-graph --with-random install
popd注意: -j8開關用於減少最多8個線程構建的構建時間。
注意:稍後您需要BOOST_INSTALL_DIR的值。
有關更多信息,請參見:https://www.boost.org/doc/libs/1_80_0/more/getting_started/unix-variants.html。
onnx庫還需要從源頭編譯。為此,在您選擇的目錄中,從ONNX GitHub頁面下載源,並按照以下方式構建和安裝:
export ONNX_INSTALL_DIR= $( pwd ) /onnx-1.6.0/install_dir/
wget https://github.com/onnx/onnx/archive/v1.6.0.tar.gz
tar xvfz v1.6.0.tar.gz
rm v1.6.0.tar.gz
pushd onnx-1.6.0
mkdir install_dir
cmake ..
-DONNX_ML=0
-DProtobuf_PROTOC_EXECUTABLE= $PROTOBUF_INSTALL_DIR /bin/protoc
-DCMAKE_INSTALL_PREFIX= $ONNX_INSTALL_DIR
make -j8
make install
popd注意: -j8開關用於減少最多8個線程構建的構建時間。
注意:稍後您需要ONNX_INSTALL_DIR的值。
有關更多信息,請參見:https://github.com/onnx/onnx。
可以從CapnProto下載頁面下載CapnProto版本。在您選擇的目錄中,下載和安裝如下:
export CAPNPROTO_INSTALL_DIR= $( pwd ) /capnproto-0.7.0/install_dir/
wget https://capnproto.org/capnproto-c++-0.7.0.tar.gz
tar xvfz capnproto-c++-0.7.0.tar.gz
rm capnproto-c++-0.7.0.tar.gz
pushd capnproto-c++-0.7.0
./configure --prefix= $CAPNPROTO_INSTALL_DIR
make -j8 check
make install
popd注意: -j8開關用於通過最多8個線程測試來減少測試時間。
注意:稍後您需要CAPNPROTO_INSTALL_DIR的值
有關更多信息,請參見:https://capnproto.org/install.html
可以從trompeloeil github頁面下載trompeloeil。在您選擇的目錄中,下載和安裝如下:
export TROMPELOEIL_INSTALL_DIR= $( pwd ) /trompeloeil-35/install_dir/
wget https://github.com/rollbear/trompeloeil/archive/refs/tags/v35.tar.gz
tar xvfz v35.tar.gz
rm v35.tar.gz
pushd trompeloeil-35
mkdir build ; cd build
cmake .. -DCMAKE_INSTALL_PREFIX= $TROMPELOEIL_INSTALL_DIR
cmake --build . --target install
popd 您可以在公共GitHub存儲庫中查看適當目錄中的GraphCore的Proprithms庫,並按照以下方式安裝它:
export POPRITHMS_INSTALL_DIR= $( pwd ) /poprithms/install_dir/
git clone https://github.com/graphcore/poprithms.git
pushd poprithms
mkdir build ; cd build ;
cmake ..
-DBOOST_ROOT= $BOOST_INSTALL_DIR
-DCMAKE_INSTALL_PREFIX= $POPRITHMS_INSTALL_DIR
-DCMAKE_GENERATOR= " Ninja "
ninja
ninja install
popd注意:如果您希望用make而不是ninja構建,請刪除-DCMAKE_GENERATOR="Ninja"開關。
注意:可以使用CCACHE進一步加速構建。
注意:稍後,您將需要POPRITHMS_INSTALL_DIR的值。
有關更多信息,請參見:https://github.com/graphcore/pprithms。
要獲取Poplar SDK,您需要註冊以訪問GraphCore的支持門戶。訪問權限後,您可以從支持門戶下載最新的Ubuntu 18.04,在合適的目錄中拆開。在本文檔的其餘部分中,指令假設您將環境變量POPLAR_INSTALL_DIR指向poplar被打開包裝的目錄。請注意,Poplar SDK不僅包含Poplar,您還必須將變量專門指向一個名為poplar-ubuntu_18_04-xxxxx子目錄。
有關更多信息,請參見:https://www.graphcore.ai/developer。
請注意,僅支持Ubuntu 20.04用於外部構建Popart。
要構建POPART,請在您查看存儲庫的目錄中運行以下命令:
export POPART_INSTALL_DIR= $( pwd ) /popart/install_dir/
export PKG_CONFIG_PATH= " $CAPNPROTO_INSTALL_DIR /lib/pkgconfig: $PKG_CONFIG_PATH "
git clone https://github.com/graphcore/popart.git
push popart
mkdir build ; cd build ;
cmake ..
-DBOOST_ROOT= $BOOST_INSTALL_DIR
-DCapnProto_ROOT= $CAPNPROTO_INSTALL_DIR
-DONNX_ROOT= $ONNX_INSTALL_DIR
-DPOPLAR_INSTALL_DIR= $POPLAR_INSTALL_DIR
-Dpoprithms_ROOT= $POPRITHMS_INSTALL_DIR
-DProtobuf_ROOT= $PROTOBUF_INSTALL_DIR
-Dpybind11_ROOT= $PYBIND11_INSTALL_DIR
-Dspdlog_ROOT= $SPDLOG_INSTALL_DIR
-Dtrompeloeil_ROOT= $TROMPELOEIL_INSTALL_DIR
-DCMAKE_INSTALL_PREFIX= $POPART_INSTALL_DIR
-GNinja
ninja
ninja install
popd您可以使用CMAKE支持的任何方法將其指向依賴項。請參閱CMAKE文檔中的find_package文檔。我們選擇使用<verbatim pkg name>_ROOT變量指向軟件包安裝目錄。
棄用: <uppercase pkg name>_INSTALL_DIR變量,除了POPLAR_INSTALL_DIR ,已被棄用,並將在以後的版本中刪除。
注意:其他CMAKE開關可用:
-DPOPART_BUILD_TESTING=0可用於避免編譯Popart測試的開關。-DPOPART_STRICT_COMPARATOR_CHECKS=1比較指針容器時檢查nullptr和無效的指針。注意:如果您更喜歡用make而不是ninja建造,請刪除-GNinja開關。
注意:可以使用CCACHE進一步加速構建。
注意:Capnproto的CMake導出只需包裝PKG-Config即可。設置了PKG_Config_path,以便告訴PKG-Config在哪裡可以找到capnproto。
Gragrabore的示例存儲庫中有許多高級POPART應用程序可在GitHub上提供。有關使用POPART和POPXL實現的示例的完整列表,請參見Readme
該代碼是在MIT許可下提供的,請參見許可證文件。
該項目包括以下派生工作:tensorflow,https://github.com/tensorflow/tensorflow/
版權所有2017 TensorFlow作者。版權所有。
根據Apache許可證(版本2.0(“許可”)獲得許可;除了符合許可外,您不得使用此文件。您可以在
http://www.apache.org/licenses/LICENSE-2.0
除非適用法律要求或以書面形式同意,否則根據許可證分配的軟件是按照“原樣”分發的,沒有任何明示或暗示的任何形式的保證或條件。請參閱許可證,以獲取執行許可條款和限制的特定語言。
相關文件:
tests/integration/optimizer_tests/rmsprop_update_numpy.py該項目包括以下衍生作品:llvm項目,http://llvm.org/doxygen/machineoutliner_8cpp_source.html
根據Apache許可證(版本2.0(“許可”)獲得許可;除了符合許可外,您不得使用此文件。您可以在
http://www.apache.org/licenses/license-2.0
除非適用法律要求或以書面形式同意,否則根據許可證分配的軟件是按照“原樣”分發的,沒有任何明示或暗示的任何形式的保證或條件。請參閱許可證,以獲取執行許可條款和限制的特定語言。
相關文件:
willow/src/subgraph/suffixtree.cpp該項目包括以下衍生作品:pybind11_mkdoc,https://github.com/pybind/pybind/pybind11_mkdoc
PYBIND11_MKDOC已獲得以下MIT許可證的許可:
麻省理工學院許可證(MIT)
版權(C)2020 Wenzel Jakob
特此免費授予任何獲得此軟件副本和相關文檔文件(“軟件”)的人,以無限制處理該軟件,包括無限制,使用,複製,修改,合併的權利,發布,分發,分佈和/或出售該軟件的副本,並允許提供該軟件的人,但要遵守以下條件:
上述版權通知和此許可通知應包含在軟件的所有副本或大量部分中。
該軟件是“原樣”提供的,沒有任何形式的明示或暗示保證,包括但不限於適銷性,特定目的的適用性和非侵權的保證。 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE軟體.
相關文件:
scripts/pybind11_mkdoc/該項目包括以下衍生作品:onnx,https://github.com/onnx/onnx
ONNX已根據以下MIT許可獲得許可:
麻省理工學院許可證
版權(c)ONNX項目貢獻了保留所有權利。
特此免費授予任何獲得此軟件副本和相關文檔文件(“軟件”)的人,以無限制處理該軟件,包括無限制,使用,複製,修改,合併的權利,發布,分發,分佈和/或出售該軟件的副本,並允許提供該軟件的人,但要遵守以下條件:
上述版權通知和此許可通知應包含在軟件的所有副本或大量部分中。
該軟件是“原樣”提供的,沒有任何形式的明示或暗示保證,包括但不限於適銷性,特定目的的適用性和非侵權的保證。 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE軟體.
相關文件:
tests/integration/operators_test/rnn_helper.pytests/integration/operators_test/gru_test.pytests/integration/operators_test/lstm_test.py該項目包括以下衍生作品:可選 - lite,https://github.com/martinmoene/optional-lite
版權(C)2014-2018 Martin Moene
Boost軟件許可證 - 版本1.0- 2003年8月17日
根據Boost軟件許可證(版本1.0)分發。
特此免費授予任何人或組織,獲取該軟件的副本以及本許可涵蓋的隨附文檔(“軟件”),以使用,複製,顯示,顯示,分發,執行,執行和傳輸軟件以及準備軟件的衍生作品,並允許提供該軟件的第三方,所有這些都符合以下內容:
該軟件中的版權通知和整個聲明,包括上述許可證授予,此限制和以下免責聲明,必須全部或部分包含軟件的所有副本,以及該軟件的所有衍生作品,除非這樣副本或衍生作品僅以源語言處理器生成的機器可確保對象代碼的形式。
該軟件是“原樣”提供的,沒有任何形式的明示或暗示保證,包括但不限於適銷性,特定目的的適用性,標題和不侵權的保證。在任何情況下,版權持有人或分發軟件的任何人都不應對任何損害或其他責任(無論是合同,侵權還是其他責任)責任,無論是由軟件,與軟件的使用或使用或其他軟件中的其他交易有關的責任。
相關文件:
willow/include/popart/vendored/optional.hpp該項目包括以下衍生作品:https://github.com/martinmoene/any-lite
版權(C)2016-2018 Martin Moene
Boost軟件許可證 - 版本1.0- 2003年8月17日
根據Boost軟件許可證(版本1.0)分發。
特此免費授予任何人或組織,獲取該軟件的副本以及本許可涵蓋的隨附文檔(“軟件”),以使用,複製,顯示,顯示,分發,執行,執行和傳輸軟件以及準備軟件的衍生作品,並允許提供該軟件的第三方,所有這些都符合以下內容:
該軟件中的版權通知和整個聲明,包括上述許可證授予,此限制和以下免責聲明,必須全部或部分包含軟件的所有副本,以及該軟件的所有衍生作品,除非這樣副本或衍生作品僅以源語言處理器生成的機器可確保對象代碼的形式。
該軟件是“原樣”提供的,沒有任何形式的明示或暗示保證,包括但不限於適銷性,特定目的的適用性,標題和不侵權的保證。在任何情況下,版權持有人或分發軟件的任何人都不應對任何損害或其他責任(無論是合同,侵權還是其他責任)責任,無論是由軟件,與軟件的使用或使用或其他軟件中的其他交易有關的責任。
相關文件:
willow/include/popart/vendored/anylite.hpp