تحيات.
أحتاج إلى بعض المساعدة في فهم التعليمات الخاصة بتثبيت إصدار OpenMP في R (Mac OS). البيان التالي محير بالنسبة لي:
اضبط ملف Makevars بأعلى درجات الدقة لـ R.
النقطة المهمة هي أن هناك ثلاثة ماكيفارس: ~ / .R / Makevars و xgboost / R-package / src / Makevars و /usr/local/Cellar/r/3.2.0/R.framework/Resources/etc/Makeconf ( آخر واحد تم الحصول عليه عن طريق تشغيل file.path (R.home ("etc") و "Makeconf") في R) و SHLIB_OPENMP_CXXFLAGS لم يتم تعيينه افتراضيًا !! بعد المحاولة ، يبدو أن الشخص الأول يتمتع بأعلى درجة من الدرجة الأولى (مفاجأة!).
ماذا يعني "اضبط ملف ماكيفارس بأعلى درجات الأولوية لـ R"؟ كيف يمكنني التعامل مع الأولوية؟ ماذا علي أن أفعل لتعيين المتغير "SHLIB_OPENMP_CXXFLAGS"؟
إعادة: Makevars ... لقد أجريت التغييرات في ~ / .R / Makevars. بالإضافة إلى أعلام SHLIB ، كان علي أن أغير المترجم إلى "clang-omp". بالنسبة للمترجم ، استخدمت الشراب لتثبيت إصدار clang الذي يدعم OpenMP.
وأخيرا الحصول على هذا العمل باستخدام التعليمات البرمجية التالية المعدلة من @ jimthompson5802 الصورة الجواب . يتم وضع الكود في ~/.R/Makevars
:
CC=gcc-5
CXX=g++-5
CXX1X = g++-5
SHLIB_OPENMP_CFLAGS= -fopenmp
SHLIB_OPENMP_CXXFLAGS= -fopenmp
SHLIB_OPENMP_FCFLAGS= -fopenmp
SHLIB_OPENMP_FFLAGS= -fopenmp
في حالتي ، سيبحث R في /Library/Frameworks/R.framework/Resources/etc/Makeconf
عن المعلمات الضرورية غير المحددة في ~/.R/Makevars
. سيحاول العثور على الإعداد لـ CXX1X
في Makeconf
. هذا هو المكان الذي يأتي منه المترجم clang++
في الأخطاء في رسالتي السابقة .
تلقيت مجموعة من التحذيرات من [-Wunused-variable]
لكن أعتقد أنه جيد. لا يوجد تحذير OpenMP is not available
هذه المرة.
أيضًا بما أنني اتبعت تعليمات البناء الرسمية لنظام التشغيل mac ، فقد قمت بتثبيت دول مجلس التعاون الخليجي وبها نجحت في بناء xgboost "الرئيسي" باستخدام OpenMP من قبل. suggets هكذا أنا وأحد الذين تابعوا نفس التعليمات مثلي لها على Makevars
انشاء مثل هذا.
في حالتي ، يجب أن أقوم بإعداد المزيد من CXX
لإنجاحه:
CC=gcc-7
CXX=g++-7
CXX1X=g++-7
CXX11=g++-7
CXX14=g++-7
CXX17=g++-7
SHLIB_OPENMP_CFLAGS= -fopenmp
SHLIB_OPENMP_CXXFLAGS= -fopenmp
SHLIB_OPENMP_FCFLAGS= -fopenmp
SHLIB_OPENMP_FFLAGS= -fopenmp
التعليق الأكثر فائدة
في حالتي ، يجب أن أقوم بإعداد المزيد من
CXX
لإنجاحه: