r - 为什么 MRO 有时会在并行应用程序中“停滞”?
问题描述
我一直在尝试优化 Bioconductor 包以进行并行处理。在这样做的过程中,我遇到了两位在串行中运行良好的代码,但是使用mclapply
时,进程会停止(0% CPU 和磁盘使用率),但实际上从未失败或出错。
一个是 arma/armadillo 矩阵和向量的乘法,我还不能得到一个最小的工作表示。我已经为下面的另一个包含了一个代表(取矩阵的特征值/向量)。有趣的是,使用 运行代码doParallel
似乎可以正常工作。
library("parallel")
library("foreach")
library("doParallel")
m <- diag(100)
eigen(m)
lapply(1:10, function(i) eigen(m))
mclapply(1:10, function(i) eigen(m))
cl <- makeCluster(2)
registerDoParallel(cl)
foreach(i = 1:10) %dopar% eigen(m)
这是由于 MRO 使用了多线程的 BLAS 库。
解决方案
推荐阅读
- vue.js - Vue Js 使用 Toggle 显示和隐藏 div
- php - 如何将 CouchDB 转换为 CSV 文件
- linux - 如何停止、重新启动或查看启动应用程序的控制台日志?
- r - 使用整洁的评估根据每组其他列的条件创建新列
- javascript - 刷新时重置值?
- windows - 如何在 Arduino IDE 1.8.5+ 中启用 C++17
- php - 为什么 PHP $_SESSION 没有在这段代码中设置?
- javascript - 在 Electron 5+ remote.BrowserWindow 中获取窗口、文档和正文
- c - 在 Swift 框架内导入的 C 函数中设置文件路径
- qml - 如何阻止而不是将 MouseArea 的 containsMouse 属性传播给父级?