Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Numpy 与mkl连接的稀疏矩阵乘法运算_Numpy_Scipy_Sparse Matrix_Intel Mkl - Fatal编程技术网

Numpy 与mkl连接的稀疏矩阵乘法运算

Numpy 与mkl连接的稀疏矩阵乘法运算,numpy,scipy,sparse-matrix,intel-mkl,Numpy,Scipy,Sparse Matrix,Intel Mkl,我把numpy和mkl联系起来,我在稀疏矩阵上做矩阵乘法,看起来速度很慢。例如,对于大小为(100000,1000),稀疏密度为0.1,dtype为numpy.float64的矩阵A,我有 timeit A.T.dot(A)给我5.24秒 但是如果我把一个矩阵转换成稠密矩阵,然后进行乘法,我得到了650ms。 blas运算对稀疏矩阵不起作用吗?此外,我还观察到,在执行稀疏乘法时,我的cpu使用情况显示只有一个核在使用,但在密集情况下使用多个核 My numpy.show_config()具有以下

我把numpy和mkl联系起来,我在稀疏矩阵上做矩阵乘法,看起来速度很慢。例如,对于大小为(100000,1000),稀疏密度为0.1,dtype为numpy.float64的矩阵A,我有 timeit A.T.dot(A)给我5.24秒 但是如果我把一个矩阵转换成稠密矩阵,然后进行乘法,我得到了650ms。 blas运算对稀疏矩阵不起作用吗?此外,我还观察到,在执行稀疏乘法时,我的cpu使用情况显示只有一个核在使用,但在密集情况下使用多个核

My 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在稀疏矩阵上的性能,有什么想法吗。谢谢。

什么是数据类型?数据类型是numpy.float64如果在具有形状(583250,76)的数组中有41218703个非零值,为什么要使用稀疏矩阵?您的阵列已满93%!当然,稀疏矩阵乘法要比密集矩阵的密集数组乘法慢。稀疏矩阵使用的数据结构比密集数组使用的简单内存块更复杂,因此需要专门为该数据结构编写的乘法算法。@WarrenWeckesser你说得对。但我认为我有不同的问题,因为即使使用10%的nnz,稀疏矩阵乘法似乎也要慢10倍。此外,我的cpu使用情况显示,稀疏矩阵乘法仅使用一个核心,而密集情况下使用多个核心。我已经用信息更新了我的问题。谢谢,注意numpy对稀疏矩阵一无所知。它们在scipy()中实现。