编辑:请参阅this question,在那里我学习了如何使用Numba在Python中并行化稀疏矩阵向量乘法,并能够与Matlab打交道。在
原题:
我发现在Matlab中稀疏矩阵向量乘法比Python(使用scipy稀疏矩阵)快4到5倍。以下是来自Matlab命令行的一些详细信息:>> whos A
Name Size Bytes Class Attributes
A 47166x113954 610732376 double sparse
>> whos ATrans
Name Size Bytes Class Attributes
ATrans 113954x47166 610198072 double sparse
>> nnz(A)/numel(A)
ans =
0.0071
>> whos x
Name Size Bytes Class Attributes
x 113954x1 911632 double
>> myFun = @() A*x; timeit(myFun)
ans =
0.0601
>> myFun = @() ATrans'*x; timeit(myFun)
ans =
0.0120
矩阵ATrans是A的转置,请注意,在Matlab中计算A乘以x大约需要0.06秒,但是如果我使用奇怪的“转置技巧”计算ATrans的x倍(这与A乘以x的结果相同),则计算需要0.012秒。(我不明白为什么这个把戏有用。)
以下是Python命令行的一些计