确保numpy正在mac pro上使用MKL库

确保numpy正在mac pro上使用MKL库,numpy,enthought,intel-mkl,Numpy,Enthought,Intel Mkl,我使用的是Enthound的Canopy/EPD版本的python,它附带了与MKL链接的numpy。我目前正在我的工作电脑(Windows7,四核i5@3.33GHz,4GB内存)和我的家庭工作站(MacPro 3.1,Ubuntu 12.04,2x四核Xeon@2.8GHz,6GB内存)上并行运行一组模拟(使用PP) 但是,当我对我的模拟进行基准测试时,它们在工作计算机上运行得更快(每次迭代35秒,而在mac pro上则是60秒)。这个问题在内核之间得到了完美的平衡(令人尴尬的并行问题),因

我使用的是Enthound的Canopy/EPD版本的python,它附带了与MKL链接的numpy。我目前正在我的工作电脑(Windows7,四核i5@3.33GHz,4GB内存)和我的家庭工作站(MacPro 3.1,Ubuntu 12.04,2x四核Xeon@2.8GHz,6GB内存)上并行运行一组模拟(使用PP)

但是,当我对我的模拟进行基准测试时,它们在工作计算机上运行得更快(每次迭代35秒,而在mac pro上则是60秒)。这个问题在内核之间得到了完美的平衡(令人尴尬的并行问题),因此我怀疑家中linux工作站上的MKL库存在问题。是否有一种方法可以验证MKL库是否在python中实际使用。我读过一些线程,它们说您可以检查python是否链接到它,但它不能确保它被正确构建并实际使用

>>> numpy.show_config()
您将看到类似这样的输出,表明MKL确实是链接的

lapack_opt_info:
    libraries = ['mkl_lapack95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread']
    library_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../lib']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../include']
blas_opt_info:
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread']
    library_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../lib']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../include']
openblas_info:
NOT AVAILABLE
lapack_mkl_info:
    libraries = ['mkl_lapack95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread']
    library_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../lib']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../include']
blas_mkl_info:
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread']
    library_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../lib']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../include']
mkl_info:
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread']
    library_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../lib']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../include']

scipy.show\u config()
不是您想要的吗?我不确定这是否算作“确保”它被实际使用。当我键入时,所有的“库目录”和“包含目录”都会说:“/home/vagrant/src/master env/…”。这是否正确(我的用户帐户不是“vagrant”,当我检查该文件夹时,它不在那里)。该字段是否重要,或是否未使用?库正确地报告了“mkl_lapack95_lp64”等。关于您的潜在问题,您是否考虑了物理核心与逻辑核心?您可以尝试调整环境变量MKL_NUM_THREADS以避免可能的颠簸。我会再看一遍,但我正在执行的操作不是多线程的(很多add()、multiply()等,但没有dot()。此外,我不确定为什么XEON上会出现问题,而i5上不会出现问题。这些路径是硬编码列表,您可以在config.py中找到,而不一定是numpy使用的路径。