[Rcpp-devel] Overriding 'ARMA_64BIT_WORD 1' in RcppArmadillo

George Vega Yon g.vegayon at gmail.com
Tue May 3 20:54:17 CEST 2016


I was about to ask you the same question =S. The only thing that I found
was this
http://lists.r-forge.r-project.org/pipermail/rcpp-devel/2013-November/006827.html.
Can't find anything else in google, RcppArmadillo/issues or the rcpp-devel.
Thanks!

George G. Vega Yon
+1 (626) 381 8171
http://www.its.caltech.edu/~gvegayon/

On Tue, May 3, 2016 at 10:48 AM, Dirk Eddelbuettel <edd at debian.org> wrote:

>
> Hi George,
>
> On 3 May 2016 at 10:17, George Vega Yon wrote:
> | I think I've found a solution for this. I've submitted a pull request
> here
> | https://github.com/RcppCore/RcppArmadillo/pull/88. It basically now
> allows the
> | users to pass -DARMA_64BIT_WORD and compile with it (so ARMA_32BIT_WORD
> is not
> | defined but it is still the default behavior of RcppArmadillo). Will
> work on
> | tests on this repo https://github.com/gvegayon/arma64bit.
>
> The pull request looks good.  I know this issue had been bugging you for a
> while (and I am really glad we seem to be having a solution for you !!) but
> do you recall if I posted here _which_ packages failed when Conrad started
> to
> default to ARMA_64BIT_WORD under C++11 ?
>
> Dirk
>
> |
> | Best,
> |
> | George G. Vega Yon
> | +1 (626) 381 8171
> | http://www.its.caltech.edu/~gvegayon/
> |
> | On Thu, Apr 28, 2016 at 6:07 PM, George Vega Yon <g.vegayon at gmail.com>
> wrote:
> |
> |     Hey!
> |
> |     Since it seems to be the case that we don't know much about what
> happens,
> |     I'm making an experiment which consists on an R package to stress
> |     RcppArmadillo here: https://github.com/gvegayon/arma64bit.
> Following Dirk's
> |     advice, I've included the #define ARMA_64BIT_WORD before #include
> |     <RcppArmadillo.h> (as seen here
> https://github.com/gvegayon/arma64bit/blob/
> |     c10b5d4a80b93088da730e45ee8c583feeff2ab6/src/misc.cpp#L2-L3) and
> |     included CXX_STD = CXX11 in Makevars. After compiling the package and
> |     asking for a matrix of size 1e5 x 1e5 I get an error, here (so it
> doesn't
> |     seem to be working):
> |
> |     > x <- sp_runif(1e5,1e5,.01)
> |
> |     error: SpMat::init(): requested size is too large
> |     Error: SpMat::init(): requested size is too large
> |
> |     My guess is that #define ARMA_32BIT_WORD is overriding #define
> |     ARMA_64BIT_WORD. I'm an R user that jumped to Rcpp a while ago so I
> still
> |     don't fully understand how things work under the hood with R + Rcpp.
> Any
> |     clues?
> |
> |     Best,
> |
> |     sessionInfo()
> |
> |     R version 3.2.5 (2016-04-14)
> |     Platform: x86_64-pc-linux-gnu (64-bit)
> |     Running under: Ubuntu 14.04.4 LTS
> |
> |     locale:
> |      [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=
> |     en_US.UTF-8
> |      [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8
>  LC_MESSAGES=
> |     en_US.UTF-8
> |      [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
>  LC_ADDRESS=C
> |
> |     [10] LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8
> |     LC_IDENTIFICATION=C
> |
> |     attached base packages:
> |     [1] stats     graphics  grDevices utils     datasets  methods   base
>
> |
> |     other attached packages:
> |     [1] arma64bit_0.1.0.9000 Matrix_1.2-5
> |
> |     loaded via a namespace (and not attached):
> |      [1] Rcpp_0.12.4     lattice_0.20-33 digest_0.6.9    withr_1.0.1
> |     grid_3.2.5
> |      [6] covr_2.0.1      git2r_0.14.0    magrittr_1.5    lazyeval_0.1.10
> |     rstudioapi_0.5
> |     [11] whisker_0.3-2   rex_1.1.1       rmarkdown_0.9.5 devtools_1.11.1
> |     tools_3.2.5
> |     [16] yaml_2.1.13     htmltools_0.3.5 memoise_1.0.0
> |
> |     George G. Vega Yon
> |     +1 (626) 381 8171
> |     http://www.its.caltech.edu/~gvegayon/
> |
> |     On Thu, Mar 31, 2016 at 12:37 PM, Dirk Eddelbuettel <edd at debian.org>
> wrote:
> |
> |
> |         On 29 March 2016 at 15:55, George Vega Yon wrote:
> |         | Hi there,
> |         |
> |         | A couple of days ago I included this comment on a Stackoverflow
> |         question about
> |         | "too large" matrices in RcppArmadillo
> |         | I wonder if we can use this in a package. After trying to
> compile the
> |         package
> |         | with and without PKG_CXXFLAGS=-DARMA_64BIT_WORD I'm still not
> able to
> |         create
> |         | sparse matrices bigger than 65,535 x 65,535. I've realized
> that the
> |         | RcppArmadilloConfig.h (version 0.6.600.4.0) file has
> ARMA_32BIT_WORD
> |         1 so it
> |         | actually prevents using ARMA_64BIT_WORD (I think?). Any way I
> can
> |         solve this,
> |         | or I just have to deal with R (3.2.4 Revised (2016-03-16
> r70336)) not
> |         been able
> |         | to handle 64INT?
> |         |
> |         | http://stackoverflow.com/questions/16159174/
> |         | large-spmat-object-with-rcpparmadillo
> |         |
> |         | For which Dirk answered:
> |         |
> |         | Try locally setting ARMA_64BIT_WORD (check how) -- I can't at
> the
> |         package level
> |         | as it breaks existing code. It will likely help you. If you
> set it
> |         before the #
> |         | include <RcppArmadillo.h> things may just work. That at least
> is the
> |         pln. (And
> |         | you should have asked on rcpp-devel to get more than two
> eyeballs on
> |         this...)
> |         | And yes the other answer basically says the same thing. – Dirk
> |         Eddelbuettel 2
> |         | days ago
> |         |
> |         | Now I'm asking again but on rcpp-devel =). The issue is that
> I'm
> |         concerned on
> |         | the part that Dirk says that "things may just work". I was
> reading
> |         about R not
> |         | been able to handle int64 and its implications for big
> matrices, and
> |         so I'm a
> |         | little concerned that if passing ARMA_64BIT_WORD works I may
> loose
> |         some
> |         | information on the way. For example, if I allow a users
> creating and
> |         | manipulating 1e6 x 1e6 sparse matrices, is there any chance
> for them
> |         to loose
> |         | information?
> |
> |         It is entirely possibly that nobody stresses RcppArmadillo this
> way and
> |         that
> |         setting ARMA_64BIT_WORD gets unset.   I only know that I cannot
> set it
> |         globally now as some packages (still) depend on ARMA_32BIT_WORD.
> |
> |         So I encourage you to experiment and to try locally.  Maybe
> something
> |         can
> |         (and even should) be improved.
> |
> |         Dirk
> |
> |
> |         |
> |         | Thanks,
> |         |
> |         | George G. Vega Yon
> |         | +1 (626) 381 8171
> |         | http://www.its.caltech.edu/~gvegayon/
> |         | _______________________________________________
> |         | 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
> |
> |
> |
> |
>
> --
> http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20160503/1db80f62/attachment-0001.html>


More information about the Rcpp-devel mailing list