未来的worker限制::plan()函数高于可用的CPU核心

问题描述 投票:0回答:1

我有一个 8 核的 CPU,我试图用它来并行 future_map_chr()。
我的问题如下:我的计算机中的核心数等于8,那么如何才能将计划设置为并行化功能:

plan(multisession, workers = 50,gc=T)

我是否误解了工人和核心之间的区别?比

workers = detectCores()
好吗?

非常感谢

r future furrr
1个回答
0
投票

Futureverse的作者在这里:

workers = detectCores()
好吗?

我认为

parallelly::availableCores()
parallel::detectCores()
更好、更安全,例如https://www.jottr.org/2022/12/05/avoid-detectcores/

使用:

plan(multisession)

等同于:

plan(multisession, workers = parallelly::availableCores())

但是,Futureverse 和

plan()
中没有任何内容可以阻止您通过手动指定
workers
来超出限制,例如

plan(multisession, workers = 50)

所以,是的,这将在后台启动 50 个并行工作线程,即使您的机器上只有 8 个 CPU 核心。


I guess I could add some kind of protection when one tries to set up more than `parallelly::availableCores()` local workers. For instance, it could throw an informative error.  For anyone who wishes to override that, I could add an argument `force = TRUE`.  I'll add it to my things-to-think-about list.

© www.soinside.com 2019 - 2024. All rights reserved.