问题标签 [furrr]
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 - 具有“未来”的并行 GIS
我注意到在加载furrr
之后raster
,我被警告说values
被屏蔽了:
我不是 100% 相信这是问题所在,但我正在努力raster::extract
在sf
对象上运行
我可以提取就好了
但是当我并行化(版本 1)时出现错误:
一件奇怪的事情是它似乎可以与sp
类型对象一起使用(版本 2)
sf
除了在and之间切换之外SpatialPointsDataFrame
,我怎样才能让“版本 1”代码工作?
osrm - 通过在 osrm::osrmIsochrone 上应用 furrr::future_map 不会提高速度/性能
下面的代码显示了一个计算量很大的示例(两个示例约 430 秒)。我试图通过使用 furrr::future_map 来提高效率,但到目前为止我还没有看到任何区别。
底层函数 osrm::osrmIsochrone 非常繁重,所以如果有人能指出我正确的方向,我会非常高兴。
r - 在 R 中使用 furrr [和 runner::runner() ] 的并行化问题
下面我试图给出我的问题的最小可重复示例。在我最初的问题中,我尝试使用 furrr 包在多个数据集上并行运行代码。为了说明这一点,以下是示例数据:
以下是示例函数:
如果我运行以下两行代码中的任何一个
然后我得到了我想要的,即
但是,如果我尝试运行以下两行代码,则会收到以下相应的错误消息:
不幸的是,我无法将任何错误追踪到我了解出了什么问题以及如何修复它的地步。解决问题的任何帮助将不胜感激。
我还应该提到,我已经能够使用 rowr::rollApply() 而不是 runner::runner() 来解决问题。但是,对于我更复杂的问题,我需要 runner,因为然后可以选择在哪些日期应用函数 calc_ex(),以及让估计窗口依赖于日期而不是依赖于观察的数量。同样,我们将不胜感激对解决问题的任何帮助。提前感谢任何花时间阅读这篇文章的人。
更新:我也尝试直接使用期货来 purrr::map(),它返回了相同的错误信息
r - 当我使用 `dplyr::mutate()` 时,为什么 `furrr::future_map_int()` 比 `purrr::map_int()` 慢?
我有一个小标题,其中包含一个带有向量的列表列。我想创建一个新列来说明每个向量的长度。由于这个数据集很大(3M 行),我想用这个furrr
包来减少一些处理时间。但是,它似乎purrr
比furrr
. 怎么来的?
为了演示这个问题,我首先模拟了一些数据。不要费心去理解模拟部分的代码,因为它与问题无关。
数据模拟功能
模拟数据
我想改变一个新列( )的实际问题length_col_a
,它将解释col_a
. 我要这样做两次。先用purrr::map_int()
再用furrr::future_map_int()
。
我知道tictoc
这不是最准确的基准测试方法,但仍然furrr
应该更快(正如小插图所暗示的那样),但事实并非如此。我确保数据没有分组,因为作者解释说这furrr
不适用于分组数据。那么还有什么其他解释可以解释为furrr
比 慢(或不是非常快)purrr
?
编辑
我在讨论几乎相同问题的 github repo上发现了这个问题。furrr
但是,情况有所不同。在 github issue 中,被映射的函数是用户定义的函数,需要附加额外的包。所以作者解释说,每个furrr
工人在进行计算之前都必须附上所需的包裹。相比之下,我length()
从 映射函数base R
,因此实际上应该没有附加任何包的开销。
此外,作者认为可能会出现问题,因为plan(multisession)
没有在 RStudio 中工作。但是将parallelly
包更新到开发版本可以解决这个问题。
不幸的是,此更新对我的情况没有任何影响。
r - 使用 purrr::map 附加小标题
背景
我编写了一个函数map2
,旨在生成一个数据框或数据框列表。我的问题是这个函数会生成未分配给对象的单个表。我想要的输出是一个数据框,它存储向量化循环的每次迭代的输出小标题。
代表
电流输出
期望的输出
r - 如何跨多个 slurm 节点并行化 future_pmap()
我可以访问一个具有许多节点的大型计算集群,每个节点都有 >16 个内核,运行 Slurm 20.11.3。我想使用furrr::future_pmap()
. 我可以在单个节点上跨多个内核并行化,但我无法找出正确的语法来利用多个节点上的内核。请参阅此相关问题。
这是一个可重现的示例,我创建了一个休眠 5 秒并返回开始时间、结束时间和节点名称的函数。
我以salloc --nodes=4 --ntasks=64
交互方式使用并运行上述 R 脚本来运行该作业。
该脚本在大约 20 秒内运行,并为所有行返回相同的主机名,这表明它在一个节点上同时运行 16 次迭代,而不是按预期在 4 个节点上同时运行 64 次迭代。我应该如何更改plan()
语法以便可以利用多个节点?
编辑:我还尝试了其他一些事情:
- 我替换
multicore
为multisession
,但没有看到输出有任何差异。 - 我替换了
plan(list(...))
,plan(cluster(workers = availableWorkers())
但它只是挂起。
r - 在 future_map 中使用 igraph 函数时出错
尝试在并行 future_map 中调用 igraph 函数 all_simple_paths 时,我收到错误消息“vertex_attr_names(graph) 中的错误:不是图形对象”。我认为 future_map 覆盖任何 igraph 函数都不是问题,因为如果我不设置并行会话,代码就可以工作。下面是一个复制错误的示例。任何帮助,将不胜感激。
pipe - Purrr:如何仅将一个拟合模型分配给 .GlobalEnv 中的对象并保留拟合模型的列表?
我正在拟合多个空模型(例如null
)和一个替代模型(full
)同时使用purrr
and furrr
。我试图从这些拟合模型中提取一些值并进一步处理它们。通过这样做,我还想将计算结果分配给full
全局环境中的对象。
由于每个模型在我的实际计算中都会消耗大量内存,(1)我只想为 而full
不是null
s 进行这样的分配,并且(2)我想保持工作流使用|>
以避免创建中间对象。那么,我应该如何将只有一个拟合模型的结果分配给 .GlobalEnv 中的对象,从而保持管道工作流程?