I have the book on my desk as it happens, and it is a great one, but the appendix is better than I remembered, so I parceled it out:
http://www.flaver.com/BoydVandenberghe_appendixC_numericalLinearAlgebra.pdf (hope this helps a few other people) I bought the text because I like being able to write in the margins, but I'd forgotten how good even the appendices are. On Tue, Dec 4, 2012 at 7:01 PM, Kasper Daniel Hansen < kasperdanielhan...@gmail.com> wrote: > On Tue, Dec 4, 2012 at 9:55 PM, Christian Gunning <x...@unm.edu> wrote: > > What exactly do these timings show? A single call you your function? > > How many calls? > > > > Building on Romain's point: -- a portion of your function's runtime is > > in memory allocation > > (and you have a lot of allocations here). > > If you're calling your function thousands or millions of times, then > > it might pay to closely > > examine your memory allocation strategies and figure out what's > > temporary, for example. > > It looks like you're already using copy_aux_mem = false in a number > > of places, but you're > > allocating a lot of objects -- of approx what size? > > > > For example, wouldn't this work just as well with one less allocation? > > arma::vec kk = t; > > arma::uvec q1 = arma::find(arma::abs(tp)<h); > > kk.elem(q1) = ((1-arma::pow(tp.elem(q1)/h,2))/h)*0.75; > > // done with q1. let's reuse it. > > q1 = arma::find(arma::abs(tp)>=h); > > // was q2 > > kk.elem(q1).zeros(); > > > > You could potentially allocate memory for temporary working space in > > R, grab it with copy_aux_mem = false, write your temp results there, > > and reuse these objects in subsequent function calls. It doesn't make > > sense to go to this trouble, though, if your core algorithm consumes > > the bulk of runtime. > > > > Have you looked on the armadillo notes r.e. inv? Matrix inversion has > > O(>n^2). You may be aided by pencil-and-paper math here. > > http://arma.sourceforge.net/docs.html#inv > > Very tangential, but I have always found appendix C of Boyd's convex > optimization to be very useful on numerical linear algebra. Freely > available from the author at > http://www.stanford.edu/~boyd/cvxbook/ > (very nice book, but not something you read in an evening. Appendix C > is something that does not depend on anything else in the book > though.) > > Kasper > > > best, > > Christian > > > >> Dear All, > >> I have tried out the first example by using RcppArmadillo, but I am not > >> sure whether the code is efficient or not. And I did the comparison of > the > >> computation time. > >> > >> 1) R code using for loop in R: 87.22s > >> 2) R code using apply: 77.86s > >> 3) RcppArmadillo by using for loop in C++: 53.102s > >> 4) RcppArmadillo together with apply in R: 47.310s > >> > >> It is kind of not so big increase. I am wondering whether I used an > >> inefficient way for the C++ coding: > > > > > > > > -- > > A man, a plan, a cat, a ham, a yak, a yam, a hat, a canal – Panama! > > _______________________________________________ > > Rcpp-devel mailing list > > Rcpp-devel@lists.r-forge.r-project.org > > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > _______________________________________________ > Rcpp-devel mailing list > Rcpp-devel@lists.r-forge.r-project.org > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > -- *A model is a lie that helps you see the truth.* * * Howard Skipper<http://cancerres.aacrjournals.org/content/31/9/1173.full.pdf>
_______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel