繁体   English   中英

使用ClusterEvalQ编译Rcpp函数

[英]Compiling Rcpp functions using ClusterEvalQ

我正在开发一个需要在R中进行并行处理的项目,而且我是doparallel软件包的新手。 我想要做的是使用并行化的foreach循环。 由于问题的性质,这个foreach循环需要执行多次。 我遇到的问题是我在循环中使用cppfunction和cfunction。

目前的解决方法是为集群调用clusterEvalQ()并编译相关函数。 但是,这非常慢(4个核心约10秒)。 我在下面列出了相关代码。 有什么方法可以加快速度吗? 谢谢。

clusterEvalQ(cl, {
library("inline")
library("Rcpp")
source("C_functions.R")
}) 

是的,有一种方法可以通过仅编译一次来加速它。

特别是, 将所有已编译的代码移动R包中。 从那里,将R包安装到群集上,然后加载包。 在并行代码中,调用包中的函数。

这是必需的,因为导入到R中的C ++函数是特定于会话的。 因此,每个会话都需要自己编译。 汇编是“昂贵”的部分。

此外, 不要使用inline 相反,您应该使用Rcpp属性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM