[Rcpp-devel] Segfault error during simulation in Rcpp

Dirk Eddelbuettel edd at debian.org
Fri May 17 05:11:56 CEST 2013


On 16 May 2013 at 19:14, Jonathan Olmsted wrote:
| Matteo,
| 
|  
| 
|     The other obvious of course is that you are not forced to control a loop
|     over
|     10^6 elements from R either:  pass N=10^6 down to C++ code, and run your N
|     loops there.  You will also get a considerable speed boost.
| 
| 
| 
| ^ I could have been more explicit. This is what I meant. You might may or may
| not be able to do this in the sourceCpp() framework, though. How you do this is
| much more obvious if you go the route of making an Rcpp package. For as much as
| the convenience functions are a blessing, I've always found it hard to think
| about how I'd do more complex things with them. It could be possible, I just
| don't see it. I find the package approach to be a nice balance between
| abstracting away from some details but keeping some in the forefront of your
| mind. If you email me off the list and I can send you a very small package that
| using Rcpp. Multiple C++ functions are created, only some are exposed to R.

Another great post, but note that Rcpp.package.skeleton() already does most
of that.  Plus existing CRAN packages as eg wordcloud (one R function
rewritten as one C++ function).

Dirk

 
| It seems like you'd probably do something similar.
| 
| -Jonathan
| 
| 
| 
|  
| 
|     | On Thu, May 16, 2013 at 8:11 PM, Dirk Eddelbuettel <edd at debian.org>
|     wrote:
|     |
|     |
|     |     On 16 May 2013 at 14:49, Jonathan Olmsted wrote:
|     |     | Several things.
|     |     |
|     |     | Xiao, Dirk's code gives me a segfault immediately and reliably.
|     |     |
|     |     | All, when I do this whole song and dance using the "old" Rcpp/
|     inline/
|     |     | cxxfunction approach, I don't have any issues. One obvious
|     difference you
|     |     can
|     |     | see (like was mentioned) in the generated code (visibile using
|     verbose=
|     |     TRUE) is
|     |     | the declaration of an RNGScope object.
|     |     |
|     |     | But, if the memory issue crops up when you call a C++ function 
|     (syncing
|     |     with
|     |     | R's RNG state) 1e6 times AND you are already writing C++ maybe
|     this is
|     |     an
|     |     | opportunity to just put one more layer of the code into C++ and
|     create
|     |     only one
|     |     | such RNGScope object?
|     |
|     |     Beautiful. So we get to blame R Core after all?  ;-)
|     |
|     |     Dirk
|     |
|     |     --
|     |     Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
|     |     _______________________________________________
|     |     Rcpp-devel mailing list
|     |     Rcpp-devel at lists.r-forge.r-project.org
|     |     https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/
|     rcpp-devel
|     |
|     |
| 
|     --
|     Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
| 
| 

-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com


More information about the Rcpp-devel mailing list