Приложение видит только половину потоков, доступных на двухпроцессорной машине - PullRequest
0 голосов
/ 17 декабря 2018

Недавно мы приобрели двухпроцессорную рабочую станцию ​​Dell, оснащенную двумя процессорами Xeon 6138 Gold.Каждый ЦП имеет 20 физических ядер (40 логических ядер), поэтому в общей сложности 40 физических ядер или 80 логических ядер.

На этом компьютере установлены Linux Fedora и Windows 10 Professional с использованием настройки двойной загрузки,Обратите внимание, что я сам не установил этот компьютер.

Диспетчер задач Windows правильно отображает 80 логических ядер.Эти 80 ядер также доступны в Linux при просмотре в /proc.

При запуске PBRT (https://www.pbrt.org/) в Linux, приложение правильно использует (и насыщает) 80 ядер.

В Windows, однако, этот процесс использует только 40 логических ядер из 80. Я не проверял, но я уверен, что PBRT использует std :: thread :: hardware_concurrency (), что является хорошим способом определения количестваядра. Если я заставлю PBRT использовать 80 потоков благодаря опции командной строки, диспетчер задач Windows не показывает, что все ядра заполнены. Только половина из них. Кажется, что один процесс Windows не может использовать все 80 логических ядер для меня.

Это ограничение Windows? Это удивительно.

Должен ли я установить определенную версию Windows, чтобы все ядра были доступны для одного процесса?

...