矩阵系列:矩阵乘法

2023-10-26

上一篇说到一个基本的小知识点浮点到定点的转换,这一篇来说说矩阵乘法。矩阵乘法和下一篇要说的矩阵LU分解是矩阵求逆的重要组成部分,所以就算大家不需要做矩阵求逆,对其先有个整体的认识也是好的。(矩阵求逆的整体框图还是很好理解的 ,甚至你只要瞟一眼图就好)。

1矩阵求逆的整体框图

在这里插入图片描述

矩阵求逆的步骤如下:

1.原始矩阵A通过LU分解为上三角矩阵L与单位下三角矩阵U。

2.分别通过三角矩阵的求逆运算得到L逆和U逆。

3.最后通过矩阵乘法得到A逆。

显而易见,矩阵求逆由如下三个部分组成:

1.LU矩阵分解

2.三角矩阵求逆

3.矩阵乘法

2脉动阵列介绍
做矩阵运算,脉动阵列绝对是个神器,笔者大部分的时间是花在脉动阵列上面的,脉动阵列主要完成算法到结构的映射,而这种结构的设计往往是最难的,值得一提的是,大部分矩阵运算的脉动阵列都已经被设计出,有的甚至不止一种结构。下面简单介绍脉动阵列,如果感兴趣的可以深入研究。

脉动阵列:多个相同的处理单元(PE),按照一定的规则组成的网络,成为脉动阵列。脉动阵列可以是一维线性、二维三角形、二维矩形、二维六边形等等。

特点:

1.每一个节点,即PE,都是相同的,(个别也可以不同)。
2.每个PE只与其邻近的PE进行通信,也就是说PE之间的通信具有局部性,而且通信是规则的。这点非常重要!!!
3.每个PE都有其局部的储存器,也就是PE的某些边带有延时,延时在硬件上对应于寄存器。

由于以上特点,造成PE之间的高度流水化、规则化,因此系统吞吐率非常大且易于VLSI的实现。

3矩阵乘法模块
3.1矩阵乘法的数学表达式
在这里插入图片描述

从公式上可以看出,计算后的矩阵的每个单元(i,j)是矩阵A的第i行矩阵与矩阵B的第j列对应元素的乘积和。

可以看出,矩阵乘法的计算规则化,数据间的通讯具有局部化的特点,因此很适合用脉动阵列来实现。

3.2乘法脉动阵列的设计
根据算法的特点,设计二维方形的脉动阵列,如下图所示:从上到下,从左到右分别流经矩阵A、B的数据。处理单元PE则保存结果矩阵C,处理单元以矩阵C(i,j)命名,初始值均为0。设计好的脉动这列图与以及每个时刻详细的步骤如下:

乘法脉动阵列图

乘法脉动阵列图

注:*号代表延时一拍

下面给出计算数据流向与结果的示意图

1.时刻1

在这里插入图片描述

数据a11、b11进入PE单元,计算并更新PE,将数据保存在PE中。

2.时刻2

在这里插入图片描述

数据a11继续向右流入C12,与向下流入的b22做运算将结果更新保存在C12。数据a21流入处理单元C21,b11继续向下流动,与a21做同样的运算并更新保存C21。而此时C11保存的是a11b11+a12b21的结果。

依次向下向右流动,经过3*n-2个时钟周期得到结果矩阵C,相比串行执行的时间复杂度(n^3),阶数越多,时间缩短的越多。值得说明的是,该阵列中所有处理单元所完成的功能相同,均为乘加运算。

3.3模块的测试
测试模块包括:矩阵生成模块,定点转浮点模块,矩阵乘积模块(核心模块),浮点转定点。通过matlab仿真与modelsim的结果对比,验证其正确性。

上一篇《矩阵系列:浮点转定点
下一篇《矩阵系列:LU分解

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

矩阵系列:矩阵乘法 的相关文章

  • zynq之petalinux安装和编译

    首先下载petalinux v2015 4 final installer dec run 去xilinx官网或者我的网盘下载http pan baidu com s 1gf11UGr mkdir opt pkg petalinux v20
  • cdc多bit信号-握手处理

    对于多bit数据跨时钟 各个bit之间路径延迟不一样 源时钟域给的数据是2 b11 目的时钟域采样到的数据可能2 b10 因此两级触发器对于单bit数据跨时钟是可以用的 但是对于多bit数据跨时钟就会出错 握手处理的关键是利用源的时钟req
  • Xilinx ISE系列教程(9):LabTools下载、安装、使用教程(独立的下载工具)

    文章目录 1 ISE Vivado LabTools简介 2 ISE 14 7 Lab Tools下载 安装 3 Vivado 2018 3 LabTools下载 安装 1 ISE Vivado LabTools简介 Xilinx LabT
  • FPGA同步复位和异步复位的区别以及设计处理

    FPGA复位信号的设计处理 同步复位 同步复位 同步复位信号跟触发器的时钟是同步的 只有在时钟的跳变沿到来之后才会生效 对应verilog代码如下 这种写法会被编译器综合成同步复位 always posedge clk begin if r
  • 硬件设计---了解电源篇

    1 概述 在高速电路设计中一块单板上常存在多种电源 3 3V 1 8V 1 2V 1 0V 0 9V 0 75V等 有时光是对FPGA供电就需要五六种电源 为了便于使用往往用户只需要提供一种或几种电源 然后经过板上电源模块转换到各个目标电源
  • 2022芯原芯片设计 笔试题分析和讨论

    2022芯原设计笔试题分析和讨论 以下仅为个人理解和分析 不保证正确 欢迎大家发表自己的想法 讨论出正确答案 企业知识题 1 1 D 芯原的主要经营模式为芯片设计平台即服务 Silicon Platform as a Service SiP
  • 最详细的Vivado安装教程

    V i v a d o 安 装
  • FPGA实战--等精度频率测量

    首先放置效果图 本次试验中采用的是等精度测频率 等精度测频的原理是产生一个1s的高电平 在高电平中对被测方波进行计数 所测得数字即该波形频率 具体等精度测量原理请参考 http www elecfans com d 591858 html
  • 【Xilinx DDR3 MIG】Xilinx FPGA DDR3读写实验相关用户接口引脚解释

    目录 DDR3读写实验 实验框图 时钟模块 DDR3读写及LED指示模块 MIG IP核 用户接口解释
  • 从零开始zynq linux AXI DMA传输

    本文从0开始叙述过程 使用的工具为vivado2016 4 sdk也是2016 4 准备工作 首先下载如下的目标文件 1 下载xilinx官方的bootloader文件 git clone https github com Xilinx u
  • FPGA实现VGA显示图片

    利用FPGA在带有VGA接口的液晶显示器上显示图片 电路原理图 端口说明 VGA R2 VGAB0的8个端口位VGA的RGB数据位 VGA HS为行同步信号 VGA VS为场同步信号 以分辨率为640x480为例 刷新速率为60Hz 每幅图
  • 64 位 ALU 输出在 TestBench 波上显示高阻抗

    我必须制作一个 64 位 ALU 它接受 A 和 B 64 位输入 进位输入输入并输出 64 位结果以及 1 位进位输出 还有一个 5 位功能选择 FS 其中 FS 0 控制 B 是否反转 使用 2to1 多路复用器 F 1 对 A 执行相
  • Verilog、FPGA、统一寄存器的使用

    我有一个问题 关于我正在开发的 AGC SPI 控制器在我看来奇怪的行为 它是用 Verilog 完成的 针对的是 Xilinx Spartan 3e FPGA 该控制器是一个依赖外部输入来启动的 FSM FSM的状态存储在状态寄存器它没有
  • 同时读取和写入寄存器

    我计划在 FPGA 上用 VHDL 设计一个类似 MIPS 的 CPU CPU 将具有经典的五级管道 没有转发和危险预防 在计算机体系结构课程中 我了解到第一个 MIPS CPU 用于在时钟上升沿读取寄存器文件并在时钟下降沿写入 我使用的F
  • 使用双寄存器方法解决亚稳态问题

    为了解决Verilog中不同时钟域引起的亚稳态 采用双寄存器方法 但据我所知 亚稳态的最终输出尚未确定 输出独立于输入 那么 我的问题是如何保证使用双寄存器方法输出的正确性 Thanks 您不能完全确定您避免了亚稳态 正如您所提到的 亚稳态
  • 如何在Altera Quartus中生成.rbf文件?

    什么是 rbf 文件以及如何在 Windows 上从 Quartus 输出文件 sof 生成它们 An RBF is a 原始二进制文件例如 它代表原始数据 这些数据将被加载到闪存中 以便在上电时初始化 FPGA A SOF is an S
  • 赋值语句中的“others=>'0'”是什么意思?

    cmd register process rst n clk begin if rst n 0 then cmd r lt others gt 0 elsif clk event and clk 1 then cmd r lt end if
  • 在 Verilog 程序中使用连续分配?

    在 Verilog 程序中使用连续赋值是否可能和 或有用 例如 是否有任何理由将assign里面一个always堵塞 例如这段代码 always begin assign data in Data end 此外 是否可以用这种方法生成顺序逻
  • 学习 Verilog 的资源 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 Verilog 新手 有人可以推荐学习资源 书籍 视频 博客或任何他们有良好个人经验并帮助他们更
  • 可以购买哪些 FPGA(现场可编程门阵列)在家中进行实验? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 什么是 FPGA 在哪里可以买到 它们要花多少钱 您需要什么样的系统来试验它们 如何对它们进行编程 如果这是正确的术语 您能否使用普通 M

随机推荐

  • MongoDB文档数据库

    一 引言 MongoDB 是一个开源的文档数据库 并是领先的NoSQL数据库 MongoDB 是由C 语言编写 通过本系列教程的讲解 使得学习者可以了解并掌握创建和部署高度可扩展和高性能的面向对象数据库MongoDB概念和理解 该系列教程是
  • 使用MATLAB做传热学分析及后处理——CFDTool 官方例程

    目录 前言 1 环境配置 2 问题背景 3 传热学例程 heat transfer3 最后 中国加油 武汉加油 前言 cfdtool 官网 https www cfdtool com 是一个MATLAB的扩展工具箱 既然看到这个CFD问题了
  • 消消乐游戏算法实现(三消乐)

    先上前端效果图 3消乐地图初始化的时候不允许有下面两种情况的发生 就是不允许3个 3个以上已经包含3个 所以只要判断3个就可以了 相同颜色的格子连在一起 下图是两种情况 细分分为6种情况 就是初始点为3个格子中的一个为一种情况 所以细分2
  • 多线程(五)线程的不安全原因及解决方案

    目录 一 什么是线程安全 二 线程不安全的原因 1 修改共享数据 2 原子性 3 内存可见性 4 指令重排序 三 解决线程安全方案 volatile 解决内存可见性和指令重排序 通过synchronized锁实现原子性操作 一 什么是线程安
  • SyntaxError: can‘t delete function call

    复习之前的python课件 抄代码的时候发现了一个问题 然后上网查 发现跟自己的情况好像不太符合 然后又看了一眼老师的课件 发现原来是自己无用了小括号的原因 因为那个counts是字典 它提取元素用的是方括号 不是小括号 改了之后就可以运行
  • 指针和数组笔试题解析【上篇】

    文章目录 1 前言 2 整型数组与指针 3 字符数组与指针 3 1 代码段 1 3 2 代码段 2 4 字符指针变量与数组 5 二维数组与指针 1 前言 数组 能够存放一组相同类型的元素 数组的大小取决于数组的元素个数和元素类型 指针 地址
  • linux安装enca

    简介 enca是Linux下的文件编码转换工具 1 查看是否安装enca 在命令行输入如下命令 若显示enca安装版本则表示已安装 enca version 2 安装enca 1 1 安装方式二 sudo命令安装 sudo apt get
  • Git极简入门

    Git极简入门 1 本地仓库 1 1工作流程 git本地操作的三个区域 Git Repository Git仓库 最终确定的文件保存到仓库 成为一个新的版本 并且对他人可见 暂存区 暂存已经修改的文件最后统一提交到git仓库中 工作区 Wo
  • Linux安装配置NFS服务器

    目录 NFS简介 安装NFS服务 网络环境配置 开发板挂载NFS 常见问题 NFS简介 NFS network file system 即网络文件系统 能使使用者访问网络上别处的文件就像在使用自己的计算机一样 我们可以在 Ubuntu 上制
  • 微信小程序报错“getLocation:fail the api need to be declared in the requiredPrivateInfos field in app.js...“

    解决微信小程序获取定位报错 上个礼拜在调试一个微信小程序的时候 在手机允许小程序获取定位 定位授权成功的情况下 发现安卓手机能获取定位 但是苹果手机获取不到定位 我就开始查阅资料 一 报错信息 报错信息是errMsg getLocation
  • 在外包做了3年测试,离职后却成功入职字节跳动.....

    最近换了份工作 当时和群里的朋友也聊过换工作的话题 他们都觉得这是一次非常冒险的行为 说我这是一次豪赌 成了会有更好的职业发展 没成可能就会出现两三年的发展断层 甚至影响职业生涯路径 一步错 步步错 我当时也仔细的考虑过了 的确有很大的风险
  • JAVA基础知识之文件读取详细解读

    欢迎访问个人博客 德鲁大叔撸代码 我们要把一个文件从外部读入程序中 大致的步骤如下 第一步 获取需要被读取的文件 第二步 构造一个字节输入流 用来读取文件 第三步 为了提高读写速度 需要把字节流转换成一个字符输入流 第四步 写文件 所以我们
  • python英文文本情感分析_sentimentpy模块进行中文文本情感分类

    sentimentpy是我根据R语言的一个文本情感分析包sentiment进行开发的 开发的初衷有 R的sentiment已经被弃坑 没人维护 Python比R更擅长文本处理 sentiment包不支持中文 而sentimentpy包有如下
  • Vite 配置 Eslint 规范代码

    在经历过比较大型的项目协同开发后 代码规范成为了团队协同开发的棘手问题 今天 准备从头整理一份从编辑器 gt 代码编写过程中的规范总结 一 代码风格统一 这里推荐使用 EditorConfig 配置 来规范不同的编辑器 不同的编辑器配置 所
  • 【OAuth漏洞】第三方身份验证-账号接管

    目录 什么是OAuth OAuth 如何用于身份验证 在 Booking com 实施 OAuth 为什么 Booking com OAuth 在 Booking com 中的工作原理 Booking com 帐户接管 安全漏洞 1 不允许
  • android 修改最近任务列表的图标以及名称

    在activity里加入 如下代码 if Build VERSION SDK INT gt 27 ActivityManager TaskDescription description new ActivityManager TaskDes
  • 【华为OD机试真题 C++】面试官人数

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • 数据结构1)数据结构的基本概念

    1 1 1 1 数据 数据是信息的载体 是描述客观事物属性的数 字符及所有能输入到计算机并被计算机程序识别和处理符号的集合 数据是计算机程序加工的原料 2 数据元素 数据元素是数据的基本单位 通常作为一个整体进行考虑和处理 一个数据元素可以
  • 特征值与特征向量的重要性质:特征值之和等于对角线元素之和,特征值之积等于行列式的值

  • 矩阵系列:矩阵乘法

    上一篇说到一个基本的小知识点浮点到定点的转换 这一篇来说说矩阵乘法 矩阵乘法和下一篇要说的矩阵LU分解是矩阵求逆的重要组成部分 所以就算大家不需要做矩阵求逆 对其先有个整体的认识也是好的 矩阵求逆的整体框图还是很好理解的 甚至你只要瞟一眼图