Xgboost: 如何在 R (Mac OS) 中安装 OpenMP 版本

创建于 2016-04-22  ·  3评论  ·  资料来源: dmlc/xgboost

你好。

我需要一些帮助来理解在 R (Mac OS) 中安装 OpenMP 版本的说明。 以下陈述让我感到困惑:

将 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") in R) 得到的,默认没有设置 SHLIB_OPENMP_CXXFLAGS!! 经过尝试,似乎第一个具有最高的优先级(惊讶!)。

“将 Makevars 文件设置为 R 的最高优先级”是什么意思? 我该如何处理优先级? 我该怎么做才能设置“SHLIB_OPENMP_CXXFLAGS”变量?

最有用的评论

就我而言,我必须设置更多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

所有3条评论

回复:Makevars...我在 ~/.R/Makevars 中进行了更改。 除了 SHLIB 标志之外,我还必须将编译器更改为“clang-omp”。 对于编译器,我使用 brew 来安装支持 OpenMP 的 clang 版本。

我终于通过使用从@jimthompson5802答案修改的以下代码来实现这一点。 代码放入~/.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 。 它会尝试在Makeconf找到CXX1X的设置。 所以这就是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
此页面是否有帮助?
0 / 5 - 0 等级

相关问题

FabHan picture FabHan  ·  4评论

XiaoxiaoWang87 picture XiaoxiaoWang87  ·  3评论

pplonski picture pplonski  ·  3评论

matthewmav picture matthewmav  ·  3评论

trivialfis picture trivialfis  ·  3评论