Назад | Перейти на главную страницу

Fedora 23 и 24 на удивление медленные с Numpy dot и другими функциями

Первоначально этот вопрос задавался в случае, если байты stackoverflow оказались не по теме, текст ниже был обновлен по сравнению с исходным сообщением с новыми деталями.

Недавно я приобрел новый компьютер с процессором i7. Я установил на него Fedora 24 вместе с Python и несколькими библиотеками, необходимыми для научного программирования, такими как Numpy и Scipy (Numpy версии 1.11.0).

После установки всего необходимого я запустил несколько тестовых кодов (загруженных с Вот), чтобы оценить скорость работы системы, в частности:

test_numpy.py, который содержит:

#!/usr/bin/env    
python    
import numpy
import sys
import timeit

try:
    import numpy.core._dotblas
    print 'FAST BLAS'
except ImportError:
    print 'slow blas'

print "version:", numpy.__version__
print "maxint:", sys.maxint
print

x = numpy.random.random((1000,1000))

setup = "import numpy; x = numpy.random.random((1000,1000))"
count = 5

t = timeit.Timer("numpy.dot(x, x.T)", setup=setup)
print "dot:", t.timeit(count)/count, "sec"

После запуска этого кода я получаю:

slow blas
version: 1.11.0
maxint: 9223372036854775807
dot: 0.0981109619141 sec

Моя проблема в том, что на гораздо более старых компьютерах время выполнения «точки» намного меньше. В частности, для более старого (2012 г.) ПК с Windows с процессором i7 я получаю:

FAST BLAS
version: 1.9.1
maxint: 2147483647
dot: 0.0459410942418 sec

А со старым (2013 г.) ПК с i7 под управлением Linux Mint 18 я получаю:

slow blas
version: 1.11.0
maxint: 9223372036854775807
dot: 0.0240209579468 sec

Как видите, старые ПК, в частности тот, на котором установлен Linux Mint 18, примерно в 4 раза быстрее ...

Все эти ПК я установил сам. В частности, для самого последнего с Fedora я использовал как python 2.x, так и 3.x с пакетом numpy: (1) для dnf и (2) путем компиляции из источников (как объяснено Вот). Я также добавлю, что все случаи, упомянутые выше, являются репрезентативными для значений, полученных после выполнения кода несколько раз без какого-либо другого запущенного процесса.

Я считаю, что мне что-то здесь не хватает. Я понятия не имею, что делать, чтобы добиться достойной производительности с моим новым ПК ...

(Точно такая же проблема наблюдалась на других недавних ПК с Fedora 23 и Mint 18.)

Обновить:

Я установил Ubuntu 16.04 вместо Fedora 24 на недавний компьютер, упомянутый выше. Время вычисления для точки Numpy было разделено на 10 и значительно меньше для других тестов:

$ python test_numpy.py 
slow blas
version: 1.11.0
maxint: 9223372036854775807
dot: 0.00876359939575 sec
$ python test_scipy.py 
cholesky: 0.00768299102783 sec
svd: 0.304620409012 sec

Единственная информация, которую я смог найти в Интернете, - это очень старый пост но мне трудно поверить, что такой тип ошибки может длиться так долго.