• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

小小的米粒

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

关于稀疏存储以及稀疏运算

数据量大了之后就会存在存储以及计算效率的问题,于是有了这个帖子

这个问题背景是由于数据量越来越大,如果直接计算,内存不够,所以想稀疏矩阵每一列分别计算,这样就会存在空间足够但是时间太慢的问题,于是想到了使用并行计算。

问题可以抽象成两个子问题:
1.稀疏矩阵每一列执行相同的操作是否可行,类似于R里面的apply
2.稀疏矩阵的乘法怎么提高效率的问题

针对第一个问题,调研了一下scanpy里面稀疏矩阵的存储格式,发现非常的复杂,同时没有找到类似的函数。于是采用multiprocessing函数每次传入一个列的索引。
针对第二个问题,调研了一下稀疏矩阵的乘法,后来发现了@这个运算符号,效果还可以,暂时这么解决了,这个链接提供了更多的解决方案。

在函数封装的时候遇到了新的问题,就是并行不能函数嵌套,搜索之后找到了答案,两个方案都尝试了,效果都不如不封装之前的,这部分有空后续再来改进吧

后续继续学习资料:

  1. https://www.cxymm.net/article/lishu14/84963979

参考资料

  1. https://developpaper.com/instructions-for-using-python-scipy-sparse-matrix/
  2. 常见的稀疏矩阵运算函数 https://docs.scipy.org/doc/scipy/reference/sparse.html
  3. https://developpaper.com/instructions-for-using-python-scipy-sparse-matrix/
  4. https://ericmjl.github.io/blog/2016/7/24/sparse-matrix-multiplication-in-python-3/
  5. https://stackoverflow.com/questions/72766345/attributeerror-cant-pickle-local-object-in-multiprocessing

posted on 2022-08-29 11:24  小小的米粒  阅读(144)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3