- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在实现一个并行处理系统,该系统最终将部署在集群上,但我无法弄清楚各种并行处理方法如何交互。
我需要使用 for 循环来运行一大块代码,其中包含几个大型矩阵操作列表。为了加快速度,我想用 foreach() 并行化 for 循环,并用 mclapply 并行化列表操作。
示例伪代码:
cl<-makeCluster(2)
registerDoParallel(cl)
outputs <- foreach(k = 1:2, .packages = "various packages") {
l_output1 <- mclapply(l_input1, function, mc.cores = 2)
l_output2 <- mclapply(l_input2, function, mc.cores = 2)
return = mapply(cbind, l_output1, l_output2, SIMPLIFY=FALSE)
}
最佳答案
我认为在集群上这是一种非常合理的方法,因为它允许您在使用多个节点的同时仍然使用更高效的 mclapply
跨越各个节点的核心。它还允许您对工作人员进行一些后处理(在这种情况下调用 cbind
),这可以显着提高性能。
在一台机器上,您的示例将创建总共 10 个附加进程:两个由 makeCluster
创建。其中每个调用mclapply
两次 (2 + 2(2 + 2))。但是,一次只有四个应该使用任何重要的 CPU 时间。您可以通过重组 mclapply
调用的函数将其减少到八个进程。这样您只需调用mclapply
一次在 foreach 循环中,这可能更有效。
在多台机器上,您将创建相同数量的进程,但每个节点只有两个进程一次会占用大量 CPU 时间。由于它们分布在多台机器上,因此应该可以很好地扩展。
请注意 mclapply
如果您使用 MPI 集群,可能无法正常播放。 MPI 不希望你 fork 进程,如 mclapply
做。它可能只是发出一些严厉的警告,但我也看到了other problems ,所以我建议使用 PSOCK 集群,它使用 ssh 在远程节点上启动工作人员,而不是使用 MPI。
更新
调用 mclapply
似乎有问题来自由“parallel”和“snow”包创建的集群 worker 。欲了解更多信息,请参阅我的 answer to a problem report .
关于r - 同时与 foreach 和 mclapply 并行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34704733/
我正在尝试使用 mclapply parallel的功能包裹在 R .该函数通过计算对数似然距离(CPU 密集型操作)将值分配给序列矩阵。 由此产生的 system.time值(value)观令人困惑
我正在尝试使用 mclapply() 并行处理一堆 csv 文件并返回 R 中的数据帧.我有一台 64 核机器,我似乎无法使用 mclapply() 获得目前使用的 1 个内核。 .其实运行lappl
我创建了一个函数 DevCstat()。 它接受参数:indat、mod、Covar、txtMat、PatCovar。 indat 是一个列表,我想将该函数应用于列表的每个元素。 mod、Covar、
我正在与 mclapply 一起工作来自 multicore包(在 Ubuntu 上),我正在编写一个函数,该函数要求 mclapply(x, f) 的结果按顺序返回(即 f(x[1]), f(x[2
我无法理解 mclapply 的行为(或者可能是其他东西)。 我做类似的事情: opt.Models = mclapply(1:100, mc.cores=20, function(i){ r
在一个函数中,我需要为列表中的每个项目运行 mclapply,它还应该使用一个半全局变量 var.1。我不想将 var.1 添加到每个列表项,因为它会占用太多内存。这是说明问题的代码: library
我一直在一台安装了 linux mint (debian) 的旧笔记本电脑上玩 rstudio 服务器。 我一直在 windows 上运行,所以我从来没有利用过 parallel 或 multicor
当mclapply(X, FUN) X 的某些值遇到错误,错误会传播到 X 的一些(但不是全部)其他值。 : require(parallel) test <- function(x) if(x ==
想象一下,我们正在执行许多过程,我想在程序开始时设置一个整体种子:例如 mylist <- list( as.list(rep(NA,3)), as.list(rep(NA,3)) ) foo <-
我正在使用 https://github.com/mplatzer/BTYDplus/blob/master/R/pareto-nbd-mcmc.r 中给出的 BTYD plus 代码.此代码使用 M
我正在尝试运行一些 R 代码,它由于内存而崩溃。我得到的错误是: Error in sendMaster(try(lapply(X = S, FUN = FUN, ...), silent = TRU
当我使用 mclapply 时,有时(非常随机)它会给出不正确的结果。该问题在 Internet 上的其他帖子中得到了非常详尽的描述,例如( http://r.789695.n4.nabble.com
我有一些数据涉及重复销售一堆具有唯一 ID 的汽车。一辆汽车可以卖出不止一次。 但是有些 ID 是错误的,所以我正在检查每个 ID 的尺寸是否在多次销售中记录为相同。如果不是,那么我知道 Id 是错误
我喜欢 plyr's llply 中的设置 .progress = 'text'。然而,这让我非常焦虑,不知道 mclapply (来自 multicore 包)有多远,因为列表项被发送到各个核心,然
如果在任何一个中遇到错误(例如 stop()),是否可以请求 parallel::mclapply() 尽快放弃所有进一步处理它的流程? 最佳答案 这是另一种方法:想法是在用#!! 指示的三个位置修改
我正在学习 R 中的并行计算,我在实验中发现了这种情况。 简而言之,在下面的示例中,为什么 t 中 'user' 的大多数值小于 mc_t 中的值?我的机器有 32GB 内存,2 个 CPU,4 核和
我正在使用 parallel 包中的 mclapply 来估计在高性能集群上使用 lme4 包的混合 glmer 模型。我遇到问题 described here 。我应用了添加 mc.presched
我在 Linux 上运行并且很容易使用 mclapply。我在使用 parlapply 时遇到了一些错误,即使在使用 clusterEvalQ 之后也是如此。 在我进一步解决这个问题之前,有什么要点吗
使用 Rscript 时,我间歇性地收到以下错误调用 mclapply从命令行: Error in sendMaster(try(lapply(X = S, FUN = FUN, ...), sile
无论线程和操作系统的数量如何,是否可以以可重现的方式使用 mclapply 运行一些基于排列的函数? 下面是一个玩具示例。对结果排列的向量列表进行散列只是为了方便比较结果。我尝试了不同的 RNGkin
我是一名优秀的程序员,十分优秀!