这些说明假定您正在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
特此免费授予任何获得此软件副本和相关文档文件(“软件”)的人,以无限制处理该软件,包括无限制,使用,复制,修改,合并的权利,发布,分发,分布和/或出售该软件的副本,并允许提供该软件的人,但要遵守以下条件:
上述版权通知和此许可通知应包含在软件的所有副本或大量部分中。
该软件是“原样”提供的,没有任何形式的明示或暗示保证,包括但不限于适销性,特定目的的适用性和非侵权的保证。在任何情况下,作者或版权持有人均不应对任何索赔,损害赔偿或其他责任责任,无论是在合同,侵权或其他方面的诉讼中,与软件或与软件或使用或其他交易有关的诉讼或其他责任软件。
相关文件:
scripts/pybind11_mkdoc/该项目包括以下衍生作品:onnx,https://github.com/onnx/onnx
ONNX已根据以下MIT许可获得许可:
麻省理工学院许可证
版权(c)ONNX项目贡献了保留所有权利。
特此免费授予任何获得此软件副本和相关文档文件(“软件”)的人,以无限制处理该软件,包括无限制,使用,复制,修改,合并的权利,发布,分发,分布和/或出售该软件的副本,并允许提供该软件的人,但要遵守以下条件:
上述版权通知和此许可通知应包含在软件的所有副本或大量部分中。
该软件是“原样”提供的,没有任何形式的明示或暗示保证,包括但不限于适销性,特定目的的适用性和非侵权的保证。在任何情况下,作者或版权持有人均不应对任何索赔,损害赔偿或其他责任责任,无论是在合同,侵权或其他方面的诉讼中,与软件或与软件或使用或其他交易有关的诉讼或其他责任软件。
相关文件:
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