Привет.
Мне нужна помощь в понимании инструкций по установке версии OpenMP в R (Mac OS). Следующее утверждение меня немного сбивает с толку:
Установите файл Makevars на высшую ступень приоритетности для R.
Дело в том, что есть три Makevars: ~ / .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 не установлен по умолчанию !! Попробовав, кажется, что у первого самый высокий приоритет (сюрприз!).
Что означает "Установить файл Makevars наивысшим приоритетом для R"? Как я могу справиться с приоритетом? Что мне делать, чтобы установить переменную «SHLIB_OPENMP_CXXFLAGS»?
re: Makevars ... Я внес изменения в ~ / .R / Makevars. В дополнение к флагам SHLIB мне пришлось изменить компилятор на "clang-omp". Для компилятора я использовал brew, чтобы установить версию clang, поддерживающую OpenMP.
Я , наконец , получить эту работу, используя следующий код модифицированного от @ jimthompson5802 «s ответа . Код помещается в ~/.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 os, у меня установлен gcc, и с его помощью я ранее успешно построил «основной» xgboost с OpenMP. Таким образом, я предлагаю всем, кто следовал тем же инструкциям, как я, настроить свои 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
чтобы он работал: