【发布时间】:2017-10-24 12:14:06
【问题描述】:
我正在使用犰狳来解决一些线性代数问题。 SpMat<float> 用于稀疏矩阵,Mat<float> 用于稠密矩阵。
假设我有稀疏矩阵S_a 和S_b,以及密集矩阵D。我需要计算产生S_a*S_b 和S_a*D,这两种情况下的结果都会很密集。
我可以将稀疏矩阵转换为密集矩阵,然后进行乘法运算,但这会效率低下(这些矩阵非常大)。有没有办法告诉犰狳将结果存储到密集矩阵中而不执行中间转换步骤?
【问题讨论】:
-
第一种情况,为什么不简单地将稀疏矩阵乘法的结果转换为密集矩阵呢?示例:
sp_fmat A = S_a*S_b; fmat B(A);在第二种情况下,sparse*dense 的结果已经是稠密的。示例:fmat C = S_a*D; -
@mtall 因为这是一个额外的不必要开销的步骤。这些矩阵的大小约为 100,000,因此很重要。