Fedora 23和24出乎意料地减缓了Numpy点和其他function

这个问题最初被问到在stackoverflow byt被发现是脱离主题,下面的文本已经从最初的post更新了新的细节。

我最近购买了一台带有i7处理器的新电脑。 我安装了Fedora 24,还有Python和一些科学编程所需的库,如Numpy和Scipy(Numpy version 1.11.0)。

在安装完所有我需要的之后,我运行了一些testing代码(从这里下载),以评估系统的速度,特别是:

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, xT)", setup=setup) print "dot:", t.timeit(count)/count, "sec" 

运行这段代码后,我得到:

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

我的问题是,在更老的PC上,“点”的执行时间更短。 特别是对于使用i7处理器的旧版(2012)Windows PC,我得到:

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

使用运行Linux Mint 18的旧版(2013)i7个人电脑,我可以得到:

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

正如你所看到的,更旧的PC,特别是运行Linux Mint 18的PC,速度要快4倍。

我自己安装了所有这些电脑。 特别是对于Fedora最近的一个,我使用了python 2.x和3.x这两个numpy软件包:(1)在dnf和(2)从源代码编译(如这里所解释的)。 我还要补充一点,上面提到的所有时间代表了几次执行代码后所得到的值,而没有任何其他的运行过程。

我相信我在这里错过了一些东西。 我不知道该怎么做,以获得我的新PC的体面表演…

(在Fedora 23和Mint 18最近的其他PC上也出现了同样的问题)

更新

我在上面提到的PC上安装了Ubuntu 16.04,而不是Fedora 24。 Numpy点的计算时间除以10,其他testing的计算时间明显较短:

 $ 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 

我能在网上find的唯一信息是在一个非常古老的post,但我很难相信这种types的bug可以持续很长时间。