[Rcpp-devel] starter
Romain Francois
romain at r-enthusiasts.com
Wed May 31 12:46:34 CEST 2017
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.krah at 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 <romain at r-enthusiasts.com <mailto:romain at 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.krah at mailbox.org <mailto:f.krah at 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 at lists.r-forge.r-project.org <mailto:Rcpp-devel at 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>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20170531/6434355f/attachment.html>
More information about the Rcpp-devel
mailing list