Re: [Rcpp-devel] starter

2017-05-31 Thread Romain Francois
This looks like a copy and paste mistake. I can definitely see this line on the 
slide 57: 
RMatrix output; 

Anyway, the example is there: 
http://gallery.rcpp.org/articles/parallel-matrix-transform/ 


Romain

> Le 31 mai 2017 à 12:42, 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 
>  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 > > 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  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 
>>>  ^
>>> 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 
>>> 
>>> using namespace Rcpp;
>>> #include 
>>> #include 
>>> #include 
>>> 
>>> // [[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 input;
>>>   // source matrix RMatrix 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 
>>> 
>>> 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

Re: [Rcpp-devel] starter

2017-05-31 Thread f.k...@mailbox.org
Thanks Romain,

this error is fine now, however, now I run into new…
I took the example code from this 
 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  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  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 
>>  ^
>> 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 
>> 
>> using namespace Rcpp;
>> #include 
>> #include 
>> #include 
>> 
>> // [[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 input;
>>   // source matrix RMatrix 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 
>> 
>> 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

Re: [Rcpp-devel] starter

2017-05-31 Thread Romain Francois
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 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 
>  ^
> 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 
> 
> using namespace Rcpp;
> #include 
> #include 
> #include 
> 
> // [[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 input;
>   // source matrix RMatrix 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
> 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

[Rcpp-devel] starter

2017-05-31 Thread f.k...@mailbox.org
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 
 ^
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 

using namespace Rcpp;
#include 
#include 
#include 

// [[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 input;
  // source matrix RMatrix 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
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel