r-是一个``purrr :: map()`在`eapply.apply :: future_apply()`也并行运行



对不起,如果这些是一个愚蠢的问题,但是我几乎不知道并行处理在实践中的工作方式。

我的问题是:
-Q1。future.apply::future_apply()中类似purrr::map()的函数是否也并行运行?
-Q2。如果我在future.apply()函数内运行furrr::future_map(),会发生什么?
-Q3。假设我做了上述,我会在furrr::future_map()之前包括另一个plan(multiprocess)呼叫吗?

在这里的未来框架的作者。

  • Q1。future.apply::future_apply()中类似purrr::map()的函数也同时运行吗?

否。" purrr"中没有并联运行。

  • Q2。如果我在future.apply()函数内运行furrr::future_map(),会发生什么?

它将依次落后,即plan(sequential)。这样做的原因是防止很少有人想要的递归,嵌套并行性。这在未来的小插图中解释了" R:Future Topologies的未来"。在某些情况下,嵌套并行性是合理的,例如在多个机器上分布式处理,您依次在每台机器上的多个内核中并行并行处理。这可以通过使用

来完成
plan(list(tweak(cluster, workers = c("n1", "n2", "n3")), multisession))
  • Q3。假设我做了上述情况,我会在furrr::future_map()之前包括另一个plan(multiprocess)吗?

您不想设置plan()"内部"您的代码/函数。将plan()的控件留给使用您的代码/调用您的功能的人。另外,人们不想使用plan(list(tweak(multisession, workers = ncores), tweak(multisession, workers = ncores)))中的嵌套数量的核心数,因为它将使用ncores^2内核,该内核会超载您的计算机。使用默认数字作为plan(list(multisession, multisession))将没有此问题,因为在第二层中,无论如何都只有一个核心。

相关内容

  • 没有找到相关文章

最新更新