问题标签 [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 包合并数据的问题
鉴于我正在处理的数据的大小,我想并行处理
我已将代码设置如下,保持一个核心空闲,因此不使用整台机器
问题是返回的 test_prediction 的行数比 test 少,我不知道为什么
在几次尝试中返回的行向我表明,.combine
inforeach
没有从某些核心收集数据,尽管我不确定如何证实这一理论
总行数 603,054
这仅在并行运行时发生,如果我使用该%do%
选项,则返回正确的行数 - 尽管我不确定如何进一步研究这个理论?
一般来说,如果有更好的方法来并行运行它,有什么帮助吗?将不胜感激
会话信息:
r - cv.glmnet 并行和内存问题
这是我第一次使用一般的并行处理。问题主要是关于我糟糕的语法。
我需要一些帮助来捕获大量 cv.glmnet 迭代的输出,因为我相信我已经将 cv_loop_run 构建为非常低效。这与 10k 的 lambda 数量一起导致了一个巨大的矩阵,它占用了我所有的内存并导致崩溃。本质上,我需要的是每次运行的最小值和1se lambda(其中 1000 个,而不是全部 10,000 个)。因此,我不会为 cv_loop_run 捕获一个 1kx10k 的列表,而是得到一个 1k 长的列表。
r - R中矩阵(或栅格)的并行求和
我有一长串想要并行求和的大型矩阵(或栅格)。输出应该是一个矩阵。我尝试foreach
使用该.combine='+'
功能,该功能有效,但似乎 .combine 仅适用于一个线程,因此没有加速。有什么建议么?谢谢
r - R中GLM的并行循环
我正在尝试编写一个并行化的 for 循环,在其中我试图以最佳方式找到最佳 GLM 以仅对具有最低 p 值的变量进行建模,以查看我是否要打网球(二进制是/否) .
例如,我有一个包含气象数据集的表(及其数据框)。我通过首先查看其中哪个模型的 p 值最低来构建 GLM 模型
假设PlayTennis ~ Precip
具有最低的 p 值。因此,repeat 中的下一个循环迭代是查看其他变量的 p 值最低。
这将一直持续到没有更重要的变量(P 值大于 0.05)。因此,我们得到了PlayTennis ~ Precip + WindSpeed
(这都是假设的)的最终输出。
关于如何在各种内核上并行化此代码有什么建议吗?我遇到了一个speedglm
从库 speedglm 调用的 glm 新函数。这确实有所改善,但幅度不大。我也研究了foreach
循环,但我不确定它如何与每个线程进行通信,以了解在各种运行中哪个 p 值更大或更小。预先感谢您的任何帮助。
我拥有的代码如下:
我尝试过但不起作用的代码
r - For-Loop 的替代方案:如何在 R 中使用滚动窗口进行提升?
我正在寻求帮助优化我的代码以摆脱循环并提高计算速度。我对该领域和 R 非常陌生。我在具有滚动窗口的线性时间序列模型上运行组件明智的梯度提升回归。我使用每个窗口的 X 上回归 y 的系数来预测 y 的下一个“窗口外”观察。(稍后我将评估预测的准确性)
我的数据是 1560 个不同的时间序列(包括原始序列的滞后),大约有 540 个观测值(数据框尺寸为 540x1560)
我调查了rollapply
但无法让它工作。特别是我不知道如何预测每个窗口(每次迭代)的 yhat。
任何提示表示赞赏(需要永远在我的笔记本电脑上运行)!
PS:我也在研究使用multicore
或parallel
包。特别是 b/c 我稍后将使用交叉验证作为停止标准。但我只是开始研究它。但是,对此的任何提示也值得赞赏!
编辑:使用内置数据的最小工作示例(虽然不是时间序列):
r - R如何使用foreach获得总CPU时间?
我试图让代码并行运行的总 CPU 小时数(使用foreach
包中的doParallel
),但我不知道如何去做。我已经使用过proc.time()
,但它只是返回“实时”时间的差异。根据我所读到的system.time()
,它也应该与proc.time()
. 如何获得并行运行的 R 代码的总 CPU 小时数?
r - 在 R 中,如何在并行运行时为 foreach() 函数定义组合函数
我想做一个排列测试,这是代码的结构(带有虚拟数据)。排列将并行运行,并希望计算生成的矩阵有多少次未通过测试。(见代码块 2)。但这在块 2 中很慢,因为它在单个处理器中工作。我想编写一个 .combine 函数与 foreach() 函数一起使用,但我不知道如何提供输入参数(cc 和矩阵)
这部分是问题所在。我想计算矩阵 b 的每个元素比固定矩阵 a 大多少次,并将每个元素的计数添加到 cc 矩阵。如果我可以定义一个 .combine 函数,这应该在生成每个矩阵时执行。
r - 将一个长的可重复的 foreach 循环分成几个较小的循环
在 R 中,有没有办法将一个长的并行 for 循环分解为几个较短的循环,并且仍然保持它们的可重复性和相同性?
我尝试使用doRNG
andforeach
包来做到这一点,但是当我紧接着使用几个短循环时,RNG 种子与使用一个长循环时不同,因此结果不同。
====
示例代码
r - R 的并行 foreach 是否在同一子操作中保存对象以进行其他迭代?
我正在使用 R 中的 doParallel/Foreach 后端并行运行一个进程。我将一组 20 个内核注册为一个集群,并运行该进程大约 100 次。我将一个矩阵传递给并行过程的每次迭代,并在子过程中将矩阵替换为它自己行的随机样本。我想知道的是:我是否应该期望这种修改在同一个子进程处理的后续迭代中持续存在?例如,当子进程 1 完成第一次迭代时,它是使用原始矩阵还是随机样本开始第二次迭代?
一个最小的例子:
编辑:
需要明确的是,如果该对象确实会在同一个工作进程的迭代中持续存在,这不是我想要的行为。相反,我希望每次迭代都采用原始矩阵的新随机样本,而不是最近随机样本的随机样本(我认识到,在我的最小示例中,它每次都会创建原始矩阵的相同随机样本,由于种子集——在我的实际应用程序中,我处理了这个)。
r - 嵌套的foreach循环更改数据帧R中的值
我正在尝试将两个嵌套的 for 循环转换为两个嵌套的 foreach 循环,以根据匹配的先决条件更改数据帧的值。原因是我相信我可以显着加快这个过程。下面是我的代码示例:
filelist
是我正在阅读的文件列表
ldf
是用于存储读取的文件的变量
这两个变量在这个例子中组成,只是为了有一个可重现的例子。
DF
是我要存储foreach
循环所做值的更改的地方
DF2
是我的尝试以及它的存储位置
我正在寻找的输出是DF
,但DF2
保持不变。我了解 foreach 循环是为它们的返回值而设计的,但是我怎样才能让返回值与数据框的值应该更改的位置相匹配。这些值是读入的每个文件的日期与数据框中的日期file_list
匹配的地方DF2
。如果它们匹配,则将 1 放置在行(日期)和列(文件名)的特定位置。提前感谢您的帮助!
期望的输出是: