问题标签 [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.

0 投票
2 回答
977 浏览

r - 如何使用 foreach 在并行处理中使用共享数据帧

我想使用 foreach 包来并行 for 循环:

原始代码如下所示:

我使用索引 i 作为行号,从数据帧中获取数据并将数据存储回另一个数据帧。

但是,如果我改变:

它确实运行得非常快,但结果似乎只存储在数据框中的一列中。如何将两列保存在一起?

为了并行,我应该如何编写共享数据帧?

data_df 的样本数据

0 投票
0 回答
543 浏览

r - R foreach 包中的慢 %dopar%

下面只是一个玩具示例,用于代表可重现代码的问题,但我的数据和作用于数据的后续函数涉及更多,并且实际上将从并行运行中受益。

我遇到的问题是,下面的循环在 %do% 和 %dopar% 下都按预期运行,但是 %dopar% 相对于 %do% 非常慢。

我已经将问题缩小到我正在搜索一个非常大的列表,通过索引到子集然后对其进行处理来从该列表中获取数据。

有人可以提供有关如何改进 %dopar% 的见解吗?在我的实际数据中,我需要对已经存储在列表中的数据框进行子集化,然后将该 df 传递给 4 个不同的函数。

也很抱歉,我确实在 R-Help 上发布了这个问题,但在 Stack Exchange 上看到了更多关于 foreach 的活动。

0 投票
0 回答
57 浏览

r - R无法找到源函数

我正在使用 doParallel 和 foreach 包在多个内核上运行我的代码。我的代码类似于

当我调用 fun1 时,fun2 的第一个实例已成功执行,但我使用 foreach 调用 fun2 的实例在 fun2 中出现错误(param4,param5,:任务 1 失败 - “找不到函数“fun2””

0 投票
1 回答
518 浏览

r - 将全局和函数环境中的对象导出到集群

我在下面的示例代码中使用了 foreach 和 doParallel。

在 clusterExport 的 envir 参数中,当我使用envir = .GlobalEnv时,出现错误

**"Error in get(name, envir = envir) : object 'param4' not found"**.

当我使用envir = environment()时,错误是

**"Error in fun2(i, param4, param5, param6) : task 1 failed - "could not find function "fun2"""**

我的问题是如何将全局和功能环境中的所有对象导出到集群。

0 投票
1 回答
76 浏览

r - 嵌入 foreach() 时,nlminb() 无法识别输入数据

我想使用 LINUX 机器,使用 foreach 包与包 doMC 提供的多核设施进行蒙特卡罗重采样方案。在每次迭代中,自制函数使用 data.frame 中包含的替换数据重新采样X。结果,我得到了一个包含伪样本的新 data.frame ,它用作使用(target function= )X.i优化过程的输入数据。使用标准命令我没有问题:nlminb()F_1for()

但是,我无法申请foreach(),因为它似乎nlminb()无法识别输入数据X.i,或者至少无法以与嵌入时相同的方式管理它for()

我不知道问题出在哪里,但我想它一定是与 howforeach()nlminb() interact 相关的东西,因为如果我foreach()用一个简单的函数运行,比如说,测量 Xi 中的行数,我完全没有问题:

我对foreach包不熟悉,也未能在包帮助中找到解决方案,因此非常感谢您的建议。

我在这里用过:

R版本3.3.0(2016-05-03);doMC 版本 1.3.4;foreach 1.4.3 版;平台:x86_64-pc-linux-gnu(64位)

0 投票
1 回答
547 浏览

r - 将列并行分配给 data.table

我想将许多(最多 2000+)列分配给data.table; 这个过程给我留下了深刻的印象,因为它非常可并行化,但似乎通过将相同的过程分data.table发给许多工人来处理这个过程并没有得到很好的处理。

我希望以下工作:

但是,这会产生一个模糊的错误:

错误checkForRemoteErrors(val):2 个节点产生错误;第一个错误:内部错误,请sessionInfo()向 datatable-help 报告(包括结果):oldtncol (0) < oldncol (1) 但标记了类的 tl。

我想这是由于引用分配的工作原理。分配发生在每个线程上,但这不会DT在全局环境中传回。

有没有办法data.table并行添加列?

0 投票
0 回答
48 浏览

r - 为什么我在 R 中的并行 foreach 循环比简单的 for 循环花费更多时间?

我是 R 新手,我正在尝试使用 foreach 循环和 doSNOW 包并行化嵌套的 for 循环,但是 foreach 循环比 for 循环花费更多时间

她是我的代码:

初始化变量

for 循环

并行 foreach 循环


结果

警告信息:

0 投票
1 回答
115 浏览

r - 如何为 %dopar% 中使用的自定义函数返回 null?

我想使用并行foreach循环中使用的自定义函数返回 NULL。用法是,如果某些结果不符合某些标准,则该结果将不会被存储,并且会作为后处理步骤被过滤掉。

但是,我的程序返回

任务 1 失败 - “替换长度为零”

可以使用以下代码重现该问题:

0 投票
2 回答
832 浏览

r - 使我的 R 包中的函数可并行化的最佳实践是什么?

我开发了一个包含令人尴尬的并行函数的 R 包。

我想以对用户透明的方式实现这些功能的并行化,而不管他/她的操作系统如何(至少理想情况下)。

我环顾四周,看看其他包作者是如何导入基于 foreach 的 Parallelism 的。例如,Max Kuhn 的caret包导入foreach使用%dopar%,但依赖 于用户指定并行后端。(几个示例使用doMC,它在 Windows 上不起作用。)

注意到doParallel适用于 Windows 和 Linux/OSX 并使用内置parallel包(有关有用的讨论,请参阅此处的评论),每当用户指定为参数时导入doParallel并调用我的函数是否有意义?registerDoParallel()parallel=TRUE

0 投票
1 回答
1341 浏览

r - 在 foreach %dopar% 循环中写入文件

我有这段代码,我想并行但是我似乎无法让它工作。这个想法是,对于每个值 chr,snp_sel(geno_data,k, bl) 给我一个由 k 列组成的矩阵,这些列随后被一一写入文件。我怎样才能 %dopar% 这个循环?