基准测试Python并行,为什么Ubuntu的性能比Windows慢?

时间:2019-09-11 02:13:54

标签: python joblib

我正在使用以下2个平台的Intel®Xeon®L5640(6核12兄弟姐妹)运行一组parallel计算

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

  • Windows 7 Ultimate,Python 3.7.3,numpy 1.16.4,sklearn 0.21.2。

没有其他作业/任务占用CPU核心。

我替补标记了该程序并获得了一些统计信息。

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))

在Ubuntu和Windows上花费了大约470秒,这是合理的。

然后我运行了

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))

在Ubuntu上花费了大约493s,在Windows上花费了350s,其中Windows上的部分是合理的,而Ubuntu上的部分不是。

n_jobs = 6比Windows上的n_jobs = 4花费的时间更少,这是合理的,因为代码使用了更多的cpu内核。

在Ubuntu上,n_jobs = 6比n_jobs = 4花费更多的时间,这是不合理的。

这表明与默认后端并行的joblib在Ubuntu和Windows之间执行不同的逻辑。

,然后我搜索doc。但是文档中涉及的“ windows”是关于“多处理”后端的,由于我的是“ 0.13.2”,因此不适用于此处。

那么,为什么Ubuntu的性能比Windows慢?

0 个答案:

没有答案