与mkl链接的稀疏矩阵乘法numpy

时间:2017-07-23 13:52:38

标签: numpy scipy sparse-matrix intel-mkl

我有与mkl联系的numpy,我在稀疏矩阵上进行矩阵乘法,它似乎非常慢。例如,对于大小为(100000,1000)的矩阵A,稀疏密度= 0.1和dtype = numpy.float64,我有 timeit A.T.dot(A)给我5.24s 但如果我将A转换为密集矩阵然后进行乘法,我得到~650ms。 blas操作是否对稀疏矩阵没有影响?此外,我观察到我的cpu使用情况在进行稀疏乘法时只显示了一个正在使用的核心,但在密集情况下使用了多个核心。

我的numpy.show_config()具有以下配置:

lapack_opt_info:
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
    library_dirs = ['/home/user/miniconda2/envs/sketch/lib']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    include_dirs = ['/home/user/miniconda2/envs/sketch/include']
blas_opt_info:
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
    library_dirs = ['/home/user/miniconda2/envs/sketch/lib']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    include_dirs = ['/home/user/miniconda2/envs/sketch/include']
openblas_lapack_info:
  NOT AVAILABLE
lapack_mkl_info:
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
    library_dirs = ['/home/user/miniconda2/envs/sketch/lib']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    include_dirs = ['/home/user/miniconda2/envs/sketch/include']
blas_mkl_info:
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
    library_dirs = ['/home/user/miniconda2/envs/sketch/lib']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    include_dirs = ['/home/user/miniconda2/envs/sketch/include']

关于如何使numpy的性能在稀疏矩阵上得到改进的任何想法。感谢。

0 个答案:

没有答案