Библиотека R doMC detectCores неверно сообщает количество ядер

Преподаватель R предоставил этот код, чтобы убедиться, что учащиеся используют только половину ядер на своих ПК/ноутбуках при параллельной обработке. Однако, как показано ниже, системный отчет с моего Mac говорит, что у меня 4, в то время как эта библиотека, кажется, обнаруживает 8. Правильно ли установлен этот код, чтобы убедиться, что по крайней мере 1 или 2 ядра свободны? Или мне следует изменить последнюю строку, может быть, с оператором ifelse(), который говорит ему, что делать, когда системные спецификации не согласуются с его обнаружением?

R-код:

# Setting Parallel processing
library(doMC)
library(parallel)
number_of_cores <- detectCores()
registerDoMC(cores = number_of_cores/2)

Вывод (сколько ядер он видит):

[1] 8

Что сообщает «Об этом Mac» -> «Системный отчет» для спецификаций, включая ядра:

  Model Name:   MacBook Pro
  Model Identifier: MacBookPro14,3
  Processor Name:   Intel Core i7
  Processor Speed:  2.8 GHz
  Number of Processors: 1
  Total Number of Cores:    4
  L2 Cache (per Core):  256 KB
  L3 Cache: 6 MB
  Memory:   16 GB
  Boot ROM Version: MBP143.0160.B02

person TMWP    schedule 13.08.2017    source источник
comment
Проблема здесь в количестве потоков по сравнению с количеством ядер. Ядра являются физическими, в то время как потоки (более или менее) разделяют ядро ​​и управляются программным обеспечением. Поищите в Интернете по теме нити и сердечники, и вы найдете тонны материалов.   -  person lmo    schedule 14.08.2017
comment
en.wikipedia.org/wiki/Hyper-threading   -  person Hong Ooi    schedule 14.08.2017
comment
Попробуйте detectCores(logical = FALSE)   -  person F. Privé    schedule 14.08.2017


Ответы (1)


Проблема здесь в количестве потоков по сравнению с количеством ядер. Ядра являются физическими, в то время как потоки (более или менее) разделяют ядро ​​и управляются программным обеспечением. Эта комбинация аргументов должна дать вам только ядра:

detectCores(all.tests = FALSE, logical = FALSE)
person Satpal Singh    schedule 04.04.2019