小编ali*_*i_p的帖子

Scipy稀疏矩阵 - 密集向量乘法性能 - 块与大矩阵

我有一些scipy稀疏矩阵(目前采用CSR格式),我需要与密集的numpy 1D向量相乘.该向量称为G:

print G.shape, G.dtype
(2097152,) complex64
Run Code Online (Sandbox Code Playgroud)

每个稀疏矩阵都有形状(16384,2097152)并且非常稀疏.密度约为4.0e-6.我有一个名为100的这些稀疏矩阵的列表spmats.

我可以很容易地将每个矩阵相乘G:

res = [spmat.dot(G) for spmat in spmats]
Run Code Online (Sandbox Code Playgroud)

这导致(16384,)如预期的形状的密集矢量列表.

我的应用程序是相当性能的,因此我尝试了替代方法,即首先将所有稀疏矩阵连接成一个大的sparce矩阵,然后只使用一次这样的调用dot():

import scipy.sparse as sp
SPMAT = sp.vstack(spmats, format='csr')
RES = SPMAT.dot(G)
Run Code Online (Sandbox Code Playgroud)

这导致一个长矢量RES具有形状(1638400,),并且是res上述所有结果矢量的连接形式,如预期的那样.我检查过结果是一样的.

也许我完全错了,但我预计第二种情况应该比第一种情况要快,因为numpy调用,内存分配,python对象的创建,python循环等等都少得多.我不关心时间需要连接稀疏矩阵,只需要计算结果的时间.%timeit然而,根据:

%timeit res = [spmat.dot(G) for spmat in spmats]
10 loops, best of 3: 91.5 ms per loop
%timeit RES = SPMAT.dot(G)
1 loops, best of 3: 389 ms per …
Run Code Online (Sandbox Code Playgroud)

python performance numpy scipy sparse-matrix

7
推荐指数
1
解决办法
2660
查看次数

调试 htop 中的红色 CPU 使用率 - 无法解释的随机 3-4 倍减速

我有一个大型 python 程序,使用 pyCUDA 和 numpy 进行一些繁重的数值运算。

它通常非常快,但似乎偶尔会随机地减慢 3-4 倍,没有明显的原因。
用 htop 观察 CPU 使用情况表明,每当速度减慢时,CPU 条就会变成红色,据我所知,这意味着“内核线程”。

在此输入图像描述

但这到底意味着什么呢?我怎样才能找出是什么原因造成的?这种情况有时会在 GPU 执行任务时发生,有时会在 CPU 执行任务时发生。程序(运行几个小时)慢一个小时,自行恢复,快一个小时,然后问题再次出现。

有任何想法吗?您需要更多信息吗?

python numpy htop

5
推荐指数
0
解决办法
1452
查看次数

标签 统计

numpy ×2

python ×2

htop ×1

performance ×1

scipy ×1

sparse-matrix ×1