[Rcpp-devel] Overflow error when creating a large matrix

Dirk Eddelbuettel edd at debian.org
Mon Nov 2 00:20:01 CET 2015


On 1 November 2015 at 19:35, Alessandro Mammana wrote:
| As Sean O'Riordain correctly pointed out, I used the install_github
| command improperly. Doing
| 
| devtools::install_github("RcppCore/Rcpp")

Oh noooooes. install_gitub() is not what one should use when we have drat.

I just rolled the Rcpp repo forward to 0.12.1.4, created a tarball and pushed
it into the drat repo of the RcppCore organization.  See the README here

   https://github.com/RcppCore/drat

and just do

   drat:::add("RcppCore")
   install.packages("Rcpp")
 
| works and the big matrix is allocated correctly.
| 
| Thanks for the help and for the great work you are doing!

Indeed.  Nice to see this working.

Dirk, for once in Boston

| Ale
| 
| On Sun, Nov 1, 2015 at 6:30 PM, Alessandro Mammana
| <mammana at molgen.mpg.de> wrote:
| > It's great that R and Rcpp have support for long vectors! that makes
| > my life so much easier!
| >
| > So I installed Rcpp version 0.12.1 and the error is still there (see
| > end of the email). If I interpret the commit history correctly, the
| > commit that fixes the bug was done shortly after the 0.12.1 release
| > right? Is there an easy way of getting the latest version of the
| > master branch?
| > I tried:
| >
| > devtools::install_github("https://github.com/RcppCore/Rcpp")
| >
| > But I got:
| >
| > Error in username %||% getOption("github.user") %||% stop("Unknown username.") :
| >   Unknown username.
| >
| >> sourceCpp("makeMat.cpp")
| >> makeMat(18, 136633572)
| > Error in .Primitive(".Call")(<pointer: 0x7f57d1c73ee0>, nrow, ncol) :
| >   negative length vectors are not allowed
| >> sesssionInfo()
| > Error: could not find function "sesssionInfo"
| >> sessionInfo()
| > R version 3.2.0 (2015-04-16)
| > Platform: x86_64-unknown-linux-gnu (64-bit)
| > Running under: MarIuX64 2.0 GNU/Linux 2010-2012
| >
| > locale:
| >  [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C         LC_TIME=C
| >  [4] LC_COLLATE=C         LC_MONETARY=C        LC_MESSAGES=C
| >  [7] LC_PAPER=C           LC_NAME=C            LC_ADDRESS=C
| > [10] LC_TELEPHONE=C       LC_MEASUREMENT=C     LC_IDENTIFICATION=C
| >
| > attached base packages:
| > [1] stats     graphics  grDevices utils     datasets  methods   base
| >
| > other attached packages:
| > [1] Rcpp_0.12.1
| >
| > On Sun, Nov 1, 2015 at 3:37 PM, Florian Plaza Oñate
| > <florian.plaza at jouy.inra.fr> wrote:
| >> The bug is probably fixed by this commit:
| >> https://github.com/RcppCore/Rcpp/commit/eb069bf5c20aaa4d38e0ca2897bf04e956cb8c4c
| >>
| >>
| >> Le 31/10/2015 20:08, Alessandro Mammana a écrit :
| >>>
| >>> Dear All,
| >>> When creating a large matrix with the follwing code:
| >>>
| >>> #include <Rcpp.h>
| >>> // [[Rcpp::export]]
| >>> Rcpp::IntegerMatrix makeMat(int nrow, int ncol){
| >>>          Rcpp::IntegerMatrix mat(nrow, ncol);
| >>>          return mat;
| >>> }
| >>>
| >>> I get the error:
| >>>
| >>> Error in .Primitive(".Call")(<pointer: 0x7f86936d3ea0>, nrow, ncol) :
| >>>    negative length vectors are not allowed
| >>>
| >>> Where nrow*ncol is a very large number (about 3*10^9). I understand
| >>> that such a number cannot be represented by an int type, but this does
| >>> not seem to be a problem when in R I do:
| >>>
| >>>> mat <- matrix(0, nrow=nrow, ncol=ncol)
| >>>
| >>>
| >>> Questions:
| >>> 1. why is the behaviour different between R and Rcpp in the allocation
| >>> of a matrix?
| >>> 2. In a 64 bits machine, what is actually the maximum allowed length
| >>> of a vector/matrix? does the length of a vector/matrix need to be
| >>> represented by an int?
| >>>
| >>> Thanks a lot and best regards,
| >>> Alessandro
| >>>
| >>
| >
| >
| >
| > --
| > Alessandro Mammana, PhD Student
| > Max Planck Institute for Molecular Genetics
| > Ihnestraße 63-73
| > D-14195 Berlin, Germany
| 
| 
| 
| -- 
| Alessandro Mammana, PhD Student
| Max Planck Institute for Molecular Genetics
| Ihnestraße 63-73
| D-14195 Berlin, Germany
| _______________________________________________
| 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
-- 
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org


More information about the Rcpp-devel mailing list