首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【踩坑】稀疏矩阵的内存占用竟然比密集矩阵更高?

【踩坑】稀疏矩阵的内存占用竟然比密集矩阵更高?

作者头像
小锋学长生活大爆炸
发布2025-05-24 13:22:51
发布2025-05-24 13:22:51
2290
举报

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~

背景说明

稀疏矩阵主打的就是一个内存占用更小,但我使用中发现,稀疏矩阵并不是一直都是内存更小的,甚至可能会比密集矩阵高出好多倍。

问题分析

这是COO格式的稀疏矩阵和strided密集矩阵的内存占用计算方法:

我们假设矩阵的大小是(16384, 16384),并且在这里我们将稀疏度定义为零元素的比例。那么:

  • 密集矩阵内存为:16384 x 16384 x 4 / 1024 / 1024 = 1024 MB;
  • 对于稀疏度为0(也就是等同于密集矩阵)的COO,内存为:(2 x 8 + 4) x (16384 x 16384) / 1024 / 1024 = 5120 MB;

震惊哦,此时COO的内存竟然是密集矩阵的5倍。

我们再来看一下稀疏度为0.5时:(2 x 8 + 4) x (16384 x 16384 x 0.5) / 1024 / 1024 = 2560 MB。还是比密集矩阵高。

当稀疏度为0.8时,COO内存占用为5120 x (1 - 0.8) = 1024MB,与密集矩阵持平。

因此,当稀疏度大于0.8的时候,内存占用才开始真正低于密集矩阵。

结论总结

1、稀疏矩阵并不一定总是比密集矩阵的内存使用量更低;

2、零元素的比例越高,内存越节省;

3、COO是最基础的稀疏矩阵格式,还有其他如CSR等更优的格式可以选择;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景说明
  • 问题分析
  • 结论总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档