下载和编译 mxnet
git clone --recursive https://github.com/apache/incubator-mxnet mxnet \
&& cd mxnet \
&& echo "USE_OPENCV = 1" >> ./config.mk \
&& echo "USE_BLAS = openblas" >> ./config.mk \
&& echo "USE_JEMALLOC = 1" >> ./config.mk \
&& echo "USE_MKLDNN = 0" >> ./config.mk \
&& echo "USE_LAPACK = 1" >> ./config.mk \
&& echo "USE_CUDA = 0" >> ./config.mk \
&& echo "USE_OPENMP = 1" >> ./config.mk \
&& make -j 2
中间没有任何警告和错误,说明相关系统依赖都安装齐全,下面构建和安装 R 包
make rpkg
mkdir -p R-package/inst/libs
cp src/io/image_recordio.h R-package/src
cp -rf lib/libmxnet.so R-package/inst/libs
if [ -e "lib/libmkldnn.so.0" ]; then \
cp -rf lib/libmkldnn.so.0 R-package/inst/libs; \
cp -rf lib/libiomp5.so R-package/inst/libs; \
cp -rf lib/libmklml_intel.so R-package/inst/libs; \
fi
mkdir -p R-package/inst/include
cp -rl include/* R-package/inst/include
Rscript -e "if(!require(devtools)){install.packages('devtools', repo = 'https://
cloud.r-project.org/')}"
Loading required package: devtools
Loading required package: usethis
Rscript -e "if(!require(roxygen2)||packageVersion('roxygen2') < '6.1.1'){install
.packages('roxygen2', repo = 'https://cloud.r-project.org/')}"
Loading required package: roxygen2
Rscript -e "library(devtools); library(methods); options(repos=c(CRAN='https://c
loud.r-project.org/')); install_deps(pkg='R-package', dependencies = TRUE)"
Loading required package: usethis
cp R-package/dummy.NAMESPACE R-package/NAMESPACE
echo "import(Rcpp)" >> R-package/NAMESPACE
R CMD INSTALL R-package
* installing to library /usr/local/lib/R/site-library
* installing *source* package mxnet ...
** libs
make[1]: Entering directory '/home/mxnet/R-package/src'
g++ -std=gnu++11 -I"/opt/R/R-3.5.3/lib/R/include" -DNDEBUG -I../inst/include -I"
/usr/local/lib/R/site-library/Rcpp/include" -I/usr/local/include -fpic -g -O2
-c executor.cc -o executor.o
In file included from executor.cc:28:0:
./base.h:31:23: fatal error: dmlc/base.h: No such file or directory
#include <dmlc/base.h>
^
compilation terminated.
/opt/R/R-3.5.3/lib/R/etc/Makeconf:170: recipe for target 'executor.o' failed
make[1]: *** [executor.o] Error 1
make[1]: Leaving directory '/home/mxnet/R-package/src'
ERROR: compilation failed for package mxnet
* removing /usr/local/lib/R/site-library/mxnet
Makefile:691: recipe for target 'rpkg' failed
make: *** [rpkg] Error 1
经查,在目录 R-package/src 下存在 base.h 文件
ls R-package/src
base.h export.h io.cc Makevars ndarray.cc
executor.cc im2rec.cc io.h Makevars.win ndarray.h
executor.h im2rec.h kvstore.cc mxnet.cc symbol.cc
export.cc image_recordio.h kvstore.h name.h symbol.h
问题1:不知道什么原因导致安装不上?求助
P.S. 系统环境如下
sessionInfo()
R version 3.5.3 (2019-03-11)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.6 LTS
Matrix products: default
BLAS: /opt/R/R-3.5.3/lib/R/lib/libRblas.so
LAPACK: /opt/R/R-3.5.3/lib/R/lib/libRlapack.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.5.3
并且我注意到,目前 mxnet 似乎不支持 R 3.6.X <https://github.com/apache/incubator-mxnet/issues?q=is%3Aissue+is%3Aopen+label%3AR>
我构建的 R 包R CMD build R-package
下载地址 mxnet_1.6.0.tar.gz
- 问题2: mxnet 的 R 接口具有的功能和 Python 接口是否一样多?从发布的版本信息来看,关于 R 的更新很少,是 R 包成熟稳定了还是开发缓慢?