Я обнаружил странное поведение при выполнении некоторого кода, который при запуске на виртуальной машине данных Ubuntu Azure (DSVM) выполняет PLSRegression
из sklearn
.
Запуск того же кода в8-ядерная виртуальная машина и 16-ядерная виртуальная машина занимают одинаковое количество времени на стену, несмотря на то, что количество ядер вдвое больше. Вот выходные данные %time
в ноутбуке Jupyter:
8 ядер:
CPU times: user 56min 29s, sys: 54min 4s, total: 1h 50min 33s
Wall time: 14min 8s
16 ядер:
CPU times: user 1h 42min 3s, sys: 1h 52min 35s, total: 3h 34min 38s
Wall time: 13min 29s
Используя htop
, я могуубедитесь, что все ядра максимально работают во время работы кода. Так как основной код выполняется обычным образом (т. Е. Однопоточным), я предполагаю, что часть PLSRegression
является многопоточной или многопроцессной и использует все доступные ядра. Я взял это до 64 ядер с похожими результатами, то есть очень мало изменений во время стены.
Мои вопросы:
- Почему время стены такое жес удвоенным временем ЦП при использовании 16 ядер?
- Можно ли как-нибудь заставить код работать быстрее в условиях настенного времени, используя больше ядер?