clusterExport works just fine if you put your Rcpp code into your own
package and make that package available in your worker environment. Given
the need for compilation in possibly a variety of computing environments
for parallel processing this is definitely recommended.
On May 14, 2021 10:35:25 AM PDT, Naeem Khoshnevis <
khoshnevis.naeem at gmail.com> wrote:
Hi Michael,
Thank you so much for your response. That is correct. One method for
exporting required variables/functions is using the clusterExport
function,
which does not work for Rcpp-based functions. Another option is using
clusterEvalQ (as mentioned in the shared post); however, I am not sure
if
CRAN likes to see the library(package name) inside the codebase. What
are
your thoughts?
Best regards,
Naeem
On Fri, May 14, 2021 at 11:57 AM Michael Weylandt <
michael.weylandt at gmail.com> wrote:
Hi Naeem,
My (very quick) guess is that this isn't an Rcpp problem per se, but
parLapply problem. You need to explicitly load your package on each
worker so that functions from it are available.
See, e.g., the brief discussion here:
The "parallel" packages do not exactly replicate your environment on
each worker node (to avoid expensive set-up / communication costs) so
you need to do a bit more set-up.
Best,
Michael
On Fri, May 14, 2021 at 11:49 AM Naeem Khoshnevis
<khoshnevis.naeem at gmail.com> wrote:
Dear Rcpp developers:
Thanks for developing and maintaining the Rcpp package.
I wrote a function in Rcpp. It is available throughout the package
works as expected; however, it is not available for praLapply
temporary fix is just using Rcpp::cppFunction inside the function
parLapply workers call and copy the entire function over there.
this does not seem right for bigger and more complicated functions.
I would be grateful if you could let me know whether there is a
long-term solution. Here is the package and three functions that you
Wrapper function that calls this function + temporal fix:
The function that uses parLapply (please see line 63-89) to run the