问题标签 [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和doParallel的区别
关于功能,RdoParallel
和R有什么区别?支持windows,类unix,而仅支持类unix。换句话说,为什么不能直接替换?谢谢你。doMC
foreach
doParallel
doMC
doParallel
doMC
更新:
doParallel
基于parallel
,本质上是合并multicore
并snow
自动为您的系统使用适当的工具。这样一来,我们就可以使用doParallel
来支持多系统了。换句话说,我们可以使用doParallel
替换doMC
。
参考: http: //michaeljkoontz.weebly.com/uploads/1/9/9/4/19940979/parallel.pdf
registerDoParallel(ncores=3)
顺便说一句,和有什么区别
似乎registerDoParallel(ncores=3)
可以自动停止集群,而第二个不会自动停止并且需要stopCluster(cl)
。
参考:http ://cran.r-project.org/web/packages/doParallel/vignettes/gettingstartedParallel.pdf
r - 为什么这个 foreach/dopar 函数不使用我要求的所有内核?
我正在尝试doMC
使用foreach
and %dopar%
。这是功能:
我之前已经设置了核心,另一个函数调用了上面的函数(这个信息发布在下面,我认为这不是问题)。 getDoParWorkers()
报告已按预期分配了 7 个内核。该cat
语句验证 2 个“循环”在输出范围内是否正常工作。但是,只使用了 1 个内核。有人知道为什么吗?Mac OSX 10.10.2 和 R 3.2 (2015-03-15 r67992)。最后,使用doParallel
来控制一切会产生相同的结果。
设置一切的步骤:
r - 仅在包的说明中导入foreach时如何使用%dopar%
当只在包的描述中导入(不依赖)foreach时,如何避免在包的函数中“找不到函数“%dopar%””?当我在函数中使用 foreach::foreach 时,有没有类似 foreach::%dopar% 的方法?谢谢你。
代码如:
在功能
在描述中
r - R foreach并行循环值未保存
执行以下虚拟代码时:
我收到以下输出:
为什么没有保存循环f
中分配的值?foreach
特别是,为什么在循环之后f[1]
和f[2]
等于零?foreach
谢谢!
r - 在 R 中从多核到多节点
我已经习惯于在每个节点有 32 个核心的集群上执行 R 作业。我现在在一个每个节点有 16 个核心的集群上。我想通过一次使用多个节点(就像我一直在做的那样)来保持(或提高)性能。
从我的虚拟销售脚本和虚拟函数(如下)可以看出,单个节点上的并行化非常容易。将其扩展到多个节点是否同样容易?如果是这样,我将如何修改我的脚本?
R脚本:
外壳脚本:
(shell 脚本由 提交qsub script.sh
)
r - doParallel / doMC 不仅与 foreach 包一起使用
到目前为止,我发现的所有官方教程doParallel、doParallel-Vignette、doMC和doMC-Vignette仅涵盖如何将并行计算与foreach
. 有没有办法加快“顺序”代码的速度?
想象一下,它就像将一个文件拆分为多个文件并使用不同的R
. 例如
提前致谢!
(R v.3.2.1
,R工作室v.0.99.451
)
r-caret - 插入符号不并行运行
实际的并行插入符取决于 R、插入符和 doMC 包。如 并行插入符号代码中所述
有人和我在类似的环境下工作吗?R插入符号并行化正常工作的最大R版本是多少?
更新 1:我的代码如下:
更新 2:当我从命令行运行时,只有一个核心在工作当我从 Rstudio 运行这些脚本时,paralell 正在工作,因为我通过 top 看到 4 个进程。但是在此之后的一秒钟发生了错误:
更新 4:
嗨,看来问题出在已终止的 R 会话中。每次我启动 AWS 实例时,我都会运行 R 代码,现在刷新 R 引擎。现在,每次我刷新 Rstudio 浏览器时,我都会执行 Session -> Restart R 。似乎它运行。我现在正在检查从 Ubuntu 命令行运行脚本是否相同。
一般是跑不完的。在数据级别上并行插入符号。这意味着它能够在不同的过程中处理每个重采样。但是如果样本仍然很大(100,000 / 2(折叠数 = 2)X 2,000 个特征),这对于每个处理器单元可能很难完成。我对吗 ?
我认为并行性必须在算法级别。这意味着每个算法都可能在多个内核上运行。如果这种算法在插入符号中可用???
r - 为什么并行代码在集群上的运行速度可能比在本地的几个核心上运行得慢?
我正在尝试解决为什么在本地计算机(具有 3 个内核)上串行运行良好且并行运行良好的进程在集群上的多个内核上运行时可能会减慢速度。我真的不能做一个最小的非工作示例,因为代码在本地工作得很好。
我已经修改了脚本以将每个工作人员的输出保存到一个文件中,稍后我会聚合这些文件——所以我不认为这是通信和聚合,除非我遗漏了一些东西。
这是我的输出。我正在为一个相当复杂的过程展示一个包装函数,然后我在运行它之前自己运行一次plyr
:
然后我并行运行代码,一切都变慢了:
有哪些可能会导致这种行为?正如我所说,该函数会丢弃输出,在串行运行时保持基准速度,并在我的本地机器上并行运行三个内核。
这是一件事:为什么“经过”时间几乎是“用户”时间的 24 倍?(无论如何,“用户”时间是多少?)
编辑针对评论中的问题,这里是并行与串行性能的正面比较。并行实际上更慢。
Edit2 代码在登录节点上运行良好——每个作业连续需要 6 秒,并行 24 个作业需要 12 秒。那么计算节点通常与登录节点有何不同呢?
Edit3
Solved
原来我一直ibrun
在我的shell脚本中使用,它将作业发送到多个线程。但是,R 使用一种称为“线程并行性”的东西,其中并行后端是从 R 内部调用的,而不是从调用 R 作业的 shell 脚本中调用的。如果从批处理命令调用多个线程,集群将使并行作业在每个核心中运行。因此,速度大约是核心数量的倍数。所以,故事的寓意:只向批处理系统询问共享资源系统上的一个线程,并让 R 处理实际使用的核心数量。这个问题可能只与具有批处理系统的共享超级计算机相关。
r - 多次迭代后出现 %dopar% 错误
我一直在尝试在 R 中运行并行化的 foreach 循环,它可以正常运行大约十次迭代,但随后崩溃,显示错误:
我将每个循环的结果附加到一个文件中,该文件确实显示了预期的输出。我的脚本如下,使用这篇文章中的 combn_sub 函数:
r - Optimizing Quanstrat MACD with apply.paramset returns error
I am trying to test some trading strategies involving digital currency. One such strategy involves MACD crossovers, but I would like to optimize the nSlow
& nFast
parameters.
Here's a reproducible example (which runs):
The above runs perfectly-fine. However, I want to vary the nFast
and nSlow
parameters to the MACD()
function:
This gives me the following error, which I'm not sure how to debug:
What am I doing wrong? FWIW, I am using Ubuntu 12.04/14.04. Any help is much appreciated. Thanks!!