### compiling with R and C and parallel computing

• Problem: cannot get the R code to take advantage of parallelization via openMP.

• Solution:

C++ file mangles names in .so, changing the .C call. to get the object name:

objdump -x file.so

Carl Boettiger 03:01, 25 May 2010 (EDT): More standard solution: enclose cpp code in

 extern C {

- Problem: Trouble getting R to export the C library to all nodes. (Sol’n thanks to Vinh on R-sig-hpc!) - Also, locating the .so file in a way that is independent of package installation, needs to find the package install. (Sol’n thanks to Vince on statcompsci). (Updated on 2010-04-23). - Solution:

    loc <- system.file(package="BranchingTime")
lib <- paste(loc, "/libs/BranchingTime.so", sep="")
sfExport("lib")
sfClusterEval(dyn.load(lib) )
• Problem Random number generator needs to be specified above the parallel computation loop. Easy to do in C, but won’t work for R where the random number generator is from GSL but the parallelization is at the R level. Will need to figure out how to generate different random seeds on each thread and pass that down to the C code…

• Solution:

Now R generates and passes a random seed to the C function. (2010-04-23).

## Git Log

commit 9c4167b1943d8713ce179f48432fcb750fbda26d
Author: Carl Boettiger <cboettig@gmail.com>
Date:   Thu Apr 22 19:03:09 2010 -0700

removing unused C files integrate.c png

commit 73f389abbe53eb923f1aea49bc9f110cfa5531a7
Author: Carl Boettiger <cboettig@gmail.com>
Date:   Thu Apr 22 19:01:52 2010 -0700

minor mods

commit a8ca40ef883b1dd33e1b7ab27f8a215e7c2746f9
Author: Carl Boettiger <cboettig@gmail.com>
Date:   Thu Apr 22 18:55:32 2010 -0700

Working R calls

Author: Carl Boettiger <cboettig@gmail.com>
Date:   Thu Apr 22 15:31:10 2010 -0700

rng initialized in outer loop

reorganizing files by functions