R语言【parallel】——使用集群的使用操作

本文介绍了R语言的parallel包v4.2.0中的并行计算函数,如clusterCall、clusterApply、clusterMap等,用于在集群上进行高效计算,包括静态和动态调度,以及loadbalancing功能。这些工具提供了简化并行操作和数据分发的方法。
摘要由CSDN通过智能技术生成

Package parallel version 4.2.0


Description

这些函数提供了几种使用集群并行化计算的方法。


Usage

clusterCall(cl = NULL, fun, ...)

clusterApply(cl = NULL, x, fun, ...)

clusterApplyLB(cl = NULL, x, fun, ...)

clusterEvalQ(cl = NULL, expr)

clusterExport(cl = NULL, varlist, envir = .GlobalEnv)

clusterMap(cl = NULL, fun, ..., MoreArgs = NULL, RECYCLE = TRUE,
           SIMPLIFY = FALSE, USE.NAMES = TRUE,
           .scheduling = c("static", "dynamic"))

clusterSplit(cl = NULL, seq)

parLapply(cl = NULL, X, fun, ..., chunk.size = NULL)

parSapply(cl = NULL, X, FUN, ..., simplify = TRUE,
          USE.NAMES = TRUE, chunk.size = NULL)

parApply(cl = NULL, X, MARGIN, FUN, ..., chunk.size = NULL)

parRapply(cl = NULL, x, FUN, ..., chunk.size = NULL)

parCapply(cl = NULL, x, FUN, ..., chunk.size = NULL)

parLapplyLB(cl = NULL, X, fun, ..., chunk.size = NULL)

parSapplyLB(cl = NULL, X, FUN, ..., simplify = TRUE,
            USE.NAMES = TRUE, chunk.size = NULL)

Arguments

参数【cl】:一个集群对象,由这个包或包snow创建。如果为NULL,则使用已注册的默认集群。

参数【fun,FUN】:函数或命名函数的字符串。

参数【expr】:表达式求值。

参数【seq】:向量分割。

参数【varlist】:要导出的对象名称的字符向量

参数【envir】:从中导出变量的环境

参数【x】:一个用于clusterApply和clusterApplyLB的向量,一个用于parRapply和parcapapply的矩阵。

参数【...】:传递给fun或fun的附加参数:注意与先前参数的部分匹配。

参数【MoreArgs】:其他传递给fun的参数。

参数【RECYCLE】:逻辑值。如果为真,则循环使用较短的参数。

参数【X】:用于parApply和parSapply的向量(原子或列表),用于parApply的数组。

参数【chunk.size】:标量值;在一个块中调用fun或fun的次数;块是用于调度的单元。

参数【MARGIN】:指定要使用的尺寸的向量。

参数【simplify,USE.NAMES】:逻辑值。参将sapply

参数【SIMPLIFY】:逻辑值。参见mapply

参数【.scheduling】:任务应该静态地分配给节点还是使用动态负载平衡?


Details

clusterCall使用相同的参数调用函数fun…在每个节点上。

clusterEvalQ计算每个集群节点上的文字表达式。它是evalq的并行版本,是一个调用clusterCall的方便函数。

clusterApply在第一个节点上调用fun,参数x[[1]]和…,在第二个节点上有x[[2]]和…等等,根据需要回收节点。

clusterApplyLB是clusterApply的负载均衡版本。如果x的长度n不大于节点数p,则将作业发送给n个节点。否则,前p个作业将按顺序放置在p个节点上。当第一个作业完成后,下一个作业被放置在空闲的节点上;这将持续到所有作业完成为止。使用clusterApplyLB可以获得比使用clusterApply更好的集群利用率,但是增加的通信可能会降低性能。此外,执行特定作业的节点是不确定的。这意味着将RNG流分配给节点的模拟将无法重现。

clusterMap是clusterApply的多参数版本,类似于mapply和Map。如果RECYCLE为真,则回收较短的参数(并且none或all的长度必须为零);否则,结果长度为最短参数的长度。如果结果的长度大于节点数,则回收节点。(mapply总是使用RECYCLE = TRUE,并有参数SIMPLIFY = TRUE.Map总是使用RECYCLE = TRUE。)

clusterExport将varlist中指定的变量的主R进程上的值分配给每个节点的全局环境(又名“工作区”)中同名的变量。从主机上导出变量的环境默认为全局环境。

clusterSplit将seq拆分为每个集群的连续片段,并将结果作为长度等于节点数的列表返回。目前,每片被选择为长度接近相等的:计算是在主节点上完成的。

parApply、parSapply和parApply是lapply、sapply和apply的并行版本。计算块使用clusterApply静态地分配给节点。缺省情况下,块的数量与节点的数量相同。parSapplyLB和parSapplyLB是负载平衡版本,用于将FUN应用于X的不同元素所需的时间变化很大,并且函数是确定的或不需要可重复的结果时。使用clusterApplyLB动态地将计算块分配给节点。从R 3.5.0开始,块的默认数量是节点数量的两倍。在R 3.5.0之前,(固定的)块数与节点数相同。至于clusterApplyLB,使用负载平衡,执行特定作业的节点是不确定的,将RNG流分配给节点的模拟将无法重现。

parRapply和parapply是矩阵x的并行行和列应用函数;它们可能比parApply更有效,但对结果的后处理更少。

静态调度的块大小为0使用默认值(每个节点一个块)。对于动态调度,块大小为0与1具有相同的效果(每个块调用一次FUN/ FUN)。


Value

对于clusterCall、clusterEvalQ和clusterSplit,每个节点有一个元素的列表。

对于clusterApply和clusterApplyLB,一个与x长度相同的列表。

clusterMap 执行 mapply。

clusterExport 不返回值。

parLapply 返回一个长度与X相同的列表。

parSapply 和 parAlly 分别执行 sapply 和 apply。

parRapply和parcapapply总是返回一个向量。如果FUN总是返回一个标量结果,那么它的长度将等于行数或列数;否则,它将是返回值的串联。

如果任何工作线程产生错误,则在主服务器上发出错误信号。


Note

这些功能与包snow中的功能几乎相同。

有两个例外:为了与lapply保持一致,parapply的参数X不是X, parSapply已经更新为与sapply匹配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ALittleHigh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值