이 지침은 Ubuntu 20.04에서 Popart를 구축하고 있다고 가정합니다. 이 지침은 모든 필요한 종속성을 설치하는 방법을 설명합니다. 기존 우분투 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를 구축하고 실행하는 데 필요한 모든 파이썬 의존성은 requirements.txt 에서 찾을 수 있습니다 .txt. 실행하여 설치하십시오
python3 -m pip install -r requirements.txt Popart에 기여하려면 개발에 추가 의존성이 필요합니다. 이들은 requirements/dev.txt 에서 찾을 수 있으며 실행을 통해 설치할 수 있습니다.
python3 -m pip install -r requirements/dev.txtPopart는 시스템에서 사용할 수 있어야하는 여러 라이브러리에 대해 컴파일합니다.
우분투 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 참고 : ninja 대신 make 로 빌드를 선호하는 경우 -DCMAKE_GENERATOR="Ninja" 스위치를 제거하십시오.
참고 : 나중에 PYBIND11_INSTALL_DIR 의 값이 필요합니다.
자세한 내용은 https://github.com/pybind/pybind11/blob/master/docs/compiling.rst를 참조하십시오.
우분투 20.04 ( libboost-dev )의 부스트 라이브러리는 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은 Trompeloeil Github 페이지에서 다운로드 할 수 있습니다. 선택한 디렉토리에서 다음과 같이 다운로드 및 설치하십시오.
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 Public Github 저장소의 적절한 디렉토리에서 GraphCore의 Poprithms 라이브러리를 확인하고 다음과 같이 설치할 수 있습니다.
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 참고 : ninja 대신 make 로 빌드를 선호하는 경우 -DCMAKE_GENERATOR="Ninja" 스위치를 제거하십시오.
참고 : CCACHE를 사용하여 빌드를 추가로 가속화 할 수 있습니다.
참고 : 나중에 POPRITHMS_INSTALL_DIR 의 값이 필요합니다.
자세한 내용은 https://github.com/graphcore/poprithms를 참조하십시오.
Poplar SDK를 얻으려면 GraphCore의 지원 포털에 대한 액세스를 위해 등록해야합니다. 액세스가 있으면 지원 포털에서 최신 Ubuntu 18.04를 다운로드 할 수 있으며 적절한 디렉토리로 포장을 풀 수 있습니다. 이 문서의 나머지 부분에 대해, 지침은 환경 변수 POPLAR_INSTALL_DIR 설정하여 포플러가 포장되지 않은 디렉토리를 가리 키라고 가정합니다. 포플러 SDK에는 단순한 포플러 이상이 포함되어 있으며 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 및 유효하지 않은 포인터를 점검하십시오. 참고 : ninja 대신 make 로 빌드를 선호하는 경우 -GNinja 스위치를 제거하십시오.
참고 : CCACHE를 사용하여 빌드를 추가로 가속화 할 수 있습니다.
참고 : Capnproto의 CMAKE Export는 단순히 PKG-Config를 랩핑합니다. pkg_config_path는 pkg-config에 capnproto를 찾을 위치를 알려주기 위해 설정되었습니다.
GitHub의 GraphCore의 예제 저장소에는 여러 고급 Popart 응용 프로그램이 있습니다. Popart 및 POPXL을 사용하여 구현 된 전체 예 목록은 readme를 참조하십시오.
코드는 MIT 라이센스에 따라 제공되며 License.txt 파일을 참조하십시오.
이 프로젝트에는 다음에서 파생 된 작업이 포함되어 있습니다. Tensorflow, https://github.com/tensorflow/tensorflow/
Copyright 2017 Tensorflow 저자. 모든 권리 보유.
Apache 라이센스, 버전 2.0 ( "라이센스")에 따라 라이센스가 부여되었습니다. 라이센스를 준수하는 것 외에는이 파일을 사용할 수 없습니다. 라이센스 사본을 얻을 수 있습니다
http://www.apache.org/licenses/LICENSE-2.0
해당 법률에 의해 요구되거나 서면에 동의하지 않는 한, 라이센스에 따라 배포 된 소프트웨어는 명시 적 또는 묵시적 보증 또는 조건없이 "그대로"기준으로 배포됩니다. 라이센스에 따른 특정 언어 통치 권한 및 제한 사항에 대한 라이센스를 참조하십시오.
관련 파일 :
tests/integration/optimizer_tests/rmsprop_update_numpy.py이 프로젝트에는 다음과 같은 파생 상생 작업이 포함되어 있습니다.
Apache 라이센스, 버전 2.0 ( "라이센스")에 따라 라이센스가 부여되었습니다. 라이센스를 준수하는 것 외에는이 파일을 사용할 수 없습니다. 라이센스 사본을 얻을 수 있습니다
http://www.apache.org/licenses/license-2.0
해당 법률에 의해 요구되거나 서면에 동의하지 않는 한, 라이센스에 따라 배포 된 소프트웨어는 명시 적 또는 묵시적 보증 또는 조건없이 "그대로"기준으로 배포됩니다. 라이센스에 따른 특정 언어 통치 권한 및 제한 사항에 대한 라이센스를 참조하십시오.
관련 파일 :
willow/src/subgraph/suffixtree.cpp이 프로젝트에는 다음과 같은 파생물 작업이 포함되어 있습니다.
pybind11_mkdoc은 다음 MIT 라이센스에 따라 라이센스가 부여됩니다.
MIT 라이센스 (MIT)
저작권 (C) 2020 Wenzel Jakob
이에 따라이 소프트웨어 및 관련 문서 파일 ( "소프트웨어")의 사본을 얻는 사람에게 허가는 제한없이 소프트웨어를 처리 할 수있는 사람에게 무료로 제공됩니다. , 소프트웨어의 사본을 게시, 배포, 서브 리센스 및/또는 판매하고, 소프트웨어가 제공하도록하는 사람을 다음과 같은 조건에 따라 할 수 있도록합니다.
위의 저작권 통지 및이 권한 통지는 소프트웨어의 모든 사본 또는 실질적인 부분에 포함되어야합니다.
이 소프트웨어는 상업성, 특정 목적에 대한 적합성 및 비 침해에 대한 보증을 포함하여 명시 적 또는 묵시적 보증없이 "그대로"제공됩니다. 어떠한 경우에도 저자 또는 저작권 보유자는 계약, 불법 행위 또는 기타, 소프트웨어 또는 사용 또는 기타 거래와 관련하여 계약, 불법 행위 또는 기타의 행동에 관계없이 청구, 손해 또는 기타 책임에 대해 책임을지지 않아야합니다. 소프트웨어.
관련 파일 :
scripts/pybind11_mkdoc/이 프로젝트에는 다음과 같은 파생물 작업이 포함되어 있습니다. onnx, https://github.com/onnx/onnx
ONNX는 다음 MIT 라이센스에 따라 라이센스가 부여됩니다.
MIT 라이센스
저작권 (c) ONNX 프로젝트 기고자 모든 권리 보유.
이에 따라이 소프트웨어 및 관련 문서 파일 ( "소프트웨어")의 사본을 얻는 사람에게 허가는 제한없이 소프트웨어를 처리 할 수있는 사람에게 무료로 제공됩니다. , 소프트웨어의 사본을 게시, 배포, 서브 리센스 및/또는 판매하고, 소프트웨어가 제공하도록하는 사람을 다음과 같은 조건에 따라 할 수 있도록합니다.
위의 저작권 통지 및이 권한 통지는 소프트웨어의 모든 사본 또는 실질적인 부분에 포함되어야합니다.
이 소프트웨어는 상업성, 특정 목적에 대한 적합성 및 비 침해에 대한 보증을 포함하여 명시 적 또는 묵시적 보증없이 "그대로"제공됩니다. 어떠한 경우에도 저자 또는 저작권 보유자는 계약, 불법 행위 또는 기타, 소프트웨어 또는 사용 또는 기타 거래와 관련하여 계약, 불법 행위 또는 기타의 행동에 관계없이 청구, 손해 또는 기타 책임에 대해 책임을지지 않아야합니다. 소프트웨어.
관련 파일 :
tests/integration/operators_test/rnn_helper.pytests/integration/operators_test/gru_test.pytests/integration/operators_test/lstm_test.py이 프로젝트에는 다음과 같은 파생물 작업이 포함됩니다. 옵션-라이트, https://github.com/martinmoene/optional-lite
저작권 (C) 2014-2018 Martin Moene
소프트웨어 라이센스 부스트 - 버전 1.0- 2003 년 8 월 17 일
Boost 소프트웨어 라이센스, 버전 1.0에 따라 배포됩니다.
이에 따라 허가는 무료로 소프트웨어의 사본을 얻고이 라이센스 ( "소프트웨어")가 다루는 문서 ( "소프트웨어")를 사용하여 소프트웨어를 사용, 복제, 디스플레이, 배포, 실행 및 전송하고 소프트웨어를 전송하고, 소프트웨어의 파생 작품을 준비하고 소프트웨어가 제공되는 타사를 허용하기 위해 다음과 같은 대상이됩니다.
소프트웨어에 대한 저작권 통지 및 위의 라이센스 보조금,이 제한 및 다음 면책 조항을 포함한이 전체 명세서는 소프트웨어의 모든 사본, 전체 또는 부분적으로 소프트웨어의 모든 파생 작품에 포함되어야합니다. 사본 또는 파생 작품은 전적으로 소스 언어 프로세서에 의해 생성 된 기계를 실행 가능한 객체 코드의 형태로 만 있습니다.
소프트웨어는 상업성, 특정 목적에 대한 적합성, 제목 및 비 침해에 대한 보증을 포함하여 명시 적 또는 묵시적 보증없이 "있는 그대로"제공됩니다. 어떠한 경우에도 저작권 보유자 또는 소프트웨어를 배포하는 모든 사람은 소프트웨어 또는 소프트웨어의 사용 또는 기타 거래에서 발생하는 계약, 불법 행위 또는 기타, 또는 기타 기타 책임에 대해 책임을지지 않아야합니다.
관련 파일 :
willow/include/popart/vendored/optional.hpp이 프로젝트에는 다음과 같은 파생물 작업이 포함됩니다.
저작권 (C) 2016-2018 Martin Moene
소프트웨어 라이센스 부스트 - 버전 1.0- 2003 년 8 월 17 일
Boost 소프트웨어 라이센스, 버전 1.0에 따라 배포됩니다.
이에 따라 허가는 무료로 소프트웨어의 사본을 얻고이 라이센스 ( "소프트웨어")가 다루는 문서 ( "소프트웨어")를 사용하여 소프트웨어를 사용, 복제, 디스플레이, 배포, 실행 및 전송하고 소프트웨어를 전송하고, 소프트웨어의 파생 작품을 준비하고 소프트웨어가 제공되는 타사를 허용하기 위해 다음과 같은 대상이됩니다.
소프트웨어에 대한 저작권 통지 및 위의 라이센스 보조금,이 제한 및 다음 면책 조항을 포함한이 전체 명세서는 소프트웨어의 모든 사본, 전체 또는 부분적으로 소프트웨어의 모든 파생 작품에 포함되어야합니다. 사본 또는 파생 작품은 전적으로 소스 언어 프로세서에 의해 생성 된 기계를 실행 가능한 객체 코드의 형태로 만 있습니다.
소프트웨어는 상업성, 특정 목적에 대한 적합성, 제목 및 비 침해에 대한 보증을 포함하여 명시 적 또는 묵시적 보증없이 "있는 그대로"제공됩니다. 어떠한 경우에도 저작권 보유자 또는 소프트웨어를 배포하는 모든 사람은 소프트웨어 또는 소프트웨어의 사용 또는 기타 거래에서 발생하는 계약, 불법 행위 또는 기타, 또는 기타 기타 책임에 대해 책임을지지 않아야합니다.
관련 파일 :
willow/include/popart/vendored/anylite.hpp