当前位置: 首页 > news >正文

稀疏矩阵的存储与计算 gaxpy

1, gaxpy 数学公式

\mathbf{y = y+Ax}
 

其中:     \mathbf{A} \in \mathbf{R}^{m \times n}  ,\mathbf{y} \in \mathbf{R}^m\mathbf{x}\in \mathbf{R}^n


2, 具体实例

\mathbf{A}= \left[ \begin{array}{ccccc} 1&0&0&2&0\\ 0&0&3&0&1\\ 0&0&2&0&0\\ 7&0&0&5&0\\ 0&9&0&0&2\\ 0&0&1&0&8\\ \end{array} \right]

         \mathbf{x}= \left[ \begin{array}{ccccc} 1&0&3&0&7\\ \end{array} \right]

\mathbf{y}= \left[ \begin{array}{c} 0\\ 3\\ 0\\ 2\\ 0\\ 1\\ \end{array} \right]    

3,用稠密矩阵的方法

本节将用于验证第4节中的稀疏计算的结果

hello_gaxpy_dense.cpp

#include <stdio.h>
#include <stdlib.h>struct Matrix_SP
{float* val;   // 矩阵中非零元素,按列收集在一起;int* c;         // 某列非零元素开始的index in val[...];int* r;          // val中每个元素的行号;int M;int N;
};void gen_sparse_matrix(int m, int n, float* A, int lda)
{//step1, randomfor(int i=0; i<m; i++){for(int j=0; j<n; j++){if((1.0*rand())/RAND_MAX < 0.6f)A[i + j*lda] = 0.0f;elseA[i + j*lda] = (1.0*rand())/RAND_MAX;}}
}void print_matrix(int m, int n, float* A, int lda)
{for(int i=0; i<m; i++){for(int j=0; j<n; j++){printf(" %7.4f", A[i + j*lda]);}printf("\n");}
}void gemm_cc(int M, int N, int K, float alpha, float*A, int lda, float* B, int ldb, float beta, float* C, int ldc)
{for(int i=0; i<M; i++){for(int j=0; j<N; j++){float sigma = 0.0f;for(int k=0; k<K; k++){sigma += A[i + k*lda]*B[k + j*ldb];}C[i + j*ldc] = alpha*sigma + beta*C[i + j*ldc];}}
}int main()
{int m = 6;int n = 5;int lda = m;// y and x are column vector;//y(6) = y(6) + A(6,5) * x(5)^t;float* y = NULL;float* x = NULL;float* A = NULL;A = (float*)malloc(lda*n*sizeof(float));y = (float*)malloc(m*sizeof(float));x = (float*)malloc(n*sizeof(float));//step 0, gen dense matrix;gen_sparse_matrix(m, n, A, lda);print_matrix(m, n, A, lda);//step 1, make dense matrix sparse;//step 2, gen y;//step 3, gen x;//step 4, dense gaxpy// 4.1 tmp = Ax;//4.2 y = y + tmp;//step 5, sparse gaxpy// 5.1 tmp = Ax// 5.2 y = y + tmp;free(A);free(y);free(x);return 0;
}

Makefile


all: g.outg.out: hello_dense_sparse_gaxpy.cppg++ -g $< -o $@.PHONY: clean
clean:-rm -rf g.out

4,用稀疏矩阵的方法

存储A

4.1 压缩列表示法

struct Matrix_SP
{float* val;   // 矩阵中非零元素,按列收集在一起;int* c;         // 某列非零元素开始的index in val[...];int* r;          // val中每个元素的行号;int M;int N;
};

struct Matrix_SP 用于存储一个稀疏矩阵;

现在来用它存储 第2节 中的A矩阵;

4.2 稀疏 gemv 计算

相关文章:

稀疏矩阵的存储与计算 gaxpy

1, gaxpy 数学公式 其中&#xff1a; &#xff0c; &#xff0c; 2, 具体实例 3&#xff0c;用稠密矩阵的方法 本节将用于验证第4节中的稀疏计算的结果 hello_gaxpy_dense.cpp #include <stdio.h> #include <stdlib.h>struct Matrix_SP {float* val; //…...

基于LabVIEW的USRP信道测量开发

随着无线通信技术的不断发展&#xff0c;基于软件无线电的设备&#xff08;如USRP&#xff09;在信道测量、无线通信测试等领域扮演着重要角色。通过LabVIEW与USRP的结合&#xff0c;开发者可以实现信号生成、接收及信道估计等功能。尽管LabVIEW提供了丰富的信号处理工具和图形…...

基于LSTM长短期记忆神经网络的多分类预测【MATLAB】

在深度学习中&#xff0c;长短期记忆网络&#xff08;LSTM, Long Short-Term Memory&#xff09;是一种强大的循环神经网络&#xff08;RNN&#xff09;变体&#xff0c;专门为解决序列数据中的长距离依赖问题而设计。LSTM因其强大的记忆能力&#xff0c;广泛应用于自然语言处理…...

物联网:全面概述、架构、应用、仿真工具、挑战和未来方向

中文论文标题&#xff1a;物联网&#xff1a;全面概述、架构、应用、仿真工具、挑战和未来方向 英文论文标题&#xff1a;Internet of Things: a comprehensive overview, architectures, applications, simulation tools, challenges and future directions 作者信息&#x…...

volatility2工具的使用vol2工具篇

vol2工具 命令格式&#xff1a;vol.py -f [image] --profile[profile] [plugin] 1、查看系统的操作版本&#xff0c;系统镜像信息 2.查看用户名密码信息&#xff0c;当前操作系统中的password hash&#xff0c;例如SAM文件内容 3.从注册表提取LSA密钥信息&#xff08;已解密&…...

R 基础运算

R 基础运算 R 是一种广泛使用的统计编程语言&#xff0c;它提供了强大的数据操作和分析功能。基础运算在 R 中非常重要&#xff0c;因为它们是进行更复杂计算和数据分析的基础。本文将详细介绍 R 中的基础运算&#xff0c;包括算术运算、逻辑运算、向量化和矩阵运算。 一、算…...

javaScriptBOM

1.1、BOM概述 1.1.1、BOM简介 BOM&#xff08;browser Object&#xff09;即浏览器对象模型&#xff0c;它提供了独立于内容而与浏览器窗口进行交互的对象&#xff0c;其核心对象是window。 BOM由一系列的对象构成&#xff0c;并且每个对象都提供了很多方法与属性 BOM缺乏标准…...

Godot RPG 游戏开发指南

Godot RPG 游戏开发指南 一、基础准备 1. 开发环境 下载并安装最新版 Godot 4.x选择使用 GDScript 或 C# 作为开发语言准备基础美术资源&#xff08;角色、地图、道具等&#xff09; 2. 项目结构 project/ ├── scenes/ # 场景文件 ├── scripts/ # 脚…...

目标检测数据集图片及标签同步旋转角度

前言 在深度学习领域&#xff0c;尤其是目标检测任务中&#xff0c;数据集的质量直接影响模型的性能。为了提升模型的鲁棒性和对各种场景的适应能力&#xff0c;数据增强技术被广泛应用于图像数据集处理。旋转角度是常见的数据增强方法&#xff0c;通过对图像及其对应的标签&am…...

2025前端面试热门题目——计算机网络篇

计算机网络篇——面试 1. 到底什么是 TCP 连接? TCP 连接的定义 TCP&#xff08;传输控制协议&#xff09;是一个面向连接的传输层协议。TCP 连接是通过 三次握手 确立的可靠数据通信链路&#xff0c;保证了在不可靠网络&#xff08;如互联网&#xff09;上的数据传输的准确…...

LEAST-TO-MOST PROMPTING ENABLES COMPLEX REASONING IN LARGE LANGUAGE MODELS---正文

题目 最少到最多的提示使大型语言模型能够进行复杂的推理 论文地址&#xff1a;https://arxiv.org/abs/2205.10625 摘要 思路链提示在各种自然语言推理任务中表现出色。然而&#xff0c;它在需要解决比提示中显示的示例更难的问题的任务上表现不佳。为了克服这种由易到难的概括…...

Java开发经验——日志治理经验

摘要 本文主要介绍了Java开发中的日志治理经验&#xff0c;包括系统异常日志、接口摘要日志、详细日志和业务摘要日志的定义和目的&#xff0c;以及错误码规范和异常处理规范。强调了日志治理的重要性和如何通过规范化错误码和日志格式来提高系统可观测性和问题排查效率。 1. …...

使用复数类在C#中轻松绘制曼德布洛集分形

示例在 C# 中绘制曼德布洛特集分形解释了如何通过迭代以下方程来绘制曼德布洛特集&#xff1a; 其中 Z(n) 和 C 是复数。程序迭代此方程&#xff0c;直到 Z(n) 的大小至少为 2 或程序执行最大迭代次数。 该示例在单独的变量中跟踪数字的实部和虚部。此示例使用Complex类来更轻松…...

VSCode 启用免费 Copilot

升级VSCode到 1.96版本&#xff0c;就可以使用每个月2000次免费额度了&#xff0c;按照工作日每天近80次免费额度&#xff0c;满足基本需求。前两天一直比较繁忙&#xff0c;今天周六有时间正好体验一下。 引导插件安装GitHub Copilot - Visual Studio Marketplace Extension f…...

常见问题整理

DevOps 和 CICD DevOps 全称Development & Operation 一种实现开发和运维一体化的协同模式&#xff0c;提供快速交付应用和服务的能力 用于协作&#xff1a;开发&#xff0c;部署&#xff0c;质量测试 整体生命周期工作内容&#xff0c;最终实现持续继承&#xff0c;持续部…...

使用Vue创建前后端分离项目的过程(前端部分)

前端使用Vue.js作为前端开发框架&#xff0c;使用Vue CLI3脚手架搭建项目&#xff0c;使用axios作为HTTP库与后端API交互&#xff0c;使用Vue-router实现前端路由的定义、跳转以及参数的传递等&#xff0c;使用vuex进行数据状态管理&#xff0c;后端使用Node.jsexpress&#xf…...

【Springboot知识】Redis基础-springboot集成redis相关配置

文章目录 1. 添加依赖2. 配置Redis连接3. 配置RedisTemplate&#xff08;可选&#xff09;4. 使用RedisTemplate或StringRedisTemplate5. 测试和验证 集群配置在application.properties中配置在application.yml中配置 主从配置1. 配置Redis服务器使用配置文件使用命令行 2. 配置…...

网络安全概论——身份认证

一、身份证明 身份证明可分为以下两大类 身份验证——“你是否是你所声称的你&#xff1f;”身份识别——“我是否知道你是谁&#xff1f;” 身份证明系统设计的三要素&#xff1a; 安全设备的系统强度用户的可接受性系统的成本 实现身份证明的基本途径 所知&#xff1a;个…...

OpenHarmony-4.HDI 框架

HDI 框架 1.HDI介绍 HDI&#xff08;Hardware Device Interface&#xff0c;硬件设备接口&#xff09;是HDF驱动框架为开发者提供的硬件规范化描述性接口&#xff0c;位于基础系统服务层和设备驱动层之间&#xff0c;是连通驱动程序和系统服务进行数据流通的桥梁&#xff0c;是…...

leecode494.目标和

这道题目第一眼感觉就不像是动态规划&#xff0c;可以看出来是回溯问题&#xff0c;但是暴力回溯超时&#xff0c;想要用动态规划得进行一点数学转换 class Solution { public:int findTargetSumWays(vector<int>& nums, int target) {int nnums.size(),bagWeight0,s…...

开源协作团队实践:从零构建高效技术团队的“团队即代码”方法论

1. 项目概述&#xff1a;一个开源协作团队的诞生与运作最近在GitHub上看到一个挺有意思的项目&#xff0c;叫jefferyjob/openclaw-it-team。光看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;它不像一个具体的软件工具或框架&#xff0c;更像是一个团队或组织的代号。没…...

干掉 IDEA!Cursor3 发布,VSCode 那套 IDE 过时了!

Cursor 3 用智能体管理控制台取代了传统代码编辑器&#xff0c;标志着 AI 辅助开发工具与开发者工作流程均已发生重大转变。作为同类产品中营收增长最快的 AI 代码编辑器&#xff0c;Cursor 发布了首款非代码编辑器产品。Cursor 3&#xff08;代号 Glass&#xff09;从零开始构…...

2026届毕业生推荐的六大降重复率网站实际效果

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 对于学子以及科研人员广泛面临的稿件查重压力而言&#xff0c;合规且专业的降重网站能够给予…...

【独家首发】Claude 3 Opus内存占用暴增模型:通过profiling火焰图定位其KV Cache膨胀根源并实现3.7倍推理加速

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Claude 3 Opus性能评测全景概览 Claude 3 Opus 是 Anthropic 推出的旗舰级大语言模型&#xff0c;在复杂推理、长上下文理解与多步任务执行方面展现出显著突破。其官方宣称支持高达 200K tokens 的上下…...

32G显存消费级显卡也能搞定!LoRA+VLLM生产级部署,AI专属模型全流程实战教程

本文详细介绍了如何使用LoRA微调和vLLM推理部署&#xff0c;在32G消费级显卡上完成AI模型从训练到上线的全流程。内容涵盖完整代码、逐行解释以及生产级部署方案&#xff0c;包括数据预处理、模型加载、LoRA配置、训练参数设置、模型合并和vLLM部署等关键步骤。通过显存优化策略…...

云计算能效评估:从PUE到xPUE的进阶实践

1. 云计算能效评估的困境与突破 在数据中心运营成本中&#xff0c;电力消耗常年占据40%以上的比重。传统PUE&#xff08;Power Usage Effectiveness&#xff09;作为行业通用指标&#xff0c;其计算逻辑看似简单——用数据中心总能耗除以IT设备能耗&#xff0c;却隐藏着巨大的认…...

5分钟搞定网页视频下载:VideoDownloadHelper免费插件终极指南

5分钟搞定网页视频下载&#xff1a;VideoDownloadHelper免费插件终极指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否经常遇到这样…...

3PEAK思瑞浦 TPA1831-SO1R SOP8 运算放大器

特性 供电电压:4伏至30伏 低功耗:典型值在25C时为140A 低失调电压:在25C时最大士7V .零漂:0.01V/C 轨到轨输出 增益带宽积:1.1MHz 斜率:0.7V/us...

如何从安卓手机 / 平板打印文件?3 种简单方法

随着安卓技术的发展&#xff0c;智能手机能实现诸多功能&#xff0c;但直接打印是设备本身暂不支持的操作&#xff0c;这是因为安卓系统没有原生打印功能。那么该如何用安卓手机打印&#xff1f;本文整理 3 种高效简单的方法供你参考。方法 1&#xff1a;使用 iReaShare Androi…...

012、三相电压与电流的测量方法

012、三相电压与电流的测量方法 上个月调试一台75kW永磁同步电机驱动器,现场报过流故障,示波器抓出来的电流波形像被狗啃过一样。折腾三天,最后发现是电流采样电阻的共模电压没处理好,ADC读数在零点附近来回跳。这种问题在实验室里根本复现不了,一上大功率就现原形。今天…...