Compressed Sparse Row (CSR)行压缩存储相关错误概念纠正

2024-06-13 00:08

本文主要是介绍Compressed Sparse Row (CSR)行压缩存储相关错误概念纠正,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前关于矩阵压缩存储的知识都是网上看的,比如这篇

稀疏矩阵存储格式总结+存储效率对比:COO,CSR,DIA,ELL,HYB

里面对ia数组,即行偏移数组的表述是这样的。强调了ia数组中存的是某行的第一个元素的偏移。

今天测试一个国外数学教授开源的AGMG库时才发现如果按之前的理解,还原后的矩阵将和理论上的无法统一。

翻看维基发现,CSR的ia定义并没有说其存储的是第一个元素的偏移信息。ia只是存储了非零行的start索引,这里的start与该行第一个非零元在ja和a中的索引没有关系,其实只是表示了该行中的非零元对应的col值和val值分布在ja[row_start]~ja[row_end],a[row_start]~a[row_end]之间。也就是说,该行中的非零元对应的col和val在ja和a中的顺序可以是随意的,不是必须从左到右,即对应col值从小到大。

以第一幅图的矩阵为例

1700
0280
5039
0604

按之前片面的理解,ia,ja,a只能固定格式如下,(用0做基)

ia: 0 2 4 7 9

ja: 0 1 1 2 0 2 3 1 3

a:  1 7 2 8 5 3 9 6 4

其实还可以这么写

ia: 0 2 4 7 9

ja: 1 0 2 1 3 2 0 3 1

a:  7 1 8 2 9 3 5 4 6

虽然ia一样,但每行的非零元们在ja和a中属于该行的slice中的索引排序不分先后。

之所以出现之前的片面理解是因为我们习惯了矩阵的Z字形读法,都按第一种来了。

这篇关于Compressed Sparse Row (CSR)行压缩存储相关错误概念纠正的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1055734

相关文章

SpringBoot3.X 整合 MinIO 存储原生方案

《SpringBoot3.X整合MinIO存储原生方案》本文详细介绍了SpringBoot3.X整合MinIO的原生方案,从环境搭建到核心功能实现,涵盖了文件上传、下载、删除等常用操作,并补充了... 目录SpringBoot3.X整合MinIO存储原生方案:从环境搭建到实战开发一、前言:为什么选择MinI

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.