Сравните параллель с Python, почему Ubuntu работает медленнее, чем Windows?

Я запускаю набор параллельных вычислений на Intel(R) Xeon(R) L5640 (6 ядер, 12 братьев и сестер) со следующими 2 платформы

  • Ubuntu 18.04, Python 3.7.3, numpy 1.16.4, sklearn 0.21.2.

  • Максимальная версия Windows 7, Python 3.7.3, numpy 1.16.4, sklearn 0.21.2.

никакие другие задания/задачи не занимают ядра процессора.

Я оценил эту программу и получил некоторую статистику.

from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
from sklearn.datasets import fetch_openml
import time
X, y = fetch_openml('mnist_784', version=1, return_X_y=True)
(trainData, testData, trainLabels, testLabels) = train_test_split(X,
y, test_size=0.1)

start = time.time()
model = KNeighborsClassifier(n_jobs=4)
model.fit(trainData, trainLabels)
predictions = model.predict(testData)
print('n_jobs=4 took {}s'.format(time.time() - start))

это заняло около 470 секунд как на Ubuntu, так и на Windows, что разумно.

а потом я запустил это

start = time.time()
model = KNeighborsClassifier(n_jobs=6)
model.fit(trainData, trainLabels)
predictions = model.predict(testData)
print('n_jobs=6 took {}s'.format(time.time() - start))

это заняло около 493 секунд в Ubuntu и 350 секунд в Windows, где часть для Windows разумна, а часть для Ubuntu - НЕ.

n_jobs=6 занимает меньше времени, чем n_jobs=4 в Windows, что разумно, поскольку код использует больше процессорных ядер.

n_jobs=6 занимает больше времени, чем n_jobs=4 в Ubuntu, что НЕ разумно.

это указывает на то, что библиотека заданий, параллельная серверной части по умолчанию, выполняет различную логику между Ubuntu и Windows.

а затем я провел поиск в документе. но документ включает в себя «окна», речь идет о «многопроцессорном» бэкэнде, который здесь не применяется, поскольку у меня «0.13.2».

Итак, почему Ubuntu работает медленнее, чем Windows?


person Community    schedule 11.09.2019    source источник
comment
Я смущен. Вы, кажется, говорите, что это занимает и не занимает одинаковое количество времени. В чем разница между двумя наборами случаев, которые вы описываете? Второй с n_jobs=6 (поскольку это то, что в вашем коде)? Я не должен догадываться! В любом случае, я недостаточно знаю о ваших библиотеках, чтобы предположить, почему они могут не работать одинаково в разных ОС, но одна из возможностей заключается в том, что в вашей системе Ubuntu запущен какой-то другой процесс, занимающий одно или несколько ядер.   -  person Blckknght    schedule 11.09.2019
comment
@Blckknght Я обновил ОП. Так понятно?   -  person    schedule 11.09.2019