问题标签 [doparallel]

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 投票
0 回答
1063 浏览

r - R中的并行处理中的多重组合

我使用以下代码:

如果我需要插入K不同的功能。有没有办法在.init=list(list(), list(), list())列表中定义K(在这种情况下为 K=3)而不是添加的函数,list()?每个都oper运行在单独的核心 (CPU) 上吗?输出是:

我想添加一些额外的功能 ( K) 而无需,list()在相关位置添加。所以当我写的时候,oper[[K]]我会得到相关的结果。

0 投票
2 回答
144 浏览

r - R中缺少值的平行上三角数据框(矩阵)

我有一个a缺失值的向量(缺失值为 5,可能还有更多缺失值)。我想s并行创建上三角数据框(矩阵)。最终的数据帧s应该是基于a索引的b

我使用以下代码:

0 投票
1 回答
400 浏览

r - 在并行执行中使用自定义汇总函数的问题(插入符号)

我正在尝试使用 MAPE 作为衡量模型性能的指标。

在 LOOCV 和并行执行的情况下,一切正常,但如果我使用另一种重采样方法,我会收到此错误:

{ 中的错误:任务 1 失败 - “找不到函数”mape“”</p>

相反,在串行执行中,这个问题消失了。

下面的代码提供了一个示例。

我的操作系统是 El Capitan 10.11.4,插入符号的版本是 6.0.62。

0 投票
3 回答
22982 浏览

r - 如何加快随机森林的训练速度?

我正在尝试训练几个随机森林(用于回归)以让它们竞争并查看哪些特征选择和哪些参数提供了最佳模型。

然而,培训似乎花费了大量的时间,我想知道我是否做错了什么。

我用于训练的数据集(train下面称为)有 217k 行和 58 列(其中只有 21 个用作随机森林中的预测变量。它们都是numericor integer,除了布尔值,它是类character.y输出是numeric)。

我运行了以下代码四次,将值4, 100, 500,2000赋给nb_trees:

以下是他们每个人训练的时间:

由于我公司的服务器有 12 个内核和 125Go 的 RAM,我想我可以按照这个答案尝试并行化训练(但是,我使用了这个doParallel包,因为它似乎永远在运行doSNOW,我不知道为什么。而且我找不到我看到的地方也doParallel可以,抱歉)。

当我运行它时,它比非并行代码花费的时间更短:

但是,我认为这仍然需要很多时间,不是吗?我知道将树木组合成最终的森林需要时间,所以我没想到 12 核的速度会快 12 倍,但它只快了 ~ 2 倍......

  • 这是正常的吗?
  • 如果不是,我可以用我的数据和/或代码做些什么来从根本上减少运行时间吗?
  • 如果没有,我应该告诉负责服务器的人它应该更快吗?

感谢您的回答。

备注:

  • 我是唯一使用此服务器的人
  • 对于我的下一个测试,我将摆脱随机森林中未使用的列
  • 我很晚才意识到我可以通过调用randomForest(predictors,decision)而不是来改善运行时间randomForest(decision~.,data=input),我将从现在开始这样做,但我认为我上面的问题仍然存在。
0 投票
1 回答
2558 浏览

r - “ checkForRemoteErrors(lapply(cl, recvResult)) 中的错误:... object '.doSnowGlobals' not found”错误的可能原因?

多年来,我一直在 R 中反复执行一个函数脚本。在函数定义中,我在我的多核 Windows 工作站上使用以下方法设置了一个并行集群:

截至昨天,我的函数执行不再起作用,并且挂了几个小时。(此外,使用资源监视器,我可以看到我的 CPU 都没有处于活动状态,尽管我的脚本指定了 20 个内核)。当我回到函数并逐行测试时,我发现以下行没有执行(即,它通常会在几秒钟内执行时被挂断):

我尝试查找问题并找到了几个使用“PSOCK”类型的参考,但无法确定何时使用 PSOCK 与 SOCK。尽管如此,我还是使用“PSOCK”而不是“SOCK”尝试了相同的脚本:

通过 PSOCK 修改,它不再挂起,它似乎执行了这个以及 registerDoParallel() 调用。

但是,当我执行包含上述两行的完整函数然后调用该函数时,如下所示,我收到了一个我从未见过的错误:

我也尝试不指定类型或输出文件,但这产生了与使用 type="PSOCK" 相同的错误

我的问题: 1. 为什么 makeCluster() 行以前从未挂断过?cl <- makeCluster(cl.spec, type="SOCK", outfile="")

  1. 如果我只加载了 parallel 和 doParallel 包,并且我还加载了 snow 和 doSNOW 包,就会出现问题。执行 foreach() 命令是否需要全部 4 个包?

这是包含 makeCluster() 和 registerDoParallel() 调用的函数定义和函数调用,如上:

我发现这些帖子引用了错误,但解决方案对我不起作用: 错误:找不到对象'.doSnowGlobals'? http://grokbase.com/t/r/r-sig-hpc/148880dpsm/error-object-dosnowglobals-not-found

我正在使用具有 40 个内核的 64 位 Windows 8 机器。

R 版本 3.3.0 (2016-05-03) -- “Supposedly Educational” Copyright (C) 2016 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 (64-bit)

0 投票
1 回答
332 浏览

r - RWeka 不能与插入符号或可能的 %dopar% 一起使用

我正在完成caret作者的应用预测建模(该软件包的 R 教科书)中的练习。我无法train使用方法M5PM5Rules.

代码将手动运行良好:

相同的数据和控件(将“规则”替换为“M” -为什么我不能将 M 指定为调整参数?)将无法完成:

书中的示例也不会完成:

至少对我来说,这可能是与 RWeka 一起使用并行后端的问题。我上面的例子不会以%dopar%.

sudo R CMD javareconf在每个示例之前运行并重新启动了 Rstudio。

0 投票
2 回答
7099 浏览

r - doParallel (包) foreach 不适用于 R 中的大迭代

我在分别具有 4 个和 8 个物理内核和逻辑内核的 PC(OS Linux)上运行以下代码(从doParallel 的 Vignettes中提取)。

使用或更少运行代码iter=1e+6,一切都很好,我可以从 CPU 使用情况中看到,所有内核都用于此计算。然而,随着迭代次数的增加(例如iter=4e+6),并行计算似乎在这种情况下不起作用。当我还监控 CPU 使用率时,只有一个核心参与计算(100% 使用率)。

示例 1

你知道可能是什么原因吗?记忆可能是原因吗?

我四处搜索,发现与我的问题有关,但关键是我没有遇到任何错误,而且 OP 似乎通过在foreach循环中提供必要的包来提出解决方案。但是可以看出,我的循环中没有使用任何包。

更新1

我的问题仍然没有解决。根据我的实验,我不认为记忆可能是原因。我在运行以下简单并行(在所有 8 个逻辑内核上)迭代的系统上有 8GB 内存:

示例 2

我运行这段代码没有问题,但是当我监控 CPU 使用率时,只有一个核心(共 8 个)是 100%。

更新2

至于Example2,@SteveWeston(感谢您指出这一点)表示(在评论中):“您更新中的示例遇到了小任务。只有主人有任何真正的工作要做,包括发送任务和处理“

但是,Example1仍未解决。当我运行它并使用 监视进程htop时,更详细的情况如下:

p1让我们通过命名所有 8 个创建的进程p8。状态(中的列Shtop表示p1R正在运行并且保持不变。然而,p2直到p8,几分钟后,状态变为D(即不间断睡眠),几分钟后,再次变为Z(即终止但未被其父级收割)。你知道为什么会这样吗?

0 投票
0 回答
378 浏览

r - foreach partialPlot randomForest

尝试使用从包foreach中绘制部分依赖图。randomForest得到错误:

Error in { : task 1 failed - undefined columns selected

0 投票
1 回答
1315 浏览

r - ForEach 和 DoParallel 用完了我所有的 RAM?

我需要将多个形状文件加载到我的 R 会话中。目前,我正在单独加载每个形状文件。这可行,但需要很长时间,并且只使用了我可用 CPU 的 15%。最近,我尝试使用 ForEach 和 DoParallel 加载形状文件:

这种方法有效并且非常快(它使用了我 100% 的 CPU)。但是,它占用了太多内存,尤其是当我多次重复该过程时。有什么方法可以使用 ForEach 和 DoParallel 而不会造成如此大的内存影响?我的机器有 8 个处理器(4 个物理处理器和 4 个逻辑处理器)并且有 16 GB 的 RAM。

0 投票
1 回答
897 浏览

r - 使用 rvest 并行读取多个 html 页面

我正在尝试与和rvest并行使用从网页中抓取值。具体来说,我正在使用称为 TMK 的房地产标识符从网站上检索房产的人口普查区号。foreachdoParallel

在下面的示例代码中,foreach循环在运行时给出了所需的结果(包含区域编号的向量)%do%,而不是运行%dopar%

我(可能错误地)推断出并行后端是罪魁祸首,但我之前在其他应用程序中使用过很多次,似乎找不到问题所在。