问题标签 [domc]
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 中使用多核和 doMC 时,如何标记我的子进程以进行日志记录
我已经开始使用doMC
R 的包作为并行plyr
例程的并行后端。
并行化本身似乎工作正常(尽管我还没有正确地对加速进行基准测试),我的问题是日志记录现在是异步的,并且来自不同内核的消息混合在一起。我可以为每个核心创建不同的日志文件,但我认为我更简洁的解决方案是简单地为每个核心添加不同的标签。我目前正在使用该log4r
包来满足我的日志记录需求。
我记得在使用 MPI 时,每个处理器都有一个等级,这是一种区分每个进程的方法,那么有没有办法做到这一点doMC
?我确实有提取 PID 的想法,但这看起来确实很混乱,并且每次迭代都会改变。
我对想法持开放态度,所以欢迎任何建议。
编辑(2011-04-08):根据一个答案的建议,我仍然有正确识别我当前所在的子进程的问题,因为我需要为每个log()
调用单独关闭以便它写入正确的文件,或者我将有一个log()
函数,但其中有一些逻辑来确定要附加到哪个日志文件。在任何一种情况下,我仍然需要某种方式来标记当前子流程,但我不确定如何做到这一点。
mpi_rank()
MPI库中是否有等效的功能?
r - doMC vs doSNOW vs doSMP vs doMPI:为什么'foreach'的各种并行后端在功能上不等效?
我有一些测试代码,我一直在不同的机器上运行,总是得到相同的结果。我认为各种 do... 软件包背后的理念是它们可以互换用作 foreach 的 %dopar% 的后端。为什么不是这样?
例如,此代码片段有效:
虽然这些代码片段中的每一个都失败了:
在所有四种情况下,foreach(i = 1:3,.combine = "c") %dopar% {sqrt(i)}
产生完全相同的结果,所以我知道我已经安装了软件包并且在我测试过的每台机器上都可以正常工作。
doMC 与 doSMP、doSNOW 和 doMPI 有何不同?
r - 使用 doSMP 生成随机数
我正在尝试使用 doSMP 包在 R 中进行并行编程。这是我编写的代码片段,用于测试每个 MC 复制是否从相同的种子开始,以及 RNG 是否会给出相同的随机数。我希望每个 MC 复制都是随机的(我在 run.MC.replicate 中生成随机数)。我怎样才能解决这个问题?
我猜这种行为的发生是因为 doSMP 生成子 R 进程的方式。请帮忙
function - 包函数中的foreach:在第一次调用时不起作用
我正在尝试将并行计算选项添加到基于 doMC 和多核的 R (netresponse) 包中。该脚本工作正常,但仅在第二次试用时。
要重现该错误,请启动 R 并运行以下脚本。它卡在最后一行。用 ctrl-c 打断后,我收到几条“选择:系统调用中断”的消息。然后,再次运行相同的脚本将给出预期的结果而不会出现问题。
是否需要进一步初始化才能在第一次运行时正常工作?或者有什么其他技巧吗?
感谢您的支持,-L
r - 使 .combine 函数可缩放
我正在尝试使用 foreach 并且在使 .combine 函数可扩展时遇到问题。例如,这是一个简单的组合函数
当我使用此函数将 foreach 语句与 2 以外的迭代器组合时,它会错误地返回它。例如这有效:
但不是这个:
有没有办法泛化 combine 函数以使其可扩展到 n 次迭代?
r - 为什么丢弃结果的 plyr 接口与 %foreach% 不兼容?
我正在编写一个基于 plyr 的脚本来读取位于不同目录中的文件的输入,处理该输入,然后将输出写入不同的位置。由于我有很多输入,因此将doMC与d_ply一起使用是有意义的,但我惊讶地发现一些 plyr 函数不接受 .parallel 参数!
快速查看plyr 文档可以确认没有一个处理输出的函数(例如a_ply、l_ply、d_ply)接受 .parallel 参数:
我的问题:有谁知道为什么会这样?
下面是一个具体的例子。我对 plyr 的调用看起来像这样
其中input_df是一个包含输入文件名的 3xN 数据框:
函数merge_files应用于 input_df 的每一行。它读取 3 元组中指定的每个文件,处理每个文件的内容,并将这些内容合并到一个输出数据帧中,然后写入另一个目录。
但是,当我尝试测试时:
我遇到了这个错误:
在此先感谢您提供任何启发性的答案!
r - 直接将doMC(foreach)的结果分配给数据框
假设我有示例代码
我想将此函数转换为与doMC
. 我的问题是foreach
结果是一个列表,而我需要每次迭代的结果是一个向量,然后可以将其传输到数据框(稍后将作为 CVS 导出以进行进一步处理)。
有任何想法吗?
r - foreach - dopar 不启动工人
我想使用 doMC 引擎运行以下代码:
问题是在第一个工作人员启动后几秒钟,引擎会尝试启动剩余的工作人员。我看到所有处理器都出现了峰值,但它们都很快死掉,即使是第一个也是如此。然后,启动一个新进程,剩余的代码将通过这个单独的工作人员运行。
我尝试过使用不同的代码,引擎运行良好。但是对于这个特定的规则,它不会。
谁能告诉我发生了什么?提前致谢。
windows - R和foreach循环中的doMC不起作用
我正在尝试让 foreach 包在 R 中进行并行处理,但我遇到了几个问题:
使 foreach 工作所需的 doMC 包在 CRAN for Windows 上不存在。一些博客建议 doSNOW 应该做同样的工作。但是,当我使用 doSNOW 运行 foreach 命令时,它的运行%dopar%
速度似乎并不比%do%
. 事实上,它要慢得多。我的 CPU 是带有 8 GB RAM 的 Intel i7 860 @ 2.80GHz。下面是我的代码:
我重新安装了所有需要的软件包,但仍然是同样的问题。这是输出:
r - Ubuntu R ForEach / DoMC 不使用多核
我在 R 中构建了一个函数(在 Ubuntu 12.04 LTS 64 位、具有多线程和 6gb ram 的 4 核 i7 服务器上运行),我使用标准包安装了 R:
注意:我还在 R 中安装了foreach
& doMC
(这也没有帮助),就像我安装了deldir
软件包一样:
我的函数运行良好,但它不使用并行内核(仅最大化 8 个内核中的 1 个):
所以结果很好,但是没有并行性...
doMC
确实注册正确:
如果我看一下用法(带top
):
因此,只需最大化一个核心。有谁知道什么可能导致foreach
/doMC
不使用多个核心?