[Rcpp-devel] Advice on installing CHOLMOD/Suitesparse

Douglas Bates bates at stat.wisc.edu
Wed Aug 29 23:42:25 CEST 2012


On Wed, Aug 29, 2012 at 4:32 PM, Rodney Sparapani <rsparapa at mcw.edu> wrote:
> Hi Gang:
>
> I have been using CHOLMOD/Suitesparse, but I'm having an issue
> coaxing RcppEigen to see it.  I have Matrix, inline, Rcpp and
> RcppEigen installed as well as Suitesparse.  But, when I run
> this simple program (that works with Rcpp alone)...
>
> require(inline)
> require(Rcpp)
> require(RcppEigen)
>
> N <- 100
> p <- 3
> q <- 10
>
> data <- list(X=matrix(NA, N, p), Z=matrix(NA, N, q),
>              t=double(N), y=double(N), v1=integer(N), v2=integer(N),
>              c=integer(N))
>
> par.info <- list(beta=list(init=0., prior=list(mean=0., prec=0.001)),
>                   mu=list(init=c(0., 0.),
>                     prior=list(mean=c(0., 0.), prec=diag(0.001, 2))),
>                   theta=list(init=c(rep(0., ncol(data$X)),
>                                rep(1., ncol(data$Z)),
>                                rep(0., ncol(data$X))),
>                     prior=list(mean=rep(0., ncol(data$Z)+2*ncol(data$X)),
>                            prec=diag(0.001, ncol(data$Z)+2*ncol(data$X))))
>                   )
>
> src <- '
> List list(arg1), beta=list["beta"], mu=list["mu"],
> theta=list["theta"];
>
> return theta["init"];
> '
>
> check1 <- cxxfunction(signature(arg1="list"), src, #plugin="Rcpp")
>                       plugin="RcppEigen")
>
> I get...
> In file included from
> /opt/local/lib64/R/library/RcppEigen/include/RcppEigenForward.h:31,
>                  from
> /opt/local/lib64/R/library/RcppEigen/include/RcppEigen.h:25,
>                  from file7289313ed735.cpp:3:
> /opt/local/include/Eigen/CholmodSupport:9:23: error: cholmod.h: No such file or directory

Perhaps you have an out-of-date version of the RcppEigen package (or
maybe the Mac version hasn't been built or ...).  In any case
RcppEigenForward should include RcppEigenCholmod.h, not cholmod.h and
the correct version would be at
/opt/local/lib64/R/library/RcppEigen/include/RcppEigenCholmod.h

> make: *** [file7289313ed735.o] Error 1
>
> ERROR(s) during compilation: source code errors or compiler configuration
> errors!
>
> Program source:
>   1:
>   2: // includes from the plugin
>   3: #include <RcppEigen.h>
>   4: #include <Rcpp.h>
>   5:
>   6:
>   7: #ifndef BEGIN_RCPP
>   8: #define BEGIN_RCPP
>   9: #endif
>  10:
>  11: #ifndef END_RCPP
>  12: #define END_RCPP
>  13: #endif
>  14:
>  15: using namespace Rcpp;
>  16:
>  17:
>  18: // user includes
>  19:
>  20:
>  21: // declarations
>  22: extern "C" {
>  23: SEXP file7289313ed735( SEXP arg1) ;
>  24: }
>  25:
>  26: // definition
>  27:
>  28: SEXP file7289313ed735( SEXP arg1 ){
>  29: BEGIN_RCPP
>  30:
>  31: List list(arg1), beta=list["beta"], mu=list["mu"],
>  32: theta=list["theta"];
>  33:
>  34: return theta["init"];
>  35:
>  36: END_RCPP
>  37: }
>  38:
>  39:
> Error in compileCode(f, code, language = language, verbose = verbose) :
>   Compilation ERROR, function(s)/method(s) not created! In file included
> from /opt/local/lib64/R/library/RcppEigen/include/RcppEigenForward.h:31,
>                  from
> /opt/local/lib64/R/library/RcppEigen/include/RcppEigen.h:25,
>                  from file7289313ed735.cpp:3:
> /opt/local/include/Eigen/CholmodSupport:9:23: error: cholmod.h: No such file
> or directory
> make: *** [file7289313ed735.o] Error 1
> In addition: Warning message:
> running command '/opt/local/lib64/R/bin/R CMD SHLIB file7289313ed735.cpp 2>
> file7289313ed735.cpp.err.txt' had status 1
>
> So, I'm wondering...  Where does RcppEigen expect to see cholmod.h?
> Perhaps, I should re-install RcppEigen from source rather than from
> CRAN.  Or possibly install Suitesparse from source in either
> /usr/local, or preferably, /opt/local?  What works for other?  Thanks
>
> Compiler Settings:
> CC="gcc"
> CFLAGS="-g"
> CXX="g++"
> CXXFLAGS="-g"
> CPP=""
> CPPFLAGS="-I/opt/local/include"
> LDFLAGS="-L/opt/local/lib64 -Wl,-rpath -Wl,/opt/local/lib64"
> LIBS=""
> PKG_CONFIG_PATH="/opt/local/lib64/pkgconfig"
> F77="gfortran"
> FFLAGS="-g -ff2c"
> FC="gfortran"
> FCFLAGS=""
>
> sessionInfo()
> R version 2.14.2 (2012-02-29)
> Platform: x86_64-unknown-linux-gnu (64-bit)
>
> locale:
>  [1] LC_CTYPE=en_US.ISO8859-1       LC_NUMERIC=C
>  [3] LC_TIME=en_US.ISO8859-1        LC_COLLATE=en_US.ISO8859-1
>  [5] LC_MONETARY=en_US.ISO8859-1    LC_MESSAGES=en_US.ISO8859-1
>  [7] LC_PAPER=C                     LC_NAME=C
>  [9] LC_ADDRESS=C                   LC_TELEPHONE=C
> [11] LC_MEASUREMENT=en_US.ISO8859-1 LC_IDENTIFICATION=C
>
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
>
> other attached packages:
> [1] RcppEigen_0.2.0 Rcpp_0.9.10     inline_0.3.8
>
> loaded via a namespace (and not attached):
> [1] compiler_2.14.2 grid_2.14.2     lattice_0.20-6  Matrix_1.0-5
> [5] tools_2.14.2
>
> yum install suitesparse
> Loaded plugins: auto-update-debuginfo, refresh-packagekit, rhnplugin
> Setting up Install Process
> Package suitesparse-3.4.0-2.el6.x86_64 already installed and latest version
> Nothing to do
>
> --
> Rodney Sparapani, PhD  Center for Patient Care and Outcomes Research
> Sr. Biostatistician               http://www.mcw.edu/pcor
> 4 wheels good, 2 wheels better!   Medical College of Wisconsin (MCW)
> WWLD?:  What Would Lombardi Do?   Milwaukee, WI, USA
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel


More information about the Rcpp-devel mailing list