From fdd4ad3894e847e7722bb93448e15118898cdf6f Mon Sep 17 00:00:00 2001 From: gabrielteotonio Date: Sat, 6 Jun 2020 22:34:24 -0300 Subject: [PATCH] feat(post): Rcpp parallel's post began --- content/post/rcpp-parallel/featured.png | Bin 0 -> 22015 bytes content/post/rcpp-parallel/index.md | 55 ++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 content/post/rcpp-parallel/featured.png create mode 100644 content/post/rcpp-parallel/index.md diff --git a/content/post/rcpp-parallel/featured.png b/content/post/rcpp-parallel/featured.png new file mode 100644 index 0000000000000000000000000000000000000000..a45f6eea9cd3fa94134fd1bea6437750b4131a29 GIT binary patch literal 22015 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 literal 0 HcmV?d00001 diff --git a/content/post/rcpp-parallel/index.md b/content/post/rcpp-parallel/index.md new file mode 100644 index 0000000..7022cf7 --- /dev/null +++ b/content/post/rcpp-parallel/index.md @@ -0,0 +1,55 @@ ++++ +title = "Getting Started with Rcpp Parallel" + +date = 2020-03-23T21:00:00 +draft = false + +authors = ["Gabriel Teotonio"] + +tags = ["C++", "Parallel", "Benchmark"] + +summary = "" + +# Projects (optional). +# Associate this post with one or more of your projects. +# Otherwise, set `projects = []`. + +#projects = ["grants", "CEEMID"] + +# Featured image +# To use, add an image named `featured.jpg/png` to your project's folder. +[image] +# Caption (optional) +caption = "" + +# Focal point (optional) +# Options: Smart, Center, TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight +focal_point = "" + +# Show image only in page previews? +preview_only = false + ++++ + +My first contact with C/C++ was in Data Structures and Algorithms course in the begging of my undergrad, by the time I learned the +classical data structures as list, queue, stack, binary tree, binary search tree, among others. In most part of my projects at +university I used to program in R and wasn't aware that the computational power of C++ could be integrated to R and make libraries +like `Armadillo`available. This reality change in my life when I was presented to `Rcpp` R library, which let us to import functions +from C++ to R session. Since then I've been using C++ integrated with R in many problems as my undergraduate thesis, which I developed +a K-means algorithm for Statistical Shape Analysis with 3-dimensional data about the cortical surface. Similar to the thesis problem, +most of my projects integrating both languages needed a good computational performance for calculating operations with big +vector/matrices structures. Now I am trying to reach a new level of this integration, by using the `RcppParallel` library to run C++ +code in R with a parallel backend. +`RcppParallel` is a R package that provides implementation of high level parallel algorithms. The main functions are: + +* `parallelFor` +* `parallelReduce` + +Throughout this post we are going to run some examples and understand how this package works and its benefits. You can install the package with the following command + +```r +install.packages("RcppParallel") +``` + +A good reminder before starting to build your parallel functions is that R is single-thread, so you code should not call the R or Rcpp API in any fashion. It can cause crashes and other undefined behavior, as pointed by documentation. +