簡體   English   中英

如何通過OpenMP編譯在OS X中並行處理R包xgboost?

[英]How to make R package xgboost parallel in OS X with OpenMP compilation?

我在R中使用xgb.cv和xgboost。但是,它不能並行運行

我的示例代碼如下

library(xgboost)
library(parallel)
param <- list("objective" = "reg:logistic"
          , "eval_metric" = "logloss"
          ,"nthread" = 8
          ,"bst:eta" = .025
          ,"bst:max_depth" = 3
          ,"lambda" = 1
          ,"lambda_bias" = 0
          ,"alpha" = .8
          ,"min_child_weight" = 3
          ,"subsample" = .9
          ,"colsample_bytree" = .6)
bst.cv3 = xgb.cv(param=param, data = x, label = y,
             nfold = 3, nrounds=cv.nround, missing = NA
             ,prediction = TRUE)

但是,以上代碼不起作用。 我必須做些什么才能使其平行?

我在xgboost網站和github上發現了這個東西

  1. https://github.com/dmlc/xgboost/blob/master/doc/build.md#building-on-osx

  2. https://github.com/dmlc/xgboost/issues/276

但是,我無法跑步

brew install clang-omp

要么

brew install gcc --without-multilib

與須藤也無法正常工作

不幸的是,先前選擇的答案現在已過時。 自制軟件中不再提供clang-omp軟件包。 所以這對我有用。

首先,在外殼上:

brew reinstall gcc --without-multilib

然后,使用以下內容創建文件~/.R/Makevars ,並確保更新路徑,以便它們正確反映所安裝的gcc版本homebrew:

CC=/usr/local/Cellar/gcc/6.1.0/bin/gcc-6
CXX=/usr/local/Cellar/gcc/6.1.0/bin/g++-6
SHLIB_CXXLD=/usr/local/Cellar/gcc/6.1.0/bin/g++-6
FC=/usr/local/Cellar/gcc/6.1.0/bin/gfortran-6
F77=/usr/local/Cellar/gcc/6.1.0/bin/gfortran-6
MAKE=make -j8

SHLIB_OPENMP_CFLAGS=-fopenmp
SHLIB_OPENMP_CXXFLAGS=-fopenmp
SHLIB_OPENMP_FCFLAGS=-fopenmp
SHLIB_OPENMP_FFLAGS=-fopenmp

最后,重新啟動R或RStudio,然后從源代碼重新安裝軟件包。

順便說一句,在https://asieira.github.io/using-openmp-with-r-packages-in-os-x.html上寫了一篇有關此問題的小博客文章。

好吧,我知道了。

創建一個新文件vi ~/.R/Makevars並將其放入

CC=clang-omp
CXX=clang-omp++
CXX1X=clang-omp++
SHLIB_OPENMP_CFLAGS=-fopenmp
SHLIB_OPENMP_CXXFLAGS=-fopenmp
SHLIB_OPENMP_FCFLAGS=-fopenmp
SHLIB_OPENMP_FFLAGS=-fopenmp

然后使用install.packages("xgboost", repos="http://dmlc.ml/drat/", type = "source")

如果那不起作用,請使用brew安裝clang和gcc

brew reinstall clang-omp

然后運行上面的代碼。

這似乎在最近的xgboost提交中已解決[1]

[1] https://github.com/dmlc/xgboost/commit/d754ce7dc19e0d7c7465999d464e13f9bf21b40d

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM