问题标签 [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 - 并行内循环,顺序外循环:我可以让 mcfork 更快或以某种方式保持会话吗?
当编写一个嵌套循环时,外部循环需要是顺序的,而内部循环通过一个非常简单的对象依赖于先前的迭代,有没有办法减少会话之间多次通信的开销?
这是一个使用doMC
and的示例foreach
:
由reprex 包(v0.3.0)于 2019-07-22 创建
因为内部循环中的计算非常简单,所以创建多个会话和传输数据所引入的开销使得并行版本比顺序版本慢。
在分析代码后,正如预期的那样,时间差主要来自mcfork
,但由于计算非常简单并且仅由于a
向量而在调用之间有所不同,我想知道是否有一种方法可以使会话在foreach
调用之间持续存在并且只发送每次调用之间的a
向量(我认为这应该比分叉整个会话要快得多)。
有没有办法通过会话分叉结构来实现doMC
?是否有另一个并行后端能够提供这种解决方案(使会话在任务之间发生微小变化时持续存在)?
r - 使用 foreach 和 doMC 时如何控制发送给工作人员的内容
我不明白foreach
使用doMC
后端时正在导出什么。
有没有办法控制运送给工人的东西?
以下示例似乎表明全局环境中的所有内容都已交付,这在我使用 100+ Gb 表时给我带来了麻烦。
结果: 工人如何知道 foo ?
r - 我无法在 R 中下载 doMC 包
我正在做一个小组项目,其中我需要 R 中的 doMC 包,但是当我尝试安装它时,它说:
install.packages(c("DoMC")) 警告:构建 R 包需要 Rtools,但当前未安装。请在继续之前下载并安装适当版本的 Rtools:
如果我尝试安装 Rtools,我会收到相同的消息。我有最新版本的 R。
任何帮助表示赞赏
r - R中的并行化是否复制父进程中的所有数据?
我有一些大型生物信息学项目,我想在大约一百万个标记上运行一个小函数,它需要一个小标题(22 行,2 列)以及一个整数作为输入。返回的对象每个大约80KB,函数内部没有创建大量数据,只是一些格式化和统计测试。我已经尝试了使用并行、doParallel 和 doMC 包的各种方法,所有这些都是非常规范的东西(foreach、%dopar% 等),在一台有 182 个内核的机器上,我使用的是 60 个内核。
但是,无论我做什么,内存需求都会迅速达到 TB 并导致机器崩溃。父进程在内存中保存了许多千兆字节的数据,这让我怀疑:父进程的所有内存内容是否都被复制到并行化进程中,即使它不需要?如果是这样,我该如何防止这种情况?
注意:我不一定对我的特定问题的解决方案感兴趣,因此没有代码示例等。我无法理解内存在 R 并行化中如何工作的细节。
r - 通过在 R 中分叉工作的 doMC 并行性如何
我对R
. 在我看来,当与maindoMC
结合使用时,它“似乎”是分叉的,(实际上它似乎是d 根据)你可以检查发生了什么foreach::dopar
R
clone
strace
看起来
- 每次调用 foreach 时都会分叉新进程!
- 当主进程中的对象没有被修改时,内存可能不会被复制,但是一旦子进程返回一些不重要的东西,子进程就会发生一些事情,这会花费很多时间
这是一个例子:
问题是:
- 有没有办法不一直重新创建进程?
- 当小数据从工人传回主人时,需要几秒钟的时间正在做什么?
- 是否有现成的高性能解决方案可以使用线程而不是分叉来实现并行性?