c++ - Eigen 中的稀疏矩阵乘法速度
问题描述
我在 Eigen 中使用稀疏矩阵,并观察到以下行为:
我有以下带有列主要存储的稀疏矩阵
A [1,766,548 x 3,079,008]
具有105,808,194
非零元素和B [3,079,008 x 1,766,548]
具有9,476,108
非零元素
当我计算点积AxB
时几乎需要 8 秒。
当我想计算transpose(Β) x transpose(A)
时,计算成本似乎增加了很多。事实上,这运行了大约 2,500 秒。
请注意,我从文件中加载转置的表,而不是使用 Eigen 转置它们。
我没想到这两种方法具有完全相同的计算成本,但我并不真正理解执行时间的这种差异,因为在这两种方法中,这两个矩阵具有完全相同数量的非零元素。
我正在使用 g++ 7.4 和 Eigen 3.3.7
解决方案
推荐阅读
- javascript - 引导手风琴上的加号和减号图标
- c# - 使用 .NET Framework 3.0 的 NamedPipeClientStream 不起作用
- c# - MVC:在使用 AAD 身份验证时添加和编辑身份声明角色名称
- reactjs - 开玩笑的浅渲染按类查找,不包括
- java - if 语句应该返回“IllegalArgumentException”,但它返回一个空字符串
- r - 用特定日期替换多个值
- javascript - html 文本区域显示设置的跨度值
- postgresql - 在 hikari maxLifetime 之后,数据库池中的 Postgres 连接变为零?
- java - 如何在itext 5中将部分代码添加到pdf
- typescript - Typescript 在 vscode 中给出的错误与通过 webpack 给出的错误不同