问题标签 [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.
r - R中的并行处理中的多重组合
我使用以下代码:
如果我需要插入K
不同的功能。有没有办法在.init=list(list(), list(), list())
列表中定义K
(在这种情况下为 K=3)而不是添加的函数,list()
?每个都oper
运行在单独的核心 (CPU) 上吗?输出是:
我想添加一些额外的功能 ( K
) 而无需,list()
在相关位置添加。所以当我写的时候,oper[[K]]
我会得到相关的结果。
r - R中缺少值的平行上三角数据框(矩阵)
我有一个a
缺失值的向量(缺失值为 5,可能还有更多缺失值)。我想s
并行创建上三角数据框(矩阵)。最终的数据帧s
应该是基于a
索引的b
:
我使用以下代码:
r - 在并行执行中使用自定义汇总函数的问题(插入符号)
我正在尝试使用 MAPE 作为衡量模型性能的指标。
在 LOOCV 和并行执行的情况下,一切正常,但如果我使用另一种重采样方法,我会收到此错误:
{ 中的错误:任务 1 失败 - “找不到函数”mape“”</p>
相反,在串行执行中,这个问题消失了。
下面的代码提供了一个示例。
我的操作系统是 El Capitan 10.11.4,插入符号的版本是 6.0.62。
r - 如何加快随机森林的训练速度?
我正在尝试训练几个随机森林(用于回归)以让它们竞争并查看哪些特征选择和哪些参数提供了最佳模型。
然而,培训似乎花费了大量的时间,我想知道我是否做错了什么。
我用于训练的数据集(train
下面称为)有 217k 行和 58 列(其中只有 21 个用作随机森林中的预测变量。它们都是numeric
or 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)
,我将从现在开始这样做,但我认为我上面的问题仍然存在。
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="")
- 如果我只加载了 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)
r - RWeka 不能与插入符号或可能的 %dopar% 一起使用
我正在完成caret
作者的应用预测建模(该软件包的 R 教科书)中的练习。我无法train
使用方法M5P
或M5Rules
.
代码将手动运行良好:
相同的数据和控件(将“规则”替换为“M” -为什么我不能将 M 指定为调整参数?)将无法完成:
书中的示例也不会完成:
至少对我来说,这可能是与 RWeka 一起使用并行后端的问题。我上面的例子不会以%dopar%
.
我sudo R CMD javareconf
在每个示例之前运行并重新启动了 Rstudio。
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
。状态(中的列S
)htop
表示p1
它R
正在运行并且保持不变。然而,p2
直到p8
,几分钟后,状态变为D
(即不间断睡眠),几分钟后,再次变为Z
(即终止但未被其父级收割)。你知道为什么会这样吗?
r - foreach partialPlot randomForest
尝试使用从包foreach
中绘制部分依赖图。randomForest
得到错误:
Error in { : task 1 failed - undefined columns selected
r - ForEach 和 DoParallel 用完了我所有的 RAM?
我需要将多个形状文件加载到我的 R 会话中。目前,我正在单独加载每个形状文件。这可行,但需要很长时间,并且只使用了我可用 CPU 的 15%。最近,我尝试使用 ForEach 和 DoParallel 加载形状文件:
这种方法有效并且非常快(它使用了我 100% 的 CPU)。但是,它占用了太多内存,尤其是当我多次重复该过程时。有什么方法可以使用 ForEach 和 DoParallel 而不会造成如此大的内存影响?我的机器有 8 个处理器(4 个物理处理器和 4 个逻辑处理器)并且有 16 GB 的 RAM。
r - 使用 rvest 并行读取多个 html 页面
我正在尝试与和rvest
并行使用从网页中抓取值。具体来说,我正在使用称为 TMK 的房地产标识符从网站上检索房产的人口普查区号。foreach
doParallel
在下面的示例代码中,foreach
循环在运行时给出了所需的结果(包含区域编号的向量)%do%
,而不是运行%dopar%
。
我(可能错误地)推断出并行后端是罪魁祸首,但我之前在其他应用程序中使用过很多次,似乎找不到问题所在。