gpt4 book ai didi

r - 将 R Parallel 与其他 R 包一起使用

转载 作者:行者123 更新时间:2023-12-04 11:05:07 24 4
gpt4 key购买 nike

我正在使用 R 中的 LQMM 包进行非常耗时的分析。我将模型设置为从星期四开始运行,现在是星期一,并且仍在运行。我对模型本身充满信心(作为标准 MLM 测试),并且对我的 LQMM 代码充满信心(使用相同的数据集运行了其他几个非常相似的 LQMM,并且它们都花了一天的时间来运行)。但如果可能的话,我真的很想弄清楚如何使用我有权访问的机器的并行处理功能使运行速度更快(注意所有机器都基于 Microsoft Windows)。

我已经阅读了几篇关于使用并行的教程,但我还没有找到一个展示如何将并行包与其他 R 包一起使用的教程......我是不是想得太多了,还是不可能?

这是我使用 R 包 LQMM 运行的代码:

install.packages("lqmm")
library(lqmm)
g1.lqmm<-lqmm(y~x+IEP+pm+sd+IEPZ+IEP*x+IEP*pm+IEP*sd+IEP*IEPZ+x*pm+x*sd+x*IEPZ,random=~1+x+IEP+pm+sd+IEPZ, group=peers, tau=c(.1,.2,.3,.4,.5,.6,.7,.8,.9),na.action=na.omit,data=g1data)

该数据集对 58 个变量有 122433 个观测值。所有变量均采用 z 评分或虚拟编码。

最佳答案

需要在所有节点上评估依赖库。函数clusterEvalQparallel内预见为此目的打包。您可能还需要将一些数据导出到子节点的全局环境:为此,您可以使用 clusterExport功能。另查看 this page有关可能对您有用的其他相关功能的更多信息。

通常,要通过使用多个内核来加速您的应用程序,您必须将您的问题分成多个子块,这些子块可以在不同的内核上并行处理。要在 R 中实现这一点,您首先需要创建一个集群并为其分配特定数量的内核。接下来,您必须注册集群,将所需的变量导出到节点,然后评估每个子节点上的必要库。您设置集群和启动节点的确切方式将取决于您将使用的子库和函数的类型。例如,当您选择使用 doParallel 时,您的集群设置可能如下所示。包(以及大多数其他并行化子库/函数):

library(doParallel)
nrCores <- detectCores()
cl <- makeCluster(nrCores)
registerDoParallel(cl);
clusterExport(cl,c("g1data"),envir=environment());
clusterEvalQ(cl,library("lqmm"))

集群现已准备就绪。您现在可以将全局任务的子部分分配给集群中的每个单独节点。在下面的一般示例中,集群中的每个节点都将处理子部分 i的全局任务。在示例中,我们将使用 foreach %dopar% doParallel 提供的功能包裹:

The doParallel package provides a parallel backend for the foreach/%dopar% function using the parallel package of R 2.14.0 and later.



子结果将自动添加到 resultList .最后,当所有子流程完成后,我们合并结果:
resultList <- foreach(i = 1:nrCores) %dopar%
{
#process part i of your data.
}
stopCluster(cl)
#merge data..

由于您的问题不是专门关于如何拆分您的数据,我会让您自己弄清楚这部分的详细信息。但是,您可以使用 doParallel 找到更详细的示例。包裹在我对 this post 的回答中.

关于r - 将 R Parallel 与其他 R 包一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30037829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com