gpt4 book ai didi

r - 如何使用 doSMP 初始化工作线程?

转载 作者:行者123 更新时间:2023-12-04 21:49:31 25 4
gpt4 key购买 nike

有没有办法初始化一个类似于 clusterEvalQ 的 doSMP 集群和 clusterExport在雪包里?例如:

x <- 1:10
y <- 10:1
z <- rnorm(10)
cl <- makeSOCKcluster(2)
clusterEvalQ(cl, library(quantmod))
clusterExport(cl, list("x","y","z"))
clusterEvalQ(cl, ls())
clusterEvalQ(cl, search())

有一个 initEnvir doSMP 选项,但 ?doSMP

 ‘initEnvir’ is a function to be executed by each worker before any
tasks are executed associated with a foreach. Its purpose is to
initialize the execution environment, or the worker in general.
It is only executed by a worker if that worker executes at least
one task associated with the foreach.


每个 worker 都需要几个大对象的副本才能运行我发送给 foreach 的表达式。 .此外,我需要调用 foreach数百次,使用这些大物体的相同版本。每次调用 foreach 时都复制这些对象是低效的。 .

即使没有现成的方法来做到这一点,我也会很感激。

最佳答案

foreach 的第一个参数是 ...它传输迭代对象以评估目标表达式。如果你只需要对象的一部分,那么使用 iter 可能更高效只传递对象的一部分。

w <- startWorkers(workerCount = 4)
registerDoSMP(w)

foreach(x=iter(x),y=iter(y),z=iter(z) ) %dopar% (x*y*z)

调用环境中的对象仍然可用:
foreach(1:10 ) %dopar% (x*y*z)  # Somewhat repetitious # 

zed <- 20:1
foreach(x=iter(x) ) %dopar% (x*zed)

关于r - 如何使用 doSMP 初始化工作线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7643071/

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