问题标签 [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.
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 访问数据?
谢谢您的帮助。
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。它或多或少是这样的:
关于问题是什么的任何想法?
r - R中'foreach'和'parallel'之间的区别?
正如标题所示,我对这两个包之间的区别感到困惑,因为它们都用于 R 中的并行计算。
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
后端。
r - R中的主/从多核处理
我想在以下代码中并行化 while 循环:
是否在排除节点上执行并不重要work()
,但我们希望尽量减少此类实例。上面 while 循环的目标是尽可能少地运行 work()
这不是一个尴尬的并行计算,所以我不知道如何parLapply
直接使用。可以使用主从框架,但我不知道任何多核编程(在 Windows 上)。
作为一个具体示例,您可以将其work(n)
视为graph_exploration(n)
(查找所有连接到 的节点的函数n
)和exclude
n 的连通分量中的节点。最终目标是从每个连接的组件中找到一个节点。您希望graph_exploration(n)
尽可能少地运行,因为这是一项昂贵的操作。
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 包和程序正在不断发展,我希望你能帮助我更新这个主题(希望是一个简单明了的解决方案)。
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
。
任何想法可能是错误的以及如何提高性能?
r - mclapply 与 vecLib 冲突
我最近将我的 R BLAS 框架更改为 Mac 附带的 vecLib。这样做之后,我在 R 中的并行包遇到了问题。这是一个例子:
这个(mclapply 随机返回 NULL)讨论说 mclapply 可能由于内存问题而返回 NULL。虽然 70x70 矩阵不应导致内存问题(否则我的工作区是空的,已被垃圾收集),但请注意,对于 60x60 矩阵,问题就会消失:
我什么时候都没有问题mc.cores=1
。如果我将 BLAS 切换回默认值,我也没有问题。此外,当我从终端使用 R 时没有问题。 使多线程 R(通过 vecLib)在终端外与 mclapply 一起工作的正确方法是什么?
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 上打开了一个新问题,询问有关如何限制此函数使用的资源的说明。
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()(不支持)。