小编Cha*_*pal的帖子

如何并行scipy稀疏矩阵乘法

我有一个scipy.sparse.csr_matrix格式的大型稀疏矩阵X,我想用一个利用并行性的numpy数组W来乘以它.经过一些研究后,我发现我需要在多处理中使用Array,以避免在进程之间复制X和W(例如:如何在Python多处理中将Pool.map与Array(共享内存)结合起来?并将共享的只读数据复制到Python多处理的不同过程?).这是我最近的尝试

import multiprocessing 
import numpy 
import scipy.sparse 
import time 

def initProcess(data, indices, indptr, shape, Warr, Wshp):
    global XData 
    global XIndices 
    global XIntptr 
    global Xshape 

    XData = data 
    XIndices = indices 
    XIntptr = indptr 
    Xshape = shape 

    global WArray
    global WShape 

    WArray = Warr     
    WShape = Wshp 

def dot2(args):
    rowInds, i = args     

    global XData 
    global XIndices
    global XIntptr 
    global Xshape 

    data = numpy.frombuffer(XData, dtype=numpy.float)
    indices = numpy.frombuffer(XIndices, dtype=numpy.int32)
    indptr = numpy.frombuffer(XIntptr, dtype=numpy.int32)
    Xr = scipy.sparse.csr_matrix((data, indices, …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing scipy sparse-matrix

9
推荐指数
1
解决办法
4253
查看次数