问题标签 [parallel-foreach]
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 - foreach循环的嵌套R
我有一个与此非常相似的代码:
每个随机矩阵可以独立于另一个生成,每个阈值矩阵可以独立于另一个生成,但是阈值矩阵取决于随机矩阵。我将如何为这样的代码进行嵌套并行化?我必须只选择一个循环并行执行吗?
谢谢。
r - 在 foreach 循环中使用 mclapply 出现 R 错误
基于这里的这篇文章,我尝试编写一个脚本,在这里看到:
它最初工作,但现在抛出错误代码:
知道发生了什么吗?甚至可以将 mclapply 放在 foreach 循环中吗?
编辑:我还想说这是在单个 8 核机器上,而不是集群上。
r - R 并行共享内存对象(Windows)
我有一个大数据表。每个并行进程从中读取数据,处理数据并返回一个小得多的 data.table。我不希望将大 DT 复制到所有进程,但似乎包中的%dopar%
函数foreach
必须复制。
有没有办法让所有进程(在 Windows 中)共享对象?也就是说,通过使用除foreach
.
示例代码
(我对在不使用并行的情况下在 data.table 中执行此操作的更好方法不感兴趣。这只是为了说明子进程需要读取所有要处理的数据,但永远不要更改它的情况)
r - R中的并行处理---没有名为“SNFtool”的包
我想借助“parallel”包在 R 中运行并行代码,这是我的代码:
我得到的具体错误是:
但是我确实有包“SNFtool”,并且可以从命令行从 Rstudio 和 R 加载它。问题似乎只存在于使用并行进程运行脚本时。
r - R 中的嵌套并行进程 - 在 Foreach 循环中使用 ParSapply
我正在使用 doParallel 包并想parSapply ()
在 a中使用,Foreach loop
但我不确定如何在另一个并行循环中使用并行函数。
我有这个错误:
r - For循环在R中使用多核和foreach
我有一段非常长的代码,它由多个用户定义的函数组成,这些函数来源于我的代码开头。整个脚本在一个for
循环中,它一个一个地读取 csv 文件,分析它们并每次迭代输出 2 个 csv 文件和一个 PNG。平均而言,每个文件的代码大约需要 18 秒,通常一次分析大约 150/200 个文件。
这需要很长时间,所以我想利用我 PC 上的 8 核。
我已将主for
循环更改为foreach
并添加了%dopar%
,但是,我的代码不起作用。
显示了一个示例:
我认为问题在于其他加载的包无法在foreach
循环中使用。如果是这种情况,我该如何纠正?其次,这是否也意味着之前在循环之外加载的任何源代码文件都无法使用?即我的用户定义函数?
我可能没有抓住重点,但我想有一种更简单的方法可以做到这一点,但我还没有掌握。任何意见,将不胜感激。
r - R foreach:从单机到集群
以下(简化的)脚本在 unix 集群(4 个虚拟核心)的主节点上运行良好。
我想利用集群中的 16 个节点(16 * 4
总共虚拟核心)。
我想我需要做的就是更改由makeCluster
. 但是我该怎么做呢?文档不是很清楚。
基于这篇相当古老的(2013 年)帖子http://www.r-bloggers.com/the-wonders-of-foreach/似乎我应该更改默认类型(sock
或者MPI
- 哪个 - 可以在 unix 上使用? )
编辑
来自foreach 的作者的这个小插曲:
默认情况下,doParallel 在类 Unix 系统上使用多核功能,在 Windows 上使用雪功能。请注意,多核功能仅在单台计算机上运行任务,而不是在计算机集群上运行。但是,您可以使用 snow 功能在集群上执行,使用类 Unix 操作系统、Windows 或什至组合。
是什么you can use the snow functionality
意思?我该怎么做?
r - 将 R 中并行作业的输出保存到一个文件中
我正在运行一项相当长的工作,我需要复制 100 次,因此我转向了 R 中的 foreach 功能,然后我通过 shell 脚本在 8 核集群上运行。我正在尝试将每次运行的所有结果输入到同一个文件中。我已经包含了我的代码的简化版本。
作业完成后,我的 .csv 文件为空。我相信我不太了解 foreach 如何保存结果以及如何访问它们。我想避免手动合并文件。另外,我需要在我的 foreach 循环结束时写 stopCluster(cl) 还是等到最后?任何帮助将非常感激。
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 - 如何使用 `Parallel::mclapply` 有效地运行 800 万行数据?
我尝试使用以下代码拆分大约 800 万个元素的字符向量
向量orders_largest1stGroup$Time
如下
然而,15 多分钟过去了,它仍在运行。所以,我想知道我的代码或我的执行方法一定有问题。
谁能看看并告诉我如何快速运行这段代码?