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> 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 >
_______________________________________________ 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