تفترض هذه التعليمات أنك تقوم ببناء البوبارت على Ubuntu 20.04. تصف هذه التعليمات كيفية تثبيت كل التبعية المطلوبة. إذا كنت تبدأ من تثبيت 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 يمكن العثور على جميع تبعيات Python اللازمة لبناء وتشغيل popart في requirements.txt . txt. تثبيتها عن طريق التشغيل
python3 -m pip install -r requirements.txt إذا كنت ترغب في المساهمة في بوبارت ، فستكون هناك حاجة إلى تبعيات إضافية للتنمية. تم العثور عليها في requirements/dev.txt ويمكن تثبيتها عن طريق التشغيل:
python3 -m pip install -r requirements/dev.txtيجمع Popart مقابل عدد من المكتبات التي يجب أن تكون متوفرة على نظامك:
إصدار مكتبة SPDLOG في Ubuntu 20.04 ( spdlog-dev ) غير متوافق مع 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 لاحقًا.
إصدار مكتبة Pybind11 في Ubuntu 20.04 ( pybind11-dev ) هو 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.
مكتبة Boost في Ubuntu 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 يمكنك الخروج من مكتبة Poprithms في GraphCore في دليل مناسب من مستودع GitHub العام وتثبيته على النحو التالي:
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/poprithms.
للحصول على 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 ، قم بتشغيل الأوامر التالية في الدليل حيث قمت بفحص المستودع:
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 لتوجيهها إلى التبعيات. راجع وثائق find_package في وثائق CMake. لقد اخترنا استخدام <verbatim pkg name>_ROOT المتغيرات التي تشير إلى دليل تثبيت الحزمة.
إهمال : <uppercase pkg name>_INSTALL_DIR متغيرات ، باستثناء POPLAR_INSTALL_DIR ، تم إهمالها وسيتم إزالتها في إصدار مستقبلي.
ملاحظة : تتوفر مفاتيح Cmake أخرى:
-DPOPART_BUILD_TESTING=0 - التبديل الذي يمكن استخدامه لتجنب تجميع اختبار popart.-DPOPART_STRICT_COMPARATOR_CHECKS=1 - تحقق من وجود مؤشرات nullptr و Nullptr عند مقارنة حاويات المؤشرات. ملاحظة : إذا كنت تفضل البناء باستخدام make بدلاً من ninja ، فقم بإزالة مفتاح -GNinja .
ملاحظة : يمكن تسريع عمليات الإنشاء باستخدام CCACHE.
ملاحظة : تصدير Cmake من Capnproto ببساطة يلتف PKG-Config. تم تعيين PKG_CONFIG_PATH من أجل إخبار PKG-CONFIG أين يمكن العثور على CAPNPROTO.
هناك عدد من تطبيقات Popart المتقدمة المتاحة في مستودع مثال GraphCore على Github. انظر README للحصول على قائمة كاملة من الأمثلة التي تم تنفيذها باستخدام POPART و POPXL
يتم توفير الرمز ضمن ترخيص معهد ماساتشوستس للتكنولوجيا ، راجع ملف الترخيص.
يتضمن المشروع أعمالًا مشتقة من ما يلي: 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 Project ، 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/pybind11_mkdoc
Pybind11_MKDOC مرخصة بموجب ترخيص معهد ماساتشوستس للتكنولوجيا التالي:
ترخيص معهد ماساتشوستس للتكنولوجيا (MIT)
حقوق الطبع والنشر (C) 2020 Wenzel Jakob
يتم منح الإذن بموجب هذا ، مجانًا ، لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة ("البرنامج") ، للتعامل في البرنامج دون تقييد ، بما في ذلك على سبيل المثال لا الحصر حقوق استخدام ، نسخ ، تعديل ، دمج أو نشر نسخ وتوزيعها و/أو بيعها و/أو بيع نسخ من البرامج ، والسماح للأشخاص الذين يتم تقديم البرنامج لهم للقيام بذلك ، مع مراعاة الشروط التالية:
يجب إدراج إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو" ، دون أي ضمان من أي نوع ، صريح أو ضمني ، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق واللياقة لغرض معين وعدم الانفجار. لا يجوز بأي حال من الأحوال أن يتحمل المؤلفون أو حاملي حقوق الطبع والنشر مسؤولية أي مطالبة أو أضرار أو مسؤولية أخرى ، سواء في إجراء عقد أو أضرار أو غير ذلك ، ناشئة عن البرامج أو خارجها أو الاستخدام أو غيرها برمجة.
الملفات ذات الصلة:
scripts/pybind11_mkdoc/يتضمن المشروع أعمال مشتقة من ما يلي: onnx ، https://github.com/onnx/onnx
Onnx مرخصة بموجب ترخيص معهد ماساتشوستس للتكنولوجيا التالي:
رخصة معهد ماساتشوستس للتكنولوجيا
حقوق الطبع والنشر (ج) مساهمين مشروع 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 Software License - الإصدار 1.0 - 17 أغسطس 2003
تم توزيعه تحت ترخيص برنامج Boost ، الإصدار 1.0.
يتم منح الإذن بموجب هذا ، مجانًا ، لأي شخص أو مؤسسة تحصل على نسخة من البرنامج والوثائق المصاحبة التي يغطيها هذا الترخيص ("البرنامج") لاستخدام البرنامج وإعادة إنتاجه وعرضه وتوزيعه وتنفيذه ونقله ، لإعداد الأعمال المشتقة للبرنامج ، والسماح لأطراف ثالثة بمن يتم تقديمه للبرنامج للقيام بذلك ، وكل ذلك يخضع لما يلي:
يلاحظ حقوق الطبع والنشر في البرنامج وهذا البيان بأكمله ، بما في ذلك منحة الترخيص أعلاه ، هذا التقييد وإخلاء المسئولية التالي ، في جميع نسخ البرنامج ، كليًا أو جزئيًا ، وجميع الأعمال المشتقة للبرنامج ، ما لم يكن كذلك تكون النسخ أو الأعمال المشتقة فقط في شكل رمز كائن قابل للتنفيذ من الآلة التي تم إنشاؤها بواسطة معالج لغة المصدر.
يتم توفير البرنامج "كما هو" ، دون أي ضمان من أي نوع ، صريح أو ضمني ، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق واللياقة لغرض معين وعنوان وعدم التعبير. لا يجوز بأي حال من الأحوال أن يتحمل حاملي حقوق الطبع والنشر أو أي شخص يوزع البرنامج مسؤولية أي أضرار أو أي مسؤولية أخرى ، سواء في العقد أو الضرر أو غير ذلك ، ناشئة عن أو خارج أو فيما يتعلق بالبرنامج أو الاستخدام أو غيرها من المعاملات في البرنامج.
الملفات ذات الصلة:
willow/include/popart/vendored/optional.hppيتضمن المشروع أعمال مشتقة من ما يلي: any-lite ، https://github.com/martinmoene/any-lite
حقوق الطبع والنشر (C) 2016-2018 مارتن موين
Boost Software License - الإصدار 1.0 - 17 أغسطس 2003
تم توزيعه تحت ترخيص برنامج Boost ، الإصدار 1.0.
يتم منح الإذن بموجب هذا ، مجانًا ، لأي شخص أو مؤسسة تحصل على نسخة من البرنامج والوثائق المصاحبة التي يغطيها هذا الترخيص ("البرنامج") لاستخدام البرنامج وإعادة إنتاجه وعرضه وتوزيعه وتنفيذه ونقله ، لإعداد الأعمال المشتقة للبرنامج ، والسماح لأطراف ثالثة بمن يتم تقديمه للبرنامج للقيام بذلك ، وكل ذلك يخضع لما يلي:
يلاحظ حقوق الطبع والنشر في البرنامج وهذا البيان بأكمله ، بما في ذلك منحة الترخيص أعلاه ، هذا التقييد وإخلاء المسئولية التالي ، في جميع نسخ البرنامج ، كليًا أو جزئيًا ، وجميع الأعمال المشتقة للبرنامج ، ما لم يكن كذلك تكون النسخ أو الأعمال المشتقة فقط في شكل رمز كائن قابل للتنفيذ من الآلة التي تم إنشاؤها بواسطة معالج لغة المصدر.
يتم توفير البرنامج "كما هو" ، دون أي ضمان من أي نوع ، صريح أو ضمني ، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق واللياقة لغرض معين وعنوان وعدم التعبير. لا يجوز بأي حال من الأحوال أن يتحمل حاملي حقوق الطبع والنشر أو أي شخص يوزع البرنامج مسؤولية أي أضرار أو أي مسؤولية أخرى ، سواء في العقد أو الضرر أو غير ذلك ، ناشئة عن أو خارج أو فيما يتعلق بالبرنامج أو الاستخدام أو غيرها من المعاملات في البرنامج.
الملفات ذات الصلة:
willow/include/popart/vendored/anylite.hpp