Les salutations.
J'ai besoin d'aide pour comprendre les instructions d'installation de la version OpenMP sous R (Mac OS). La déclaration suivante est assez confuse pour moi :
Définissez le fichier Makevars dans la priorité la plus élevée pour R.
Le fait est qu'il existe trois Makevars : ~/.R/Makevars, xgboost/R-package/src/Makevars et /usr/local/Cellar/r/3.2.0/R.framework/Resources/etc/Makeconf ( le dernier obtenu en exécutant file.path(R.home("etc"), "Makeconf") dans R), et SHLIB_OPENMP_CXXFLAGS n'est pas défini par défaut !! Après avoir essayé, il semble que le premier ait la priorité la plus élevée (surprise !).
Qu'est-ce que cela signifie par "Définir le fichier Makevars dans la priorité la plus élevée pour R" ? Comment gérer la priorité ? Que dois-je faire pour définir la variable "SHLIB_OPENMP_CXXFLAGS" ?
re: Makevars... J'ai fait les changements dans ~/.R/Makevars. En plus des drapeaux SHLIB, j'ai dû changer de compilateur en "clang-omp". Pour le compilateur, j'ai utilisé brew pour installer la version de clang prenant en charge OpenMP.
Je fais enfin fonctionner cela en utilisant le code suivant modifié à partir de la réponse de @jimthompson5802 . Le code est mis dans ~/.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
Dans mon cas, R rechercherait /Library/Frameworks/R.framework/Resources/etc/Makeconf
les paramètres nécessaires non définis dans ~/.R/Makevars
. Il essaierait de trouver le paramètre pour CXX1X
dans Makeconf
. C'est donc de là que vient le clang++
dans les erreurs de mon message précédent .
Je reçois un tas d'avertissements [-Wunused-variable]
mais je suppose que ça va. Pas d'avertissement OpenMP is not available
cette fois.
De plus, depuis que j'ai suivi les instructions de construction officielles pour mac os, j'ai installé gcc et avec lui j'ai réussi à construire le xgboost "principal" avec OpenMP auparavant. Ainsi, je suggère à tous ceux qui ont suivi les mêmes instructions que moi Makevars
configurer leur
Dans mon cas, je dois configurer plus de CXX
pour que cela fonctionne :
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
Commentaire le plus utile
Dans mon cas, je dois configurer plus de
CXX
pour que cela fonctionne :