Grüße.
Ich benötige Hilfe beim Verständnis der Anweisungen zur Installation der OpenMP-Version in R (Mac OS). Die folgende Aussage ist für mich ziemlich verwirrend:
Setzen Sie die Makevars-Datei auf die höchste Priorität für R.
Der Punkt ist, dass es drei Makevars gibt: ~/.R/Makevars, xgboost/R-package/src/Makevars und /usr/local/Cellar/r/3.2.0/R.framework/Resources/etc/Makeconf ( der letzte, der durch Ausführen von file.path(R.home("etc"), "Makeconf") in R) erhalten wurde, und SHLIB_OPENMP_CXXFLAGS ist standardmäßig nicht gesetzt!! Nach dem Versuch scheint der erste die höchste Priorität zu haben (Überraschung!).
Was bedeutet "Setzen Sie die Makevars-Datei in höchster Priorität für R"? Wie kann ich mit der Priorität umgehen? Was muss ich tun, um die Variable "SHLIB_OPENMP_CXXFLAGS" zu setzen?
re: Makevars...Ich habe die Änderungen in ~/.R/Makevars vorgenommen. Zusätzlich zu den SHLIB-Flags musste ich den Compiler auf "clang-omp" umstellen. Für den Compiler habe ich brew verwendet, um die Version von clang zu installieren, die OpenMP unterstützt.
Ich bekomme dies endlich zum Laufen , indem ich den folgenden Code verwende, der aus der Antwort von @jimthompson5802 geändert wurde. Der Code wird in ~/.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
In meinem Fall würde R /Library/Frameworks/R.framework/Resources/etc/Makeconf
nach notwendigen Parametern durchsuchen, die in ~/.R/Makevars
. Es würde versuchen, die Einstellung für CXX1X
in Makeconf
. Daher kommen die clang++
Compiler in den Fehlern in meinem vorherigen Beitrag .
Ich bekomme eine Menge [-Wunused-variable]
Warnungen, aber ich denke, es ist in Ordnung. Diesmal keine OpenMP is not available
Warnung.
Da ich auch die offiziellen Bauanleitungen für mac os befolgt habe, habe ich gcc installiert und damit den "main" xgboost mit OpenMP erfolgreich gebaut. Daher empfehle ich jedem, der die gleichen Anweisungen wie ich befolgt hat, seine Makevars
einzurichten.
In meinem Fall muss ich mehr CXX
einrichten, damit es funktioniert:
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
Hilfreichster Kommentar
In meinem Fall muss ich mehr
CXX
einrichten, damit es funktioniert: