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.na...@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.weyla...@gmail.com> wrote:
>
>> Hi Naeem,
>>
>> My (very quick) guess is that this isn't an Rcpp problem per se, but
>a
>> 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:
>>
>>
>https://stackoverflow.com/questions/18357788/parallel-parlapply-setup#18358875
>>
>> 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.na...@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
>and
>> works as expected; however, it is not available for praLapply
>workers. A
>> temporary fix is just using Rcpp::cppFunction inside the function
>that
>> parLapply workers call and copy the entire function over there.
>However,
>> 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
>better
>> long-term solution. Here is the package and three functions that you
>might
>> want to take a look at.
>> >
>> > Original cpp function:
>> >
>>
>https://github.com/fasrc/CausalGPS/blob/master/src/compute_closest_wgps_helper.cpp
>> >
>> > Wrapper function that calls this function + temporal fix:
>> >
>https://github.com/fasrc/CausalGPS/blob/master/R/compute_closest_wgps.R
>> >
>> > The function that uses parLapply (please see line 63-89) to run the
>c++
>> code:
>> >
>https://github.com/fasrc/CausalGPS/blob/master/R/compute_closest_wgps.R
>> >
>> > Best regards,
>> > Naeem
>> > _______________________________________________
>> > 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
>>

-- 
Sent from my phone. Please excuse my brevity.
_______________________________________________
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

Reply via email to