Darn… it thought it is a copy error but couldn't find the fault!! Thanks a lot. Not it is working. Hope I can now transfer the stuff to my 3-nest-loop..
Cheers, Franz > On 31 May 2017, at 12:46, Romain Francois <rom...@r-enthusiasts.com> wrote: > > This looks like a copy and paste mistake. I can definitely see this line on > the slide 57: > RMatrix<double> output; > > Anyway, the example is there: > http://gallery.rcpp.org/articles/parallel-matrix-transform/ > <http://gallery.rcpp.org/articles/parallel-matrix-transform/> > > Romain > >> Le 31 mai 2017 à 12:42, f.k...@mailbox.org <mailto:f.k...@mailbox.org> a >> écrit : >> >> Thanks Romain, >> >> this error is fine now, however, now I run into new… >> I took the example code from this >> <http://dirk.eddelbuettel.com/papers/rcpp_rfinance_may2015.pdf> presentation >> of Dirk >> >> >> > Rcpp::sourceCpp("src/par_example.cpp") >> par_example.cpp:26:21: error: member initializer 'output' does not name a >> non-static data member or base class >> : input(input), output(output) {} >> ^~~~~~~~~~~~~~ >> par_example.cpp:31:5: error: use of undeclared identifier 'output' >> output.begin() + begin, >> ^ >> 2 errors generated. >> make: *** [par_example.o] Error 1 >> >> >> Hope this is as easily solved as the before error. >> >> Cheers, Franz >> >> >> >> >>> On 31 May 2017, at 12:26, Romain Francois <rom...@r-enthusiasts.com >>> <mailto:rom...@r-enthusiasts.com>> wrote: >>> >>> You can add this somewhere on top of your cpp file >>> >>> // [[Rcpp::depends(RcppParallel)]] >>> >>> Romain >>> >>>> Le 31 mai 2017 à 12:22, f.k...@mailbox.org <mailto:f.k...@mailbox.org> a >>>> écrit : >>>> >>>> Hi all, >>>> >>>> I am very new to Rcpp and I wrote a function which I now want to >>>> parallelize. >>>> The function is working fine, and is much faster than in R, however, it >>>> really is slow for bigger datasets. >>>> >>>> Since the function is running I don’t need to explain what it does, >>>> however, it is has >>>> 3 nested for loops. It loops through columns and within each column if >>>> loops through the rows and in a third loop produces pair comparisons… >>>> >>>> So the parallelisation should parallelize the column loop. >>>> >>>> I found the RcppParallel package and for the beginning wanted to run on of >>>> the example to understand the >>>> workflow first. However, I already have issues running the code below: >>>> >>>> following is sourced with: Rcpp::sourceCpp("src/par_example.cpp") >>>> However, I get the error: >>>> >>>> par_example.cpp:6:10: fatal error: 'RcppParallel.h' file not found >>>> #include <RcppParallel.h> >>>> ^ >>>> 1 error generated. >>>> make: *** [par_example.o] Error 1 >>>> >>>> I would much appreciate if someone could give me a start with this! >>>> >>>> Cheers, >>>> Franz >>>> >>>> >>>> >>>> #include <Rcpp.h> >>>> >>>> using namespace Rcpp; >>>> #include <cmath> >>>> #include <algorithm> >>>> #include <RcppParallel.h> >>>> >>>> // [[Rcpp::export]] >>>> NumericMatrix matrixSqrt(NumericMatrix orig) { >>>> // allocate the matrix we will return >>>> NumericMatrix mat(orig.nrow(), orig.ncol()); >>>> // transform it >>>> std::transform(orig.begin(), orig.end(), mat.begin(), ::sqrt); >>>> // return the new matrix >>>> return mat; >>>> } >>>> >>>> >>>> using namespace RcppParallel; >>>> struct SquareRoot : public Worker { >>>> const RMatrix<double> input; >>>> // source matrix RMatrix<double> output; // destination matrix >>>> // initialize with source and destination >>>> SquareRoot(const NumericMatrix input, NumericMatrix output) >>>> : input(input), output(output) {} >>>> // take the square root of the range of elements requested >>>> void operator()(std::size_t begin, std::size_t end) { >>>> std::transform(input.begin() + begin, >>>> input.begin() + end, >>>> output.begin() + begin, >>>> ::sqrt); >>>> } >>>> }; >>>> >>>> // [[Rcpp::export]] >>>> NumericMatrix parallelMatrixSqrt(NumericMatrix x) { >>>> // allocate the output matrix >>>> NumericMatrix output(x.nrow(), x.ncol()); >>>> // SquareRoot functor (pass input and output matrixes) >>>> SquareRoot squareRoot(x, output); >>>> // call parallelFor to do the work >>>> parallelFor(0, x.length(), squareRoot); >>>> // return the output matrix >>>> return output; } >>>> >>>> >>>> >>>> _______________________________________________ >>>> Rcpp-devel mailing list >>>> Rcpp-devel@lists.r-forge.r-project.org >>>> <mailto:Rcpp-devel@lists.r-forge.r-project.org> >>>> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel >>>> <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