Diese Anweisungen gehen davon aus, dass Sie Popart auf Ubuntu 20.04 bauen. Diese Anweisungen beschreiben, wie die erforderliche Abhängigkeit installiert wird. Wenn Sie mit einer vorhandenen Ubuntu 20.04 -Installation beginnen, haben Sie möglicherweise bereits einige dieser Abhängigkeiten installiert. Wenn ja, stellen Sie sicher, dass die Versionen dieser Abhängigkeiten mit diesen Anweisungen kompatibel sind. Andere Linux-basierte Betriebssysteme funktionieren möglicherweise ebenfalls, aber Paketamen und unterstützte Versionen von Paketen können variieren.
Sie benötigen die folgenden Tools, die auf Ihrem System installiert sind, wenn diese nicht bereits installiert sind:
sudo apt-get install wget git -ysudo apt-get install python3-pip -y
ln -s /usr/bin/python3 /usr/bin/pythonHinweis : Wenn Sie Python 2.x in Ihrem System installiert haben, können Sie den Symlink ignorieren.
sudo apt-get install ninja-build -ysudo apt-get install pkg-config -y Alle Python -Abhängigkeiten, die für den Aufbau und das Laufen von Popart erforderlich sind, finden Sie in requirements.txt . Installieren Sie sie durch Ausführen
python3 -m pip install -r requirements.txt Wenn Sie zu Popart beitragen möchten, sind für die Entwicklung zusätzliche Abhängigkeiten erforderlich. Diese finden sich in requirements/dev.txt und können durch Ausführen installiert werden:
python3 -m pip install -r requirements/dev.txtPopart Compiles für eine Reihe von Bibliotheken, die in Ihrem System verfügbar sein müssen:
Die Version der SPDLog-Bibliothek in Ubuntu 20.04 ( spdlog-dev ) ist nicht mit Popart kompatibel. Stattdessen müssen Sie Version 1.8.0 aus der Quelle erstellen. Laden Sie dazu in einem Verzeichnis Ihrer Wahl die Quelle von der SPDlog -Github -Seite herunter und erstellen und installieren Sie wie folgt:
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 Hinweis : Sie benötigen den Wert von SPDLOG_INSTALL_DIR später.
Die Version der Pybind11-Bibliothek in Ubuntu 20.04 ( pybind11-dev ) beträgt 2.4.3, was nicht mit Popart kompatibel ist. Stattdessen müssen Sie Version 2.6.2 aus Quelle erstellen. Laden Sie dazu in einem Verzeichnis Ihrer Wahl die Quelle von der Pybind Github -Seite herunter und erstellen und installieren Sie wie folgt:
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 Hinweis : Wenn Sie es vorziehen, mit make anstelle von ninja zu bauen, entfernen Sie den Switch -DCMAKE_GENERATOR="Ninja" .
Hinweis : Sie benötigen den Wert von PYBIND11_INSTALL_DIR später.
Weitere Informationen finden Sie unter: https://github.com/pybind/pybind11/blob/master/docs/compiling.rst.
Die Boost-Bibliothek in Ubuntu 20.04 ( libboost-dev ) beträgt 1,71.1, was nicht mit Popart kompatibel ist. Stattdessen müssen Sie Version 1.80.0 aus der Quelle erstellen. Laden Sie dazu in einem Verzeichnis Ihrer Wahl die Quelle von der Boost -Download -Seite herunter und erstellen und installieren Sie wie folgt:
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 HINWEIS : Der -j8 -Schalter wird verwendet, um die Bauzeiten zu verkürzen, indem sie mit bis zu 8 Fäden bauen.
Hinweis : Sie benötigen den Wert von BOOST_INSTALL_DIR später.
Weitere Informationen finden Sie unter: https://www.boost.org/doc/libs/1_80_0/more/getting_started/unix-variants.html.
Die OnNX -Bibliothek muss auch aus der Quelle zusammengestellt werden. Laden Sie dazu in einem Verzeichnis Ihrer Wahl die Quelle von der ONNX -GitHub -Seite herunter und erstellen und installieren Sie wie folgt:
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 HINWEIS : Der -j8 -Schalter wird verwendet, um die Bauzeiten zu verkürzen, indem sie mit bis zu 8 Fäden bauen.
Hinweis : Sie benötigen den Wert von ONNX_INSTALL_DIR später.
Weitere Informationen finden Sie unter: https://github.com/onnx/onnx.
CapnProto -Veröffentlichungen können von der CapnProto -Download -Seite heruntergeladen werden. Download und installieren Sie in einem Verzeichnis Ihrer Wahl wie folgt:
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 Hinweis : Der -j8 -Schalter wird verwendet, um die Testzeiten durch Testen mit bis zu 8 Threads zu reduzieren.
Hinweis : Sie benötigen den Wert von CAPNPROTO_INSTALL_DIR später
Weitere Informationen finden Sie unter: https://capnproto.org/install.html
Trompeloeil kann von der Trompeloeil Github -Seite heruntergeladen werden. Download und installieren Sie in einem Verzeichnis Ihrer Wahl wie folgt:
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 Sie können die Poprithmen -Bibliothek von GraphCore in einem geeigneten Verzeichnis aus dem öffentlichen Github -Repository wie folgt installieren:
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 Hinweis : Wenn Sie es vorziehen, mit make anstelle von ninja zu bauen, entfernen Sie den Switch -DCMAKE_GENERATOR="Ninja" .
Hinweis : Builds können mithilfe von CCACHE weiter beschleunigt werden.
Hinweis : Sie benötigen den Wert von POPRITHMS_INSTALL_DIR später.
Weitere Informationen finden Sie unter: https://github.com/graphcore/poprithmen.
Um das Poplar SDK zu erhalten, müssen Sie sich für den Zugriff auf das Support -Portal von GraphCore registrieren. Sobald Sie Zugriff haben, können Sie den neuesten Ubuntu 18.04 aus dem Support -Portal herunterladen, und packen Sie es in einem geeigneten Verzeichnis aus. Für den Rest dieses Dokuments gehen die Anweisungen davon aus, dass Sie eine Umgebungsvariable POPLAR_INSTALL_DIR festgelegt haben, um auf das Verzeichnis zu verweisen, in dem Poplar ausgepackt ist. Beachten Sie, dass der Poplar SDK mehr als nur Poplar enthält und Sie die Variable speziell auf ein Unterverzeichnis namens poplar-ubuntu_18_04-xxxxx richten müssen.
Weitere Informationen finden Sie unter: https://www.graphcore.ai/developer.
Beachten Sie, dass nur Ubuntu 20.04 zum Aufbau von Popart extern unterstützt wird.
Führen Sie zum Erstellen von Popart die folgenden Befehle im Verzeichnis aus, in dem Sie das Repository ausprobiert haben:
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 Sie können jede von CMake unterstützte Methode verwenden, um sie auf Abhängigkeiten zu verweisen. Siehe die Dokumentation find_package in der CMake -Dokumentation. Wir haben beschlossen <verbatim pkg name>_ROOT -Variablen zu verwenden, die auf das Verzeichnis der Paketinstallation hinweisen.
Abschaltung : <uppercase pkg name>_INSTALL_DIR Variablen, mit Ausnahme POPLAR_INSTALL_DIR , wurden veraltet und werden in einer zukünftigen Veröffentlichung entfernt.
Hinweis : Andere CMake -Switches sind verfügbar:
-DPOPART_BUILD_TESTING=0 - Switch mit dem verwendet werden kann, um das Kompilieren von Popart -Tests zu vermeiden.-DPOPART_STRICT_COMPARATOR_CHECKS=1 - Überprüfen Sie, ob nullptr und ungültige Zeiger beim Vergleich von Containern von Zeigern prüfen. Hinweis : Wenn Sie es vorziehen, mit make anstelle von ninja zu bauen, entfernen Sie den -GNinja -Schalter.
Hinweis : Builds können mithilfe von CCACHE weiter beschleunigt werden.
Hinweis : Der CMake-Export von CapnProto wickelt einfach die PKG-Konfiguration. PKG_CONFIG_PATH wird eingestellt, um PKG-Config zu mitteilen, wo Capnproto findet.
In GraphCore gibt es eine Reihe erweiterter Popart -Anwendungen im Beispiel -Repository von GraphCore auf GitHub. In der Readme finden Sie eine vollständige Liste der Beispiele, die mit Popart und POPXL implementiert sind
Der Code wird unter der MIT -Lizenz bereitgestellt, siehe lizenz.txtdatei.
Das Projekt enthält abgeleitete Arbeiten aus Folgendes: TensorFlow, https://github.com/tensorflow/tensorflow/
Copyright 2017 Die Tensorflow -Autoren. Alle Rechte vorbehalten.
Lizenziert unter der Apache -Lizenz, Version 2.0 (der "Lizenz"); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Sie können eine Kopie der Lizenz bei erhalten
http://www.apache.org/licenses/LICENSE-2.0
Sofern nicht nach geltendem Recht oder schriftlich zu vereinbart wird, wird die im Rahmen der Lizenz verteilte Software auf "As is" -Basis ohne Gewährleistung oder Bedingungen jeglicher Art ausdrücklich oder impliziert verteilt. Siehe die Lizenz für die spezifischen Sprachberechtigungen und Einschränkungen im Rahmen der Lizenz.
Relevante Dateien:
tests/integration/optimizer_tests/rmsprop_update_numpy.pyDas Projekt enthält abgeleitete Arbeiten aus dem folgenden: LLVM -Projekt, http://llvm.org/doxygen/machineoutliner_8cpp_source.html
Lizenziert unter der Apache -Lizenz, Version 2.0 (der "Lizenz"); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Sie können eine Kopie der Lizenz bei erhalten
http://www.apache.org/licenses/license-2.0
Sofern nicht nach geltendem Recht oder schriftlich zu vereinbart wird, wird die im Rahmen der Lizenz verteilte Software auf "As is" -Basis ohne Gewährleistung oder Bedingungen jeglicher Art ausdrücklich oder impliziert verteilt. Siehe die Lizenz für die spezifischen Sprachberechtigungen und Einschränkungen im Rahmen der Lizenz.
Relevante Dateien:
willow/src/subgraph/suffixtree.cppDas Projekt enthält abgeleitete Arbeiten aus Folgendes: pybind11_mkdoc, https://github.com/pybind/pybind11_mkdoc
pybind11_mkdoc ist unter der folgenden MIT -Lizenz lizenziert:
Die MIT -Lizenz (MIT)
Copyright (C) 2020 Wenzel Jakob
Die Erlaubnis wird hiermit kostenlos an eine Person erteilt, die eine Kopie dieser Software und zugehörigen Dokumentationsdateien ("Software") erhält, um die Software ohne Einschränkung zu behandeln, einschließlich ohne Einschränkung der Rechte zu verwenden, zu kopieren, zu modifizieren, zu verschmelzen, verschmelzen , veröffentlichen, vertreiben, unterlizenzieren und/oder Kopien der Software verkaufen und Personen, denen die Software dazu bereitgestellt wird, unter den folgenden Bedingungen ermöglicht:
Die oben genannte Copyright -Mitteilung und diese Erlaubnisbekanntmachung müssen in alle Kopien oder wesentlichen Teile der Software enthalten sein.
Die Software wird "wie es ist" ohne Garantie jeglicher Art, ausdrücklich oder stillschweigend bereitgestellt, einschließlich, aber nicht beschränkt auf die Gewährleistung der Handelsfähigkeit, die Eignung für einen bestimmten Zweck und die Nichtverletzung. In keinem Fall haftet die Autoren oder Urheberrechtsinhaber für Ansprüche, Schäden oder andere Haftungen, sei es in einer Vertragsklage, unerlaubter Handlung oder anderweitig, aus oder im Zusammenhang mit der Software oder anderen Geschäften in der SOFTWARE.
Relevante Dateien:
scripts/pybind11_mkdoc/Das Projekt beinhaltet Ableitungsarbeiten aus Folgendes: Onnx, https://github.com/onnx/onnx
ONNX ist unter der folgenden MIT -Lizenz lizenziert:
MIT -Lizenz
Copyright (C) ONNX -Projekt Mitwirkenden Alle Rechte vorbehalten.
Die Erlaubnis wird hiermit kostenlos an eine Person erteilt, die eine Kopie dieser Software und zugehörigen Dokumentationsdateien ("Software") erhält, um die Software ohne Einschränkung zu behandeln, einschließlich ohne Einschränkung der Rechte zu verwenden, zu kopieren, zu modifizieren, zu verschmelzen, verschmelzen , veröffentlichen, vertreiben, unterlizenzieren und/oder Kopien der Software verkaufen und Personen, denen die Software dazu bereitgestellt wird, unter den folgenden Bedingungen ermöglicht:
Die oben genannte Copyright -Mitteilung und diese Erlaubnisbekanntmachung müssen in alle Kopien oder wesentlichen Teile der Software enthalten sein.
Die Software wird "wie es ist" ohne Garantie jeglicher Art, ausdrücklich oder stillschweigend bereitgestellt, einschließlich, aber nicht beschränkt auf die Gewährleistung der Handelsfähigkeit, die Eignung für einen bestimmten Zweck und die Nichtverletzung. In keinem Fall haftet die Autoren oder Urheberrechtsinhaber für Ansprüche, Schäden oder andere Haftungen, sei es in einer Vertragsklage, unerlaubter Handlung oder anderweitig, aus oder im Zusammenhang mit der Software oder anderen Geschäften in der SOFTWARE.
Relevante Dateien:
tests/integration/operators_test/rnn_helper.pytests/integration/operators_test/gru_test.pytests/integration/operators_test/lstm_test.pyDas Projekt enthält dieivativen Arbeiten aus folgenden
Copyright (C) 2014-2018 Martin Moene
Boost -Softwarelizenz - Version 1.0 - 17. August 2003
Unter der Boost -Software -Lizenz verteilt, Version 1.0.
Die Erlaubnis wird hiermit einer Person oder Organisation, die eine Kopie der Software und eine begleitende Dokumentation erhält, die diese Lizenz (die "Software") verwendet, reproduzieren, verteilt, ausführen und übertragen die Software und übertragen Sie die von dieser Lizenz (der "Software") erfasste Dokumentation kostenlos erteilt und übertragen Sie die Software und übertragen sie Die Vorbereitung der abgeleiteten Arbeiten der Software und um Dritte zu ermöglichen, denen die Software dazu bereitgestellt wird, unterliegen alle den folgenden:
Die Copyright -Mitteilungen in der Software, und diese gesamte Erklärung, einschließlich des oben genannten Lizenzzuschusss, dieser Einschränkung und der folgenden Haftungsausschluss, müssen in alle Kopien der Software ganz oder teilweise und alle abgeleiteten Arbeiten der Software aufgenommen werden, es sei denn Kopien oder Ableitungen sind ausschließlich in Form eines von einem Quellsprachprozessor generierten maschinellen ausführbaren Objektcode.
Die Software wird "wie es ist" ohne Garantie jeglicher Art, ausdrücklich oder stillschweigend bereitgestellt, einschließlich, aber nicht beschränkt auf die Gewährleistung der Marktgängigkeit, die Eignung für einen bestimmten Zweck, einen bestimmten Zweck und die Nichtverletzung. In keinem Fall sind die Inhaber des Urheberrechts oder Personen, die die Software verteilen, für Schäden oder andere Haftungen, sei es in Vertrag, unerlaubter Handlung oder anderweitig, aus oder im Zusammenhang mit der Software oder der Verwendung oder anderen Geschäften in der Software.
Relevante Dateien:
willow/include/popart/vendored/optional.hppDas Projekt enthält dieivativen Arbeiten aus Folgendes: Any-Lite, https://github.com/martinmoene/any-lite
Copyright (C) 2016-2018 Martin Moene
Boost -Softwarelizenz - Version 1.0 - 17. August 2003
Unter der Boost -Software -Lizenz verteilt, Version 1.0.
Die Erlaubnis wird hiermit einer Person oder Organisation, die eine Kopie der Software und eine begleitende Dokumentation erhält, die diese Lizenz (die "Software") verwendet, reproduzieren, verteilt, ausführen und übertragen die Software und übertragen Sie die von dieser Lizenz (der "Software") erfasste Dokumentation kostenlos erteilt und übertragen Sie die Software und übertragen sie Die Vorbereitung der abgeleiteten Arbeiten der Software und um Dritte zu ermöglichen, denen die Software dazu bereitgestellt wird, unterliegen alle den folgenden:
Die Copyright -Mitteilungen in der Software, und diese gesamte Erklärung, einschließlich des oben genannten Lizenzzuschusss, dieser Einschränkung und der folgenden Haftungsausschluss, müssen in alle Kopien der Software ganz oder teilweise und alle abgeleiteten Arbeiten der Software aufgenommen werden, es sei denn Kopien oder Ableitungen sind ausschließlich in Form eines von einem Quellsprachprozessor generierten maschinellen ausführbaren Objektcode.
Die Software wird "wie es ist" ohne Garantie jeglicher Art, ausdrücklich oder stillschweigend bereitgestellt, einschließlich, aber nicht beschränkt auf die Gewährleistung der Marktgängigkeit, die Eignung für einen bestimmten Zweck, einen bestimmten Zweck und die Nichtverletzung. In keinem Fall sind die Inhaber des Urheberrechts oder Personen, die die Software verteilen, für Schäden oder andere Haftungen, sei es in Vertrag, unerlaubter Handlung oder anderweitig, aus oder im Zusammenhang mit der Software oder der Verwendung oder anderen Geschäften in der Software.
Relevante Dateien:
willow/include/popart/vendored/anylite.hpp