Ces instructions supposent que vous construisez Popart sur Ubuntu 20.04. Ces instructions décrivent comment installer chaque dépendance requise. Si vous partez d'une installation Ubuntu 20.04 existante, vous pouvez déjà installer certaines de ces dépendances. Si c'est le cas, veuillez vous assurer que les versions de ces dépendances sont compatibles avec ces instructions. D'autres systèmes d'exploitation basés sur Linux peuvent également fonctionner, mais les noms de packages et les versions prises en charge des packages peuvent varier.
Vous aurez besoin des outils suivants installés sur votre système s'ils ne sont pas déjà installés:
sudo apt-get install wget git -ysudo apt-get install python3-pip -y
ln -s /usr/bin/python3 /usr/bin/pythonRemarque : Si vous avez installé Python 2.x sur votre système, vous pouvez ignorer le lien de symbolique.
sudo apt-get install ninja-build -ysudo apt-get install pkg-config -y Toutes les dépendances Python nécessaires à la construction et à l'exécution du POPART peuvent être trouvées dans requirements.txt . Les installer en fonctionnant
python3 -m pip install -r requirements.txt Si vous souhaitez contribuer à Popart, des dépendances supplémentaires sont nécessaires pour le développement. Ceux-ci se trouvent dans requirements/dev.txt et peuvent être installés en fonctionnant:
python3 -m pip install -r requirements/dev.txtPopart compile contre un certain nombre de bibliothèques qui doivent être disponibles sur votre système:
La version de la bibliothèque SPDLOG dans Ubuntu 20.04 ( spdlog-dev ) n'est pas compatible avec Popart. Au lieu de cela, vous devez créer la version 1.8.0 depuis Source. Pour ce faire, dans un répertoire de votre choix, téléchargez la source à partir de la page SPDLOG GitHub et construisez et installez comme suit:
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 Remarque : vous aurez besoin de la valeur de SPDLOG_INSTALL_DIR plus tard.
La version de la bibliothèque Pybind11 dans Ubuntu 20.04 ( pybind11-dev ) est de 2.4.3, ce qui n'est pas compatible avec Popart. Au lieu de cela, vous devez créer la version 2.6.2 depuis Source. Pour ce faire, dans un répertoire de votre choix, téléchargez la source à partir de la page Pybind Github et construisez et installez comme suit:
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 Remarque : Si vous préférez la construction avec make au lieu de ninja , supprimez le commutateur -DCMAKE_GENERATOR="Ninja" .
Remarque : vous aurez besoin de la valeur de PYBIND11_INSTALL_DIR plus tard.
Pour plus d'informations, voir: https://github.com/pybind/pybind11/blob/master/docs/compiling.rst.
La bibliothèque Boost dans Ubuntu 20.04 ( libboost-dev ) est de 1,71.1, ce qui n'est pas compatible avec Popart. Au lieu de cela, vous devez créer la version 1.80.0 de Source. Pour ce faire, dans un répertoire de votre choix, téléchargez la source à partir de la page de téléchargement de boost et construisez et installez comme suit:
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 Remarque : Le commutateur -j8 est utilisé pour réduire les temps de construction en construisant avec jusqu'à 8 threads.
Remarque : vous aurez besoin de la valeur de BOOST_INSTALL_DIR plus tard.
Pour plus d'informations, voir: https://www.boost.org/doc/libs/1_80_0/more/getting_started/unix-variarits.html.
La bibliothèque ONNX doit également être compilée à partir de la source. Pour ce faire, dans un répertoire de votre choix, téléchargez la source à partir de la page ONNX GitHub et construisez et installez comme suit:
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 Remarque : Le commutateur -j8 est utilisé pour réduire les temps de construction en construisant avec jusqu'à 8 threads.
Remarque : vous aurez besoin de la valeur de ONNX_INSTALL_DIR plus tard.
Pour plus d'informations, voir: https://github.com/onnx/onnx.
Les versions de Capnproto peuvent être téléchargées à partir de la page de téléchargement Capnproto. Dans un répertoire de votre choix, téléchargez et installez comme suit:
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 Remarque : Le commutateur -j8 est utilisé pour réduire les temps de test en testant avec jusqu'à 8 threads.
Remarque : vous aurez besoin de la valeur de CAPNPROTO_INSTALL_DIR plus tard
Pour plus d'informations, voir: https://capnproto.org/install.html
Trompeloeil peut être téléchargé à partir de la page Trompeloeil Github. Dans un répertoire de votre choix, téléchargez et installez comme suit:
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 Vous pouvez vérifier la bibliothèque Poprithms de Graphcore dans un répertoire approprié du référentiel GitHub public et l'installer comme suit:
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 Remarque : Si vous préférez la construction avec make au lieu de ninja , supprimez le commutateur -DCMAKE_GENERATOR="Ninja" .
Remarque : les builds peuvent être accélérés davantage en utilisant CCACH.
Remarque : vous aurez besoin de la valeur de POPRITHMS_INSTALL_DIR plus tard.
Pour plus d'informations, voir: https://github.com/graphcore/poprithms.
Pour obtenir le SDK Poplar, vous devez vous inscrire à l'accès au portail de support de Graphcore. Une fois que vous avez accès, vous pouvez télécharger le dernier Ubuntu 18.04 à partir du portail d'assistance, déballer dans un répertoire approprié. Pour le reste de ce document, les instructions supposent que vous avez défini une variable d'environnement POPLAR_INSTALL_DIR pour pointer le répertoire où Poplar est déballé. Notez que le SDK Poplar contient plus que le peu de peu et vous devrez pointer la variable spécifiquement vers un sous-répertoire nommé quelque chose comme poplar-ubuntu_18_04-xxxxx .
Pour plus d'informations, voir: https://www.graphcore.ai/developer.
Notez que seul Ubuntu 20.04 est pris en charge pour construire un popart à l'extérieur.
Pour construire POPART, exécutez les commandes suivantes dans le répertoire où vous avez vérifié le référentiel:
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 Vous pouvez utiliser n'importe quelle méthode prise en charge par CMake pour le pointer des dépendances. Voir la documentation find_package dans la documentation CMake. Nous avons choisi d'utiliser <verbatim pkg name>_ROOT Variables qui pointent vers le répertoire d'installation du package.
Dépréciation : <uppercase pkg name>_INSTALL_DIR Les variables, à l'exception de POPLAR_INSTALL_DIR , ont été dépréciées et seront supprimées dans une version future.
Remarque : D'autres commutateurs Cmake sont disponibles:
-DPOPART_BUILD_TESTING=0 - commutateur qui peut être utilisé pour éviter de compiler le test de popart.-DPOPART_STRICT_COMPARATOR_CHECKS=1 - Vérifiez les pointeurs nullptr et non valides lors de la comparaison des conteneurs de pointeurs. Remarque : Si vous préférez la construction avec make au lieu de ninja , supprimez le commutateur -GNinja .
Remarque : les builds peuvent être accélérés davantage en utilisant CCACH.
Remarque : L'exportation CMake de CapnProto enveloppe simplement PKG-Config. PKG_CONFIG_PATH est défini afin de dire à PKG-Config où trouver Capnproto.
Il existe un certain nombre d'applications POPART avancées disponibles dans l'exemple de référentiel de Graphcore sur GitHub. Voir le ReadMe pour une liste complète des exemples implémentés à l'aide de Popart et Popxl
Le code est fourni en vertu de la licence MIT, voir le fichier License.txt.
Le projet comprend des travaux dérivés de ce qui suit: Tensorflow, https://github.com/tensorflow/tensorflow/
Copyright 2017 The TensorFlow Auteurs. Tous droits réservés.
Licencié sous la licence Apache, version 2.0 (la "licence"); Vous ne pouvez pas utiliser ce fichier sauf conforme à la licence. Vous pouvez obtenir une copie de la licence à
http://www.apache.org/licenses/LICENSE-2.0
Sauf exiger la loi applicable ou convenu par écrit, les logiciels distribués en vertu de la licence sont distribués sur une base «tel quel», sans garantie ou conditions d'aucune sorte, expresse ou implicite. Voir la licence pour la langue spécifique régissant les autorisations et les limitations sous la licence.
Fichiers pertinents:
tests/integration/optimizer_tests/rmsprop_update_numpy.pyLe projet comprend des travaux dérivés à partir des éléments suivants: LLVM Project, http://llvm.org/doxygen/machineoutliner_8cpp_source.html
Licencié sous la licence Apache, version 2.0 (la "licence"); Vous ne pouvez pas utiliser ce fichier sauf conforme à la licence. Vous pouvez obtenir une copie de la licence à
http://www.apache.org/licenses/license-2.0
Sauf exiger la loi applicable ou convenu par écrit, les logiciels distribués en vertu de la licence sont distribués sur une base «tel quel», sans garantie ou conditions d'aucune sorte, expresse ou implicite. Voir la licence pour la langue spécifique régissant les autorisations et les limitations sous la licence.
Fichiers pertinents:
willow/src/subgraph/suffixtree.cppLe projet comprend des travaux dérivés à partir des éléments suivants: pybind11_mkdoc, https://github.com/pybind/pybind11_mkdoc
PYBIND11_MKDOC est sous licence sous la licence MIT suivante:
La licence du MIT (MIT)
Copyright (C) 2020 Wenzel Jakob
L'autorisation est accordée gratuitement par la présente à toute personne qui obtient une copie de ce logiciel et des fichiers de documentation associés (le "logiciel"), pour traiter le logiciel sans restriction, y compris sans limiter les droits d'utilisation, de copier, de modifier, de fusionner , publier, distribuer, sous-licencier et / ou vendre des copies du logiciel, et pour permettre aux personnes à qui le logiciel est fourni pour le faire, sous réserve des conditions suivantes:
L'avis de droit d'auteur ci-dessus et le présent avis d'autorisation sont inclus dans toutes les copies ou des parties substantielles du logiciel.
Le logiciel est fourni "tel quel", sans garantie d'aucune sorte, express ou implicite, y compris, mais sans s'y limiter, les garanties de qualité marchande, d'adéquation à un usage particulier et de non-contrefaçon. En aucun cas, les auteurs ou les titulaires de droits d'auteur ne seront pas responsables de toute réclamation, dommage ou autre responsabilité, que ce soit dans une action de contrat, de délit ou autre, découlant de, hors du logiciel ou de l'utilisation ou d'autres transactions dans le LOGICIEL.
Fichiers pertinents:
scripts/pybind11_mkdoc/Le projet comprend des travaux dérivés à partir des éléments suivants: ONNX, https://github.com/onnx/onnx
ONNX est sous licence en vertu de la licence MIT suivante:
Licence MIT
Copyright (C) Contributeurs du projet ONNX Tous droits réservés.
L'autorisation est accordée gratuitement par la présente à toute personne qui obtient une copie de ce logiciel et des fichiers de documentation associés (le "logiciel"), pour traiter le logiciel sans restriction, y compris sans limiter les droits d'utilisation, de copier, de modifier, de fusionner , publier, distribuer, sous-licencier et / ou vendre des copies du logiciel, et pour permettre aux personnes à qui le logiciel est fourni pour le faire, sous réserve des conditions suivantes:
L'avis de droit d'auteur ci-dessus et le présent avis d'autorisation sont inclus dans toutes les copies ou des parties substantielles du logiciel.
Le logiciel est fourni "tel quel", sans garantie d'aucune sorte, express ou implicite, y compris, mais sans s'y limiter, les garanties de qualité marchande, d'adéquation à un usage particulier et de non-contrefaçon. En aucun cas, les auteurs ou les titulaires de droits d'auteur ne seront pas responsables de toute réclamation, dommage ou autre responsabilité, que ce soit dans une action de contrat, de délit ou autre, découlant de, hors du logiciel ou de l'utilisation ou d'autres transactions dans le LOGICIEL.
Fichiers pertinents:
tests/integration/operators_test/rnn_helper.pytests/integration/operators_test/gru_test.pytests/integration/operators_test/lstm_test.pyLe projet comprend des travaux dérivés à partir des éléments suivants: Facultatif-Lite, https://github.com/martinmoene/optional-lite
Copyright (C) 2014-2018 Martin Moene
Boost Licence du logiciel - Version 1.0 - 17 août 2003
Distribué sous la licence Software Boost, version 1.0.
L'autorisation est accordée, gratuitement, à toute personne ou organisation obtenant une copie du logiciel et la documentation d'accompagnement couverte par cette licence (le "logiciel") à utiliser, à reproduire, à afficher, à distribuer, à exécuter et à transmettre le logiciel, et pour préparer des travaux dérivés du logiciel et permettre des tiers à qui le logiciel est fourni pour le faire, tous soumis à ce qui suit:
Les avis du droit d'auteur dans le logiciel et cette déclaration entière, y compris la subvention de licence ci-dessus, cette restriction et la clause de non-responsabilité suivante, doivent être incluses dans toutes les copies du logiciel, en tout ou en partie, et toutes les œuvres dérivées du logiciel, sauf si telles Les copies ou les travaux dérivés se présentent uniquement sous la forme d'un code d'objet exécutable généré par une machine générée par un processeur de langue source.
Le logiciel est fourni "tel quel", sans garantie d'aucune sorte, express ou implicite, y compris, mais sans s'y limiter, les garanties de qualité marchande, d'adéquation à un usage particulier, de titre et de non-contrefaçon. En aucun cas, les titulaires de droits d'auteur ne seront pas responsables de tout dommage ou d'une autre responsabilité, que ce soit dans le contrat, le délit ou autrement, découlant de, hors du logiciel ou du logiciel ou de l'utilisation ou d'autres transactions dans le logiciel.
Fichiers pertinents:
willow/include/popart/vendored/optional.hppLe projet comprend des travaux dérivés à partir des éléments suivants: Any-Lite, https://github.com/martinmoene/any-lete
Copyright (c) 2016-2018 Martin Moene
Boost Licence du logiciel - Version 1.0 - 17 août 2003
Distribué sous la licence Software Boost, version 1.0.
L'autorisation est accordée, gratuitement, à toute personne ou organisation obtenant une copie du logiciel et la documentation d'accompagnement couverte par cette licence (le "logiciel") à utiliser, à reproduire, à afficher, à distribuer, à exécuter et à transmettre le logiciel, et pour préparer des travaux dérivés du logiciel et permettre des tiers à qui le logiciel est fourni pour le faire, tous soumis à ce qui suit:
Les avis du droit d'auteur dans le logiciel et cette déclaration entière, y compris la subvention de licence ci-dessus, cette restriction et la clause de non-responsabilité suivante, doivent être incluses dans toutes les copies du logiciel, en tout ou en partie, et toutes les œuvres dérivées du logiciel, sauf si telles Les copies ou les travaux dérivés se présentent uniquement sous la forme d'un code d'objet exécutable généré par une machine générée par un processeur de langue source.
Le logiciel est fourni "tel quel", sans garantie d'aucune sorte, express ou implicite, y compris, mais sans s'y limiter, les garanties de qualité marchande, d'adéquation à un usage particulier, de titre et de non-contrefaçon. En aucun cas, les titulaires de droits d'auteur ne seront pas responsables de tout dommage ou d'une autre responsabilité, que ce soit dans le contrat, le délit ou autrement, découlant de, hors du logiciel ou du logiciel ou de l'utilisation ou d'autres transactions du logiciel.
Fichiers pertinents:
willow/include/popart/vendored/anylite.hpp