objective - xgboost python scikit learn
clang: error:: errorunsupported opciĆ³n ''-fopenmp'' en Mac OSX El Capitan building XGBoost (3)
Estoy intentando XGBoost paquete XGBoost para Python siguiendo estas instrucciones :
Aquí está la solución completa para usar compiladores habilitados para OpenMP para instalar XGBoost. Obtenga gcc-5.xx con soporte para openmp preparando
brew install gcc --without-multilib
. (brew es el estándar de facto de apt-get en OS X. Por lo tanto, no se recomienda instalar HPC por separado, pero debería funcionar.):
git clone --recursive https://github.com/dmlc/xgboost
cd xgboost; cp make/config.mk ./config.mk; make -j4
Este error ocurre precisamente en el comando make -j4
.
Buscando antes, he intentado estas dos soluciones ( 1 y 2 ), sin éxito, a excepción de la parte para instalar otro gcc por temor a estropearlo todo.
A continuación se muestra el archivo de configuración de make
. No tiene nada sospechoso.
#-----------------------------------------------------
# xgboost: the configuration compile script
#
# If you want to change the configuration, please use the following
# steps. Assume you are on the root directory of xgboost.
# First copy the this file so that any local changes will be ignored by git
#
# $ cp make/config.mk .
#
# Next modify the according entries, and then compile by
#
# $ make
#
# or build in parallel with 8 threads
#
# $ make -j8
#----------------------------------------------------
# choice of compiler, by default use system preference.
# export CC = gcc
# export CXX = g++
# export MPICXX = mpicxx
# the additional link flags you want to add
ADD_LDFLAGS =
# the additional compile flags you want to add
ADD_CFLAGS =
# Whether enable openmp support, needed for multi-threading.
USE_OPENMP = 1
# whether use HDFS support during compile
USE_HDFS = 0
# whether use AWS S3 support during compile
USE_S3 = 0
# whether use Azure blob support during compile
USE_AZURE = 0
# Rabit library version,
# - librabit.a Normal distributed version.
# - librabit_empty.a Non distributed mock version,
LIB_RABIT = librabit.a
# path to libjvm.so
LIBJVM=$(JAVA_HOME)/jre/lib/amd64/server
# List of additional plugins, checkout plugin folder.
# uncomment the following lines to include these plugins
# you can also add your own plugin like this
#
# XGB_PLUGINS += plugin/example/plugin.mk
Instaló gcc
con Homebrew, pero el error es de clang
. Eso debería significar simplemente que su compilador predeterminado todavía apunta a clang
lugar del gcc
recién instalado. Si lees los comentarios en el Makefile, verás las siguientes líneas:
# choice of compiler, by default use system preference.
# export CC = gcc
# export CXX = g++
# export MPICXX = mpicxx
y en tu caso, no quieres el sistema uno.
Nota: gcc
para el sistema apunta a clang
:
$ which gcc
/usr/bin/gcc
$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.3.0 (clang-703.0.29)
Target: x86_64-apple-darwin15.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
En su lugar, apunte esas variables a algo en /usr/local/bin
, por ejemplo:
$ export CC=/usr/local/bin/gcc
y similar para las otras dos variables, CXX
y MPICXX
, por ejemplo:
$ export CC=/usr/local/bin/gcc;CXX=/usr/local/bin/g++;MPICXX=/usr/local/bin/mpicxx
Para resolver este problema, hice lo siguiente: Me di cuenta de que tenía instalado gcc
6, así que corrí:
export CC=gcc-6
Pero no funcionó solo, así que también tuve que:
export CXX=g++-6
Esto lo resolvió para mí. Estoy en un Macbook Pro ejecutando macOS Sierra. También puede hacer esos cambios directamente en Makefile de XGBoost si lo desea. Para obtener más información sobre esto: https://www.ibm.com/developerworks/community/blogs/jfp/entry/Installing_XGBoost_on_Mac_OSX?lang=en
Señor, tal vez debería usar
cd xgboost; cp make / minimum.mk ./config.mk; hacer -j4
en lugar de
cd xgboost; cp make / config.mk ./config.mk; hacer -j4
según la sección "Construir en OSX" del documento de compilación