我有一个8核的CPU,我试图用它来做并行future_map_chr()。我的质询如下:我的计算机中的核心数量等于8,因此如何将计划设置为并行化函数:
plan(multisession, workers = 50,gc=T)
我是否误解了worker和core之间的区别?它比workers = detectCores()好吗?非常感谢
workers = detectCores()
s71maibg1#
Futureverse的作者:它比workers = detectCores()好吗?我认为parallelly::availableCores()比parallel::detectCores()更好,更安全,例如。https://www.jottr.org/2022/12/05/avoid-detectcores/。使用:
parallelly::availableCores()
parallel::detectCores()
plan(multisession)
与:
plan(multisession, workers = parallelly::availableCores())
然而,Futureverse和plan()中没有任何东西可以阻止您通过手动指定workers来超过限制,例如。
plan()
workers
plan(multisession, workers = 50)
所以,是的,这将在后台启动50个并行工作进程,即使你的机器上只有8个CPU核心。我想我可以在尝试设置超过parallelly::availableCores()的本地工人时添加某种保护。例如,它可能抛出一个信息错误。对于任何希望覆盖它的人,我可以添加一个参数force = TRUE。我创建了https://github.com/HenrikBengtsson/parallelly/issues/107来跟踪这个想法。
force = TRUE
1条答案
按热度按时间s71maibg1#
Futureverse的作者:
它比
workers = detectCores()
好吗?我认为
parallelly::availableCores()
比parallel::detectCores()
更好,更安全,例如。https://www.jottr.org/2022/12/05/avoid-detectcores/。使用:
与:
然而,Futureverse和
plan()
中没有任何东西可以阻止您通过手动指定workers
来超过限制,例如。所以,是的,这将在后台启动50个并行工作进程,即使你的机器上只有8个CPU核心。
我想我可以在尝试设置超过
parallelly::availableCores()
的本地工人时添加某种保护。例如,它可能抛出一个信息错误。对于任何希望覆盖它的人,我可以添加一个参数force = TRUE
。我创建了https://github.com/HenrikBengtsson/parallelly/issues/107来跟踪这个想法。