问题标签 [rparallel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
453 浏览

r - R bigmemory 总是使用支持文件?

我们正在尝试使用带有 foreach 的 BigMemory 库来并行我们的分析。但是, as.big.matrix 函数似乎总是使用 backingfile。我们的工作站有足够的内存,有没有办法在没有备份文件的情况下使用 bigMemory?

这段代码x.big.desc <-describe(as.big.matrix(x))非常慢,因为它将数据写入C:\ProgramData\boost_interprocess\. 不知何故,它比直接保存 x 慢,是 as.big.matrix 具有较慢的 I/O 吗?

这段代码x.big.desc <-describe(as.big.matrix(x, backingfile = ""))非常快,但是,它也会将数据的副本保存到 %TMP% 目录。我们认为它之所以快,是因为 R 启动了后台写入过程,而不是实际写入数据。(R提示返回后我们可以在TaskManager中看到写线程)。

有没有办法仅将 BigMemory 与 RAM 一起使用,以便 foreach 循环中的每个工作人员都可以通过 RAM 访问数据?

谢谢您的帮助。

0 投票
2 回答
119 浏览

r - 建议“并行”的包无法在 Windows 中编译

我正在开发一个建议R 的并行包的包(所以我的 DESCRIPTION 有一个Suggests: parallel (>= 1.13.1)声明。它在 OSX 和 Linux 下编译良好,但在 Windows 上构建时失败(使用win-builder)。这是 win-生成器吐出:

在此处找到 win-builder 的完整输出https://win-builder.r-project.org/4k9QC0st397H/

只有一个函数尝试使用parallel。它或多或少是这样的:

关于问题是什么的任何想法?

0 投票
1 回答
275 浏览

r - R中'foreach'和'parallel'之间的区别?

正如标题所示,我对这两个包之间的区别感到困惑,因为它们都用于 R 中的并行计算。

0 投票
1 回答
79 浏览

r - 具有共享 stderr 重定向的多会话并行性

我正在尝试使用多会话并行性运行 R 代码,以便所有错误消息都重定向到同一个文件。但是,sink()无法创建。


编辑

鉴于一些回应,我应该详细说明这篇文章的目的。我正在开发drake,一个具有多个并行后端的 R 包。今天,我实现了一个新的hook参数make()它只是将单个并行作业包装在用户选择的函数中。我真正在寻找的是一种hook不管并行后端如何都能使控制台静音的方法。当前开发版本中的后端包括

  • parallel::mclapply()
  • parallel::parLapply()
  • base::lapply()(通过parLapply()一份工作)
  • make -j用适当的Makefile
  • future::sequential
  • future::multicore
  • future::multisession
  • future.batchtools此处列出的后端

我以为我找到了一个hook适用于标准错误的方法。

但是,withr::with_message_sink()不允许我将多个工作人员下沉到相同的文件parLapply()future::multisession后端。

0 投票
1 回答
392 浏览

r - R中的主/从多核处理

我想在以下代码中并行化 while 循环:

是否在排除节点上执行并不重要work(),但我们希望尽量减少此类实例。上面 while 循环的目标是尽可能少地运行 work()

这不是一个尴尬的并行计算,所以我不知道如何parLapply直接使用。可以使用主从框架,但我不知道任何多核编程(在 Windows 上)。

作为一个具体示例,您可以将其work(n)视为graph_exploration(n)(查找所有连接到 的节点的函数n)和excluden 的连通分量中的节点。最终目标是从每个连接的组件中找到一个节点。您希望graph_exploration(n)尽可能少地运行,因为这是一项昂贵的操作。

0 投票
1 回答
1123 浏览

r - 如何在 Ubuntu Rstudio 服务器上使用超过 1 个内核(8 个可用)来制作 R?

我想在一个大型数据集(250,000 个观察值)上运行包中的glmer过程。lme4该模型在笔记本电脑上运行需要 15 分钟以上。我们正在使用基于 Ubuntu 的 Rstudio 服务器。问题是这台服务器上有 8 个内核可用,但是当我运行glmer程序时,只有 1 个内核被使用,并且需要 1 多个小时才能得到结果......我该如何解决这个问题并提高时间效率?我在 google 上发现我可能必须使用该parallel程序,但我对这些信息学程序一点也不熟悉,而且它们对我来说看起来很复杂……有人可以帮忙用一个简单的程序来解决这个问题吗?

我知道他们已经对这个主题提出了问题,但那是 7 年前(自动使用多个内核的 R 包?)或 3 年前(如何让 R 使用更多的 CPU 和内存?)。我知道 R 包和程序正在不断发展,我希望你能帮助我更新这个主题(希望是一个简单明了的解决方案)。

0 投票
0 回答
612 浏览

r - 在 R 中的 foreach 中将 rbindlist 加速为 .combine

doSNOW考虑以下在带有包的 Windows 操作系统上运行的代码:

keys有些data.table有大约 2000 行,foo是一个运行相当长的时间(10s - 3m)并返回data.table单行的函数。

当我打开时.verbose = TRUE,我可以看到foo不同内核的功能按预期运行(比如 30m)。但是,在foreach完成所有操作后,代码又消耗了 30m(有时甚至更长)来合并 2000 data.table

需要注意的另一件事是,当 时verbose = TRUE,它总是显示,numValues: .., numResults: .., stopped: FALSE即使它是结束时foreach。我期待看到stopped: TRUE

任何想法可能是错误的以及如何提高性能?

0 投票
1 回答
182 浏览

r - mclapply 与 vecLib 冲突

我最近将我的 R BLAS 框架更改为 Mac 附带的 vecLib。这样做之后,我在 R 中的并行包遇到了问题。这是一个例子:

这个(mclapply 随机返回 NULL)讨论说 mclapply 可能由于内存问题而返回 NULL。虽然 70x70 矩阵不应导致内存问题(否则我的工作区是空的,已被垃圾收集),但请注意,对于 60x60 矩阵,问题就会消失:

我什么时候都没有问题mc.cores=1。如果我将 BLAS 切换回默认值,我也没有问题。此外,当我从终端使用 R 时没有问题。 使多线程 R(通过 vecLib)在终端外与 mclapply 一起工作的正确方法是什么?

0 投票
0 回答
95 浏览

r - 控制 registerDoParallel 使用的 CPU 数量

我最近继承了一个遗留的 R 脚本,它在某些时候训练了一个带有大回归矩阵的梯度提升模型。此任务使用该doParallel::registerDoParallel函数并行化。最初,脚本以以下方式启动并行后端:

该工作站有 12 个 CPU 和 28 GB 的 RAM。回归矩阵刚刚超过 2 GB,我认为这种设置是可以管理的,但是,它会启动数十个子进程,耗尽内存并在几秒钟内使 R 崩溃。cores最终我了解到,在 Linux 上,可以通过使用以下参数来实现更可预测的设置:

其中cores实际上是每个 CPU 的子进程数,即cores = 2在这 12 个 CPU 架构中它启动了 24 个子进程。问题是,这么大的回归矩阵,12个子过程也太多了。

启动的子进程的数量如何registerDoParallel限制为 8 个?使用不同的并行化库会有所帮助吗?

更新:为了确定每个子进程所需的内存,我在没有启动集群或使用的情况下运行了脚本registerDoParallel;仍然产生了 12 个后端子流程。罪魁祸首是caret::train 功能,它似乎是在没有监督的情况下管理并行化。我在 GitHub 上打开了一个新问题,询问有关如何限制此函数使用的资源的说明。

0 投票
1 回答
299 浏览

r - 从 RStudio 中的 mclapply() 调用时,ggsave() 不起作用;有解决方法吗?

我想使用 R 'parallel' 库来并行化使用 'ggplot2' 库生成一些图,并且在尝试在 RStudio 中执行此操作时遇到了障碍。在 IDE 中,mclapply 交替冻结会话,或者无法运行 ggsave() 将绘图写入磁盘(没有给出错误或警告)。在 RStudio 之外运行时,它可以 100% 完美运行。我猜 RStudio 对图形设备做了一些讨厌的事情,但我不知道是什么或解决方法(我也尝试过 png()/dev.off(),同样的问题)。这是重现问题的代码:

有什么解决方法的建议吗?

编辑:macOS 10.13.4 上的 R 3.4.4 + RStudio 1.1.419 + ggplot2 2.2.1;mclapply() 在 Windows 上恢复 lapply()(不支持)。