<div dir="ltr">I think I've found a solution for this. I've submitted a pull request here <a href="https://github.com/RcppCore/RcppArmadillo/pull/88">https://github.com/RcppCore/RcppArmadillo/pull/88</a>. 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 <a href="https://github.com/gvegayon/arma64bit">https://github.com/gvegayon/arma64bit</a>.<div><br></div><div>Best,</div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div>George G. Vega Yon<br>+1 (626) 381 8171<br><a href="http://www.its.caltech.edu/~gvegayon/" target="_blank">http://www.its.caltech.edu/~gvegayon/</a></div></div></div></div>
<br><div class="gmail_quote">On Thu, Apr 28, 2016 at 6:07 PM, George Vega Yon <span dir="ltr"><<a href="mailto:g.vegayon@gmail.com" target="_blank">g.vegayon@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hey!<div><br></div><div>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: <a href="https://github.com/gvegayon/arma64bit" target="_blank">https://github.com/gvegayon/arma64bit</a>. Following Dirk's advice, I've included the #define ARMA_64BIT_WORD before #include <RcppArmadillo.h> (as seen here <a href="https://github.com/gvegayon/arma64bit/blob/c10b5d4a80b93088da730e45ee8c583feeff2ab6/src/misc.cpp#L2-L3" target="_blank">https://github.com/gvegayon/arma64bit/blob/c10b5d4a80b93088da730e45ee8c583feeff2ab6/src/misc.cpp#L2-L3</a>) 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):</div><div><br></div><div>> x <- sp_runif(1e5,1e5,.01)<br></div><div><div><br></div><div>error: SpMat::init(): requested size is too large</div><div>Error: SpMat::init(): requested size is too large</div></div><div><br></div><div>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?</div><div><br></div><div>Best,</div><div><br></div><div>sessionInfo()</div><div><br></div><div><div>R version 3.2.5 (2016-04-14)</div><div>Platform: x86_64-pc-linux-gnu (64-bit)</div><div>Running under: Ubuntu 14.04.4 LTS</div><div><br></div><div>locale:</div><div> [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8       </div><div> [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   </div><div> [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C              </div><div>[10] LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       </div><div><br></div><div>attached base packages:</div><div>[1] stats     graphics  grDevices utils     datasets  methods   base     </div><div><br></div><div>other attached packages:</div><div>[1] arma64bit_0.1.0.9000 Matrix_1.2-5        </div><div><br></div><div>loaded via a namespace (and not attached):</div><div> [1] Rcpp_0.12.4     lattice_0.20-33 digest_0.6.9    withr_1.0.1     grid_3.2.5     </div><div> [6] covr_2.0.1      git2r_0.14.0    magrittr_1.5    lazyeval_0.1.10 rstudioapi_0.5 </div><div>[11] whisker_0.3-2   rex_1.1.1       rmarkdown_0.9.5 devtools_1.11.1 tools_3.2.5    </div><div>[16] yaml_2.1.13     htmltools_0.3.5 memoise_1.0.0  </div></div></div><div class="gmail_extra"><span class=""><br clear="all"><div><div><div dir="ltr"><div>George G. Vega Yon<br><a href="tel:%2B1%20%28626%29%20381%208171" value="+16263818171" target="_blank">+1 (626) 381 8171</a><br><a href="http://www.its.caltech.edu/~gvegayon/" target="_blank">http://www.its.caltech.edu/~gvegayon/</a></div></div></div></div>
<br></span><div><div class="h5"><div class="gmail_quote">On Thu, Mar 31, 2016 at 12:37 PM, Dirk Eddelbuettel <span dir="ltr"><<a href="mailto:edd@debian.org" target="_blank">edd@debian.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><br>
On 29 March 2016 at 15:55, George Vega Yon wrote:<br>
| Hi there,<br>
|<br>
| A couple of days ago I included this comment on a Stackoverflow question about<br>
| "too large" matrices in RcppArmadillo<br>
| I wonder if we can use this in a package. After trying to compile the package<br>
| with and without PKG_CXXFLAGS=-DARMA_64BIT_WORD I'm still not able to create<br>
| sparse matrices bigger than 65,535 x 65,535. I've realized that the<br>
| RcppArmadilloConfig.h (version 0.6.600.4.0) file has ARMA_32BIT_WORD 1 so it<br>
| actually prevents using ARMA_64BIT_WORD (I think?). Any way I can solve this,<br>
| or I just have to deal with R (3.2.4 Revised (2016-03-16 r70336)) not been able<br>
| to handle 64INT?<br>
|<br>
| <a href="http://stackoverflow.com/questions/16159174/" rel="noreferrer" target="_blank">http://stackoverflow.com/questions/16159174/</a><br>
| large-spmat-object-with-rcpparmadillo<br>
|<br>
| For which Dirk answered:<br>
|  <br>
| Try locally setting ARMA_64BIT_WORD (check how) -- I can't at the package level<br>
| as it breaks existing code. It will likely help you. If you set it before the #<br>
| include <RcppArmadillo.h> things may just work. That at least is the pln. (And<br>
| you should have asked on rcpp-devel to get more than two eyeballs on this...)<br>
| And yes the other answer basically says the same thing. – Dirk Eddelbuettel 2<br>
| days ago<br>
|<br>
| Now I'm asking again but on rcpp-devel =). The issue is that I'm concerned on<br>
| the part that Dirk says that "things may just work". I was reading about R not<br>
| been able to handle int64 and its implications for big matrices, and so I'm a<br>
| little concerned that if passing ARMA_64BIT_WORD works I may loose some<br>
| information on the way. For example, if I allow a users creating and<br>
| manipulating 1e6 x 1e6 sparse matrices, is there any chance for them to loose<br>
| information?<br>
<br>
</div></div>It is entirely possibly that nobody stresses RcppArmadillo this way and that<br>
setting ARMA_64BIT_WORD gets unset.   I only know that I cannot set it<br>
globally now as some packages (still) depend on ARMA_32BIT_WORD.<br>
<br>
So I encourage you to experiment and to try locally.  Maybe something can<br>
(and even should) be improved.<br>
<br>
Dirk<br>
<span><br>
<br>
|<br>
| Thanks,<br>
|<br>
| George G. Vega Yon<br>
| <a href="tel:%2B1%20%28626%29%20381%208171" value="+16263818171" target="_blank">+1 (626) 381 8171</a><br>
| <a href="http://www.its.caltech.edu/~gvegayon/" rel="noreferrer" target="_blank">http://www.its.caltech.edu/~gvegayon/</a><br>
</span>| _______________________________________________<br>
| Rcpp-devel mailing list<br>
| <a href="mailto:Rcpp-devel@lists.r-forge.r-project.org" target="_blank">Rcpp-devel@lists.r-forge.r-project.org</a><br>
| <a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel" rel="noreferrer" target="_blank">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel</a><br>
<span><font color="#888888"><br>
--<br>
<a href="http://dirk.eddelbuettel.com" rel="noreferrer" target="_blank">http://dirk.eddelbuettel.com</a> | @eddelbuettel | <a href="mailto:edd@debian.org" target="_blank">edd@debian.org</a><br>
</font></span></blockquote></div><br></div></div></div>
</blockquote></div><br></div>