gpt4 book ai didi

r - 数据表和并行计算

转载 作者:行者123 更新时间:2023-12-03 07:49:55 27 4
gpt4 key购买 nike

关注此帖子:multicore and data.table in R ,我想知道在使用data.table时是否有一种方法可以使用所有核心,通常可以并行化按组进行计算。看来plyr通过设计允许此类操作。

最佳答案

首先要检查的是 data.table FAQ 3.1 点 2 已经陷入:

One memory allocation is made for the largest group only, then that memory is reused for the other groups. There is very little garbage to collect.



这是 data.table 分组很快的原因之一。但是这种方法不适合并行化。并行化意味着将数据复制到其他线程,而不是花费时间。但是,我的理解是 data.table分组通常比 plyr 快与 .parallel无论如何。这取决于每个组任务的计算时间,以及该计算时间是否可以轻松减少。移动数据通常占主导地位(当对 1 或 3 次大数据任务进行基准测试时)。

到目前为止,更多情况下,实际上是一些问题在 j 中咬人。 [.data.table的表达式.例如,最近我们看到来自 data.table 的表现不佳。分组但罪魁祸首竟然是 min(POSIXct) ( Aggregating in R over 80K unique ID's )。避免这个问题产生了超过 50 倍的加速。

所以咒语是:Rprof , Rprof , Rprof .

此外,同一常见问题解答中的第 1 点可能很重要:

Only that column is grouped, the other 19 are ignored because data.table inspects the j expression and realises it doesn’t use the other columns.



所以, data.table真的根本不遵循拆分-应用-组合范式。它的工作方式不同。 split-apply-combine 有助于并行化,但它确实不能扩展到大数据。

另请参阅 data.table 介绍小插图中的脚注 3:

We wonder how many people are deploying parallel techniques to code that is vector scanning



那是想说“当然,并行速度要快得多,但是使用有效的算法真正需要多长时间?”。

但是,如果您进行了分析(使用 Rprof ),并且每个组的任务确实是计算密集型的,那么 datatable-help 上的 3 个帖子(包括“多核”一词)可能会有所帮助:

multicore posts on datatable-help

当然,在 data.table 中有很多并行化会很好的任务,并且有一种方法可以做到。但它还没有完成,因为通常其他因素会影响,所以它的优先级很低。如果您可以使用基准和 Rprof 结果发布可重现的虚拟数据,这将有助于提高优先级。

关于r - 数据表和并行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14759905/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com