gpt4 book ai didi

r - 如何并行化具有多个参数的函数?

转载 作者:行者123 更新时间:2023-12-02 04:22:23 25 4
gpt4 key购买 nike

我要执行一个特定的模拟,需要一些时间才能在 R 中运行。由于我想要执行 1000 个模拟,因此我决定使用“并行”包将这些模拟分布在 4 个核心上。我知道如果我有如下函数,我可以获得结果向量。

results_parallel <- parSapply(cl, c(1000,1000,1000,1000), rnorm)

这里 rnorm() 只有一个参数作为输入,这样我就可以要求使用 4 个内核生成 4000 个值。

但是我的模拟有多个参数。我的问题是,由于我有多个参数作为输入,我如何知道应该使用 4 个核心来计算哪个参数?如果 simulation1(A,B,C,m) 是我的函数,其中 m 是模拟次数,我想要求每个核心进行 250 次模拟,这样最终我可以获得 1000模拟。谁能给我提示吗?

最佳答案

您可以尝试创建一个采用单个参数而不是多个参数的函数包装器。

rnorm1 <- function(ls){
rnorm(n = ls$n, mean = ls$mean, sd = ls$sd)
}

cl <- makeCluster(2)

example_list <- list(
list(n=1000, mean = 0, sd = 1),
list(n=1000, mean = 1, sd = 2)
)

results_parallel <- parSapply(cl, example_list, rnorm1)

您只需指定所需的参数列表,使其成为列表的列表。

关于r - 如何并行化具有多个参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39950355/

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