Как я могу запросить количество физических ядер из MATLAB? - PullRequest
5 голосов
/ 29 ноября 2011

Кто-нибудь знает способ запросить количество физических ядер из MATLAB? Я бы хотел получить количество физических, а не логических ядер (которые могут отличаться при включенной гиперпоточности).

Мне нужен кроссплатформенный метод (Windows и Linux, не заботятся о Mac), но я был бы рад использовать два отдельных метода с оператором switch, основанным на выводе computer .

Пока я пробовал:

  1. java.lang.Runtime.getRuntime().availableProcessors
  2. System.Environment.ProcessorCount
  3. !wmic cpu get NumberOfCores и !wmic cpu get NumberOfLogicalProcessors.

1 является кроссплатформенным, но возвращает количество логических, а не физических процессоров.

2 - только Windows, и также возвращает логические, а не физические процессоры.

3 предоставляет как физические, так и логические процессоры, но также только для Windows, и хотя я могу успешно использовать его из командного окна DOS, по какой-то причине он кажется зависшим на вечность при запуске из MATLAB.

Ответы [ 3 ]

7 голосов
/ 30 ноября 2011

Вам нужно использовать недокументированную команду

feature('numcores')

как объяснено здесь: http://undocumentedmatlab.com/blog/undocumented-feature-function/

3 голосов
/ 06 марта 2014

Это будет работать

getenv('NUMBER_OF_PROCESSORS')
0 голосов
/ 29 ноября 2011

Вы можете использовать функцию maxNumCompThreads.Однако это устарело.Тем не менее он работает на Matlab 2011a.

maxNumCompThreads
Warning: maxNumCompThreads will be removed in a future release. Please remove any
instances of this function from your code. 
> In maxNumCompThreads at 27

ans =

     4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...