Sorry, I read this post just by chance, did I understand correctly, the class Rcpp::Matrix are not thread safe? Is there any problem in writing code such as:
mat(i,j) = something in a multithreaded environment (such as inside a "#pragma omp parallel for" loop)? My scripts are full of such loops. I have assumed that it was the same as doing: double* M = mat.begin(); M[i + ncol*j] = something; This at least should be thread safe, right? Thx a lot! Ale On Tue, Jul 15, 2014 at 12:00 PM, <[email protected]> wrote: > Send Rcpp-devel mailing list submissions to > [email protected] > > To subscribe or unsubscribe via the World Wide Web, visit > > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > > or, via email, send a message with subject or body 'help' to > [email protected] > > You can reach the person managing the list at > [email protected] > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of Rcpp-devel digest..." > > > Today's Topics: > > 1. Re: parallel distance matrix calculation (JJ Allaire) > 2. Re: parallel distance matrix calculation (JJ Allaire) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Mon, 14 Jul 2014 10:45:06 -0400 > From: JJ Allaire <[email protected]> > To: Dirk Eddelbuettel <[email protected]> > Cc: "[email protected]" > <[email protected]> > Subject: Re: [Rcpp-devel] parallel distance matrix calculation > Message-ID: > <CAKw=oCxkxeHkM4Q=aFMk+9SrQaM1e-Hao1Mh=qgkzn22hco...@mail.gmail.com> > Content-Type: text/plain; charset="utf-8" > > Here's a parallel version: > > https://github.com/jjallaire/RcppParallel/blob/master/inst/examples/parallel-distance-matrix.cpp > > To make the code reasonable I introduced a new RMatrix<T> class in > RcppParallel that makes offsetting into rows and columns safe and > straightforward. This class has no connection on the R or Rcpp APIs so is > guaranteed to be thread-safe. > > On a 4 core machine (8 with hyperthreading) I'm observing a 10x speedup. > The parallel related speedup is 4x. There is an additional 2.5x speedup > which appears to be related to the lower level access to the Matrix memory > done by RMatrix<T> (and perhaps some elimination of copying). > > > > > On Sun, Jul 13, 2014 at 7:27 AM, Dirk Eddelbuettel <[email protected]> wrote: > >> >> On 12 July 2014 at 12:37, JJ Allaire wrote: >> | If you could send the full source code to your example (including >> js_distance >> | and whatever R code you are using to test/exercise the functions) I'll >> see if I >> | can come up with the code you'd use to parallelize the outer loop. >> Depending on >> | how it turns out perhaps we can even convert this into another gallery >> article! >> >> That's the spirit! [ I had another quick look at the inner-product example >> which is short and nice, but there is just too little of a pickup there... >> ] >> >> Dirk >> >> -- >> http://dirk.eddelbuettel.com | @eddelbuettel | [email protected] >> > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: > <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20140714/a4fcf62a/attachment-0001.html> > > ------------------------------ > > Message: 2 > Date: Mon, 14 Jul 2014 12:48:25 -0400 > From: JJ Allaire <[email protected]> > To: Dirk Eddelbuettel <[email protected]> > Cc: "[email protected]" > <[email protected]> > Subject: Re: [Rcpp-devel] parallel distance matrix calculation > Message-ID: > <CAKw=ocycdv98htuhruf+xlbkkfump3l64hjx4ku6uodjjar...@mail.gmail.com> > Content-Type: text/plain; charset="utf-8" > >> On a 4 core machine (8 with hyperthreading) I'm observing a 10x speedup. >> The parallel related speedup is 4x. There is an additional 2.5x speedup >> which appears to be related to the lower level access to the Matrix memory >> done by RMatrix<T> (and perhaps some elimination of copying). >> > > It turns out that the additional slowdown in the serial version was due to > repeatedly calling Vector::length as a loop termination condition. I > re-wrote the serial version using iterators and now the speedup from > parallel is about 5x (more in line with expectations). > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: > <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20140714/39077e47/attachment-0001.html> > > ------------------------------ > > _______________________________________________ > Rcpp-devel mailing list > [email protected] > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > > End of Rcpp-devel Digest, Vol 57, Issue 18 > ****************************************** -- Alessandro Mammana, PhD Student Max Planck Institute for Molecular Genetics Ihnestraße 63-73 D-14195 Berlin, Germany _______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
