首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于具有R和OS的XGBoost,并行执行失败

对于具有R和OS的XGBoost,并行执行失败
EN

Stack Overflow用户
提问于 2018-08-30 21:38:50
回答 1查看 177关注 0票数 0

不能让xgboost与R3.5.1和OSX10.12.6并行工作。我跟踪了这个使用说明。在编译C代码时,它似乎是openMP OK,但是在R中编译时,无法找到-fopenmp选项,并且并行执行不起作用。

Makevars

代码语言:javascript
复制
cat ~/.R/Makevars 
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

我也试过gcc-8,但没有成功。

实验:

  • 编译C代码:xgboost$ make -j4 =>似乎有效,-fopenmp编译器选项包括:g++-7 -c -DDMLC_LOG_CUSTOMIZE=1 -std=c++11 -Wall -Wno-unknown-pragmas -Iinclude -Idmlc-core/include -Irabit/include -I/include -O3 -funroll-loops -msse2 -fPIC -fopenmp src/common/common.cc -o build/common/common.o
  • 来源:R-package$ R CMD INSTALL . => checking whether OpenMP will work in a package... nog++-7 -std=gnu++11 -I"/usr/local/Cellar/r/3.5.1/lib/R/include" -DNDEBUG -I../..//include -I../..//dmlc-core/include -I../..//rabit/include -I../../ -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=1 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_ -I/usr/local/opt/gettext/include -I/usr/local/opt/readline/include -I/usr/local/include -fPIC -g -O2 -c xgboost_R.cc -o xgboost_R.o

似乎R没有考虑到来自Makevars的SHLIB_OPENMP_*选项。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2018-08-30 23:00:23

感谢hcho3 (https://github.com/dmlc/xgboost/issues/2503)

代码语言:javascript
复制
mkdir build
cd build
cmake .. -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 -DR_LIB=ON
make
make install

最后一个make安装可能会失败。如果发生这种情况,快跑

代码语言:javascript
复制
# still inside build/
cd R-package
mv src/libxgboost.dylib src/xgboost.so # in my case 'mv src/xgboost.dylib src/xgboost.so'
R CMD INSTALL .

他的解释:到目前为止在修改Makevars方面还没有成功,因为它被R包中的配置脚本覆盖了。当涉及到应用自定义构建选项时,使用CMake要容易得多,它将在R包中生成配置文件和其他构建文件(因此R-package目录在build /下生成)--到目前为止,我在CMake中看到的唯一缺陷是它生成了名为libxgboost.dylib的共享库,而R期望的是xgboost.so

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52105703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档