Instruksi ini menganggap Anda membangun Popart di Ubuntu 20.04. Instruksi ini menjelaskan cara menginstal setiap ketergantungan yang diperlukan. Jika Anda mulai dari instalasi Ubuntu 20.04 yang ada, Anda mungkin sudah menginstal beberapa dependensi ini. Jika demikian, harap pastikan versi dependensi ini kompatibel dengan instruksi ini. Sistem operasi berbasis Linux lainnya juga dapat berfungsi tetapi nama paket dan versi paket yang didukung dapat bervariasi.
Anda akan membutuhkan alat -alat berikut yang diinstal pada sistem Anda jika belum diinstal:
sudo apt-get install wget git -ysudo apt-get install python3-pip -y
ln -s /usr/bin/python3 /usr/bin/pythonCatatan : Jika Anda memiliki Python 2.x yang diinstal pada sistem Anda, Anda dapat mengabaikan symlink.
sudo apt-get install ninja-build -ysudo apt-get install pkg-config -y Semua dependensi Python yang diperlukan untuk membangun dan menjalankan Popart dapat ditemukan dalam requirements.txt . Instal dengan menjalankannya
python3 -m pip install -r requirements.txt Jika Anda ingin berkontribusi pada Popart, dependensi tambahan diperlukan untuk pengembangan. Ini ditemukan dalam requirements/dev.txt dan dapat diinstal dengan menjalankan:
python3 -m pip install -r requirements/dev.txtKompilasi Popart terhadap sejumlah perpustakaan yang harus tersedia di sistem Anda:
Versi Perpustakaan SPDLog di Ubuntu 20.04 ( spdlog-dev ) tidak kompatibel dengan Popart. Sebaliknya, Anda perlu membangun versi 1.8.0 dari sumber. Untuk melakukan ini, di direktori pilihan Anda, unduh sumber dari halaman SPDLog GitHub dan buat dan instal sebagai berikut:
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 Catatan : Anda akan membutuhkan nilai SPDLOG_INSTALL_DIR nanti.
Versi perpustakaan Pybind11 di Ubuntu 20.04 ( pybind11-dev ) adalah 2.4.3, yang tidak kompatibel dengan Popart. Sebaliknya, Anda perlu membangun versi 2.6.2 dari sumber. Untuk melakukan ini, di direktori pilihan Anda, unduh sumber dari halaman Pybind GitHub dan buat dan instal sebagai berikut:
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 Catatan : Jika Anda lebih suka membangun dengan make daripada ninja , lepaskan sakelar -DCMAKE_GENERATOR="Ninja" .
Catatan : Anda akan membutuhkan nilai PYBIND11_INSTALL_DIR nanti.
Untuk informasi lebih lanjut, lihat: https://github.com/pybind/pybind11/blob/master/docs/compiling.rst.
Perpustakaan Boost di Ubuntu 20.04 ( libboost-dev ) adalah 1.71.1, yang tidak kompatibel dengan Popart. Sebaliknya, Anda harus membangun versi 1.80.0 dari sumber. Untuk melakukan ini, di direktori pilihan Anda, unduh sumber dari halaman unduhan Boost dan buat dan instal sebagai berikut:
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 Catatan : Sakelar -j8 digunakan untuk mengurangi waktu pembangunan dengan membangun hingga 8 utas.
Catatan : Anda akan membutuhkan nilai BOOST_INSTALL_DIR nanti.
Untuk informasi lebih lanjut, lihat: https://www.boost.org/doc/libs/1_80_0/more/getting_started/unix-varian.html.
Perpustakaan Onnx juga perlu dikompilasi dari sumber. Untuk melakukan ini, di direktori pilihan Anda, unduh sumber dari halaman Onnx GitHub dan buat dan instal sebagai berikut:
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 Catatan : Sakelar -j8 digunakan untuk mengurangi waktu pembangunan dengan membangun hingga 8 utas.
Catatan : Anda akan membutuhkan nilai ONNX_INSTALL_DIR nanti.
Untuk informasi lebih lanjut, lihat: https://github.com/onnx/onnx.
Rilis CapNProTo dapat diunduh dari halaman unduhan CapnProTo. Dalam direktori pilihan Anda, unduh dan instal sebagai berikut:
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 Catatan : Sakelar -j8 digunakan untuk mengurangi waktu tes dengan menguji hingga 8 utas.
Catatan : Anda akan membutuhkan nilai CAPNPROTO_INSTALL_DIR nanti
Untuk informasi lebih lanjut, lihat: https://capnproto.org/install.html
Trompeloeil dapat diunduh dari halaman Trompeloeil Github. Dalam direktori pilihan Anda, unduh dan instal sebagai berikut:
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 Anda dapat checkout Library Poprithms Graphcore di direktori yang sesuai dari repositori GitHub publik dan instal sebagai berikut:
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 Catatan : Jika Anda lebih suka membangun dengan make daripada ninja , lepaskan sakelar -DCMAKE_GENERATOR="Ninja" .
Catatan : Builds dapat dipercepat lebih lanjut dengan menggunakan CCACHE.
Catatan : Anda akan membutuhkan nilai POPRITHMS_INSTALL_DIR nanti.
Untuk informasi lebih lanjut, lihat: https://github.com/graphcore/poprithms.
Untuk mendapatkan Poplar SDK, Anda perlu mendaftar untuk akses ke portal dukungan Graphcore. Setelah Anda memiliki akses, Anda dapat mengunduh Ubuntu 18.04 terbaru dari portal dukungan, buka paket di direktori yang sesuai. Untuk sisa dokumen ini instruksi menganggap Anda telah menetapkan variabel lingkungan POPLAR_INSTALL_DIR untuk menunjuk ke direktori tempat poplar dibongkar. Perhatikan bahwa Poplar SDK berisi lebih dari sekadar poplar dan Anda harus mengarahkan variabel secara khusus ke subdirektori bernama sesuatu seperti poplar-ubuntu_18_04-xxxxx .
Untuk informasi lebih lanjut, lihat: https://www.graphcore.ai/developer.
Perhatikan bahwa hanya Ubuntu 20.04 yang didukung untuk membangun Popart secara eksternal.
Untuk membangun Popart, jalankan perintah berikut di direktori tempat Anda memeriksa repositori:
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 Anda dapat menggunakan metode apa pun yang didukung oleh CMake untuk mengarahkannya pada dependensi. Lihat dokumentasi find_package dalam dokumentasi CMake. Kami telah memilih untuk menggunakan <verbatim pkg name>_ROOT yang menunjuk ke direktori instalasi paket.
DESPRECATION : <uppercase pkg name>_INSTALL_DIR variabel, kecuali POPLAR_INSTALL_DIR , telah sudah usang dan akan dihapus dalam rilis mendatang.
CATATAN : Sakelar CMake lainnya tersedia:
-DPOPART_BUILD_TESTING=0 - sakelar yang dapat digunakan untuk menghindari kompilasi tes popart.-DPOPART_STRICT_COMPARATOR_CHECKS=1 - Periksa pointer nullptr dan tidak valid saat membandingkan wadah pointer. Catatan : Jika Anda lebih suka membangun dengan make daripada ninja , lepaskan sakelar -GNinja .
Catatan : Builds dapat dipercepat lebih lanjut dengan menggunakan CCACHE.
Catatan : Ekspor CMake CapnProto hanya membungkus pkg-config. Pkg_config_path diatur untuk memberi tahu pkg-config di mana menemukan capnproto.
Ada sejumlah aplikasi popart canggih yang tersedia dalam contoh repositori GraphCore di GitHub. Lihat ReadMe untuk daftar lengkap contoh yang diimplementasikan menggunakan POPART dan POPXL
Kode ini disediakan di bawah lisensi MIT, lihat file lisensi.txt.
Proyek ini mencakup pekerjaan yang diturunkan dari yang berikut: TensorFlow, https://github.com/tensorflow/tensorflow/
Hak Cipta 2017 Penulis TensorFlow. Semua hak dilindungi undang -undang.
Berlisensi di bawah lisensi Apache, versi 2.0 ("lisensi"); Anda tidak boleh menggunakan file ini kecuali sesuai dengan lisensi. Anda dapat memperoleh salinan lisensi di
http://www.apache.org/licenses/LICENSE-2.0
Kecuali diharuskan oleh hukum yang berlaku atau disepakati secara tertulis, perangkat lunak yang didistribusikan di bawah lisensi didistribusikan berdasarkan "sebagaimana adanya", tanpa jaminan atau ketentuan dalam bentuk apa pun, baik tersurat maupun tersirat. Lihat lisensi untuk bahasa spesifik yang mengatur izin dan batasan di bawah lisensi.
File yang relevan:
tests/integration/optimizer_tests/rmsprop_update_numpy.pyProyek ini mencakup pekerjaan turunan dari yang berikut: Proyek LLVM, http://llvm.org/doxygen/machineoutliner_8cpp_source.html
Berlisensi di bawah lisensi Apache, versi 2.0 ("lisensi"); Anda tidak boleh menggunakan file ini kecuali sesuai dengan lisensi. Anda dapat memperoleh salinan lisensi di
http://www.apache.org/licenses/license-2.0
Kecuali diharuskan oleh hukum yang berlaku atau disepakati secara tertulis, perangkat lunak yang didistribusikan di bawah lisensi didistribusikan berdasarkan "sebagaimana adanya", tanpa jaminan atau ketentuan dalam bentuk apa pun, baik tersurat maupun tersirat. Lihat lisensi untuk bahasa spesifik yang mengatur izin dan batasan di bawah lisensi.
File yang relevan:
willow/src/subgraph/suffixtree.cppProyek ini mencakup pekerjaan turunan dari yang berikut: pybind11_mkdoc, https://github.com/pybind/pybind11_mkdoc
PyBind11_MKDOC dilisensikan di bawah lisensi MIT berikut:
Lisensi MIT (MIT)
Hak Cipta (C) 2020 Wenzel Jakob
Izin dengan ini diberikan, gratis, kepada siapa pun yang mendapatkan salinan perangkat lunak ini dan file dokumentasi terkait ("Perangkat Lunak"), untuk menangani perangkat lunak tanpa pembatasan, termasuk tanpa batasan hak untuk menggunakan, menyalin, memodifikasi, menggabungkan , menerbitkan, mendistribusikan, sublisense, dan/atau menjual salinan perangkat lunak, dan untuk mengizinkan orang -orang yang dilengkapi dengan perangkat lunak untuk melakukannya, tunduk pada kondisi berikut:
Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus dimasukkan dalam semua salinan atau bagian substansial dari perangkat lunak.
Perangkat lunak ini disediakan "sebagaimana adanya", tanpa jaminan apa pun, tersurat maupun tersirat, termasuk tetapi tidak terbatas pada jaminan dapat diperjualbelikan, kebugaran untuk tujuan tertentu dan nonpringement. Dalam hal apa pun penulis atau pemegang hak cipta tidak akan bertanggung jawab atas klaim, kerusakan atau tanggung jawab lainnya, baik dalam tindakan kontrak, gugatan atau sebaliknya, timbul dari, di luar atau sehubungan dengan perangkat lunak atau penggunaan atau transaksi lain dalam PERANGKAT LUNAK.
File yang relevan:
scripts/pybind11_mkdoc/Proyek ini mencakup pekerjaan turunan dari yang berikut: Onnx, https://github.com/onnx/onnx
ONNX dilisensikan di bawah lisensi MIT berikut:
Lisensi MIT
Hak Cipta (C) Kontributor Proyek ONNX Semua hak dilindungi undang -undang.
Izin dengan ini diberikan, gratis, kepada siapa pun yang mendapatkan salinan perangkat lunak ini dan file dokumentasi terkait ("Perangkat Lunak"), untuk menangani perangkat lunak tanpa pembatasan, termasuk tanpa batasan hak untuk menggunakan, menyalin, memodifikasi, menggabungkan , menerbitkan, mendistribusikan, sublisense, dan/atau menjual salinan perangkat lunak, dan untuk mengizinkan orang -orang yang dilengkapi dengan perangkat lunak untuk melakukannya, tunduk pada kondisi berikut:
Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus dimasukkan dalam semua salinan atau bagian substansial dari perangkat lunak.
Perangkat lunak ini disediakan "sebagaimana adanya", tanpa jaminan apa pun, tersurat maupun tersirat, termasuk tetapi tidak terbatas pada jaminan dapat diperjualbelikan, kebugaran untuk tujuan tertentu dan nonpringement. Dalam hal apa pun penulis atau pemegang hak cipta tidak akan bertanggung jawab atas klaim, kerusakan atau tanggung jawab lainnya, baik dalam tindakan kontrak, gugatan atau sebaliknya, timbul dari, di luar atau sehubungan dengan perangkat lunak atau penggunaan atau transaksi lain dalam PERANGKAT LUNAK.
File yang relevan:
tests/integration/operators_test/rnn_helper.pytests/integration/operators_test/gru_test.pytests/integration/operators_test/lstm_test.pyProyek ini mencakup pekerjaan turunan dari yang berikut: Opsional-Lite, https://github.com/martinmoene/optional-lite
Hak Cipta (C) 2014-2018 Martin Moene
Boost Software License - Versi 1.0 - 17 Agustus 2003
Didistribusikan di bawah lisensi perangkat lunak Boost, versi 1.0.
Izin dengan ini diberikan, gratis, kepada orang atau organisasi mana pun yang mendapatkan salinan perangkat lunak dan dokumentasi yang menyertainya yang dicakup oleh lisensi ini ("perangkat lunak") untuk menggunakan, mereproduksi, menampilkan, mendistribusikan, menjalankan, dan mengirimkan perangkat lunak, dan Untuk menyiapkan karya turunan dari perangkat lunak, dan untuk mengizinkan pihak ketiga kepada siapa perangkat lunak tersebut dilengkapi untuk melakukannya, semua tunduk pada hal-hal berikut:
Pemberitahuan hak cipta dalam perangkat lunak dan seluruh pernyataan ini, termasuk hibah lisensi di atas, pembatasan ini dan penafian berikut, harus dimasukkan dalam semua salinan perangkat lunak, secara keseluruhan atau sebagian, dan semua karya turunan dari perangkat lunak, kecuali tersebut kecuali tersebut Salinan atau karya turunan semata-mata dalam bentuk kode objek yang dapat dieksekusi mesin yang dihasilkan oleh prosesor bahasa sumber.
Perangkat lunak ini disediakan "sebagaimana adanya", tanpa jaminan apa pun, tersurat maupun tersirat, termasuk tetapi tidak terbatas pada jaminan dapat diperjualbelikan, kebugaran untuk tujuan tertentu, judul, dan non-pelanggaran. Dalam hal apa pun pemegang hak cipta atau siapa pun yang mendistribusikan perangkat lunak tersebut bertanggung jawab atas segala kerusakan atau tanggung jawab lainnya, baik dalam kontrak, gugatan atau sebaliknya, timbul dari, di luar atau sehubungan dengan perangkat lunak atau penggunaan atau transaksi lain dalam perangkat lunak.
File yang relevan:
willow/include/popart/vendored/optional.hppProyek ini mencakup pekerjaan turunan dari yang berikut: any-lite, https://github.com/martinmoene/any-lite
Hak Cipta (C) 2016-2018 Martin Moene
Boost Software License - Versi 1.0 - 17 Agustus 2003
Didistribusikan di bawah lisensi perangkat lunak Boost, versi 1.0.
Izin dengan ini diberikan, gratis, kepada orang atau organisasi mana pun yang mendapatkan salinan perangkat lunak dan dokumentasi yang menyertainya yang dicakup oleh lisensi ini ("perangkat lunak") untuk menggunakan, mereproduksi, menampilkan, mendistribusikan, menjalankan, dan mengirimkan perangkat lunak, dan Untuk menyiapkan karya turunan dari perangkat lunak, dan untuk mengizinkan pihak ketiga kepada siapa perangkat lunak tersebut dilengkapi untuk melakukannya, semua tunduk pada hal-hal berikut:
Pemberitahuan hak cipta dalam perangkat lunak dan seluruh pernyataan ini, termasuk hibah lisensi di atas, pembatasan ini dan penafian berikut, harus dimasukkan dalam semua salinan perangkat lunak, secara keseluruhan atau sebagian, dan semua karya turunan dari perangkat lunak, kecuali tersebut kecuali tersebut Salinan atau karya turunan semata-mata dalam bentuk kode objek yang dapat dieksekusi mesin yang dihasilkan oleh prosesor bahasa sumber.
Perangkat lunak ini disediakan "sebagaimana adanya", tanpa jaminan apa pun, tersurat maupun tersirat, termasuk tetapi tidak terbatas pada jaminan dapat diperjualbelikan, kebugaran untuk tujuan tertentu, judul, dan non-pelanggaran. Dalam hal apa pun pemegang hak cipta atau siapa pun yang mendistribusikan perangkat lunak tersebut bertanggung jawab atas segala kerusakan atau tanggung jawab lainnya, baik dalam kontrak, gugatan atau sebaliknya, timbul dari, di luar atau sehubungan dengan perangkat lunak atau penggunaan atau transaksi lain dalam perangkat lunak.
File yang relevan:
willow/include/popart/vendored/anylite.hpp