Я запускаю набор параллельных вычислений на 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?
n_jobs=6
(поскольку это то, что в вашем коде)? Я не должен догадываться! В любом случае, я недостаточно знаю о ваших библиотеках, чтобы предположить, почему они могут не работать одинаково в разных ОС, но одна из возможностей заключается в том, что в вашей системе Ubuntu запущен какой-то другой процесс, занимающий одно или несколько ядер. - person Blckknght   schedule 11.09.2019