窥探向量乘矩阵的存内计算原理—基于向量乘矩阵的存内计算

前言

在计算机科学和数学领域,向量乘矩阵的内积计算是许多算法和模型中的核心操作之一。这一操作的高效实现对于优化算法的性能以及提高计算速度至关重要。本文将深入探讨向量乘矩阵的存内计算原理,聚焦于基于这一操作的存内计算方法。

本文的目标是解析向量乘矩阵的存内计算原理,系统性地介绍其背后的数学基础和计算机实现细节。我们将讨论不同的存内计算方法,并着重于它们在提高计算效率、减少内存占用方面的优势。通过深入研究,我们旨在为读者提供对这一核心计算操作的全面理解,为实际应用提供有益的指导。

一.向量乘矩阵的存内计算原理

在当今计算领域中,存内计算技术凭借其出色的向量乘矩阵操作效能引起了广泛关注。本文将深入研究基于向量乘矩阵的存内计算原理,并探讨几个引人注目的代表性工作,如DPE、ISAAC、PRIME等,它们在神经网络和图计算应用中表现出色,为我们带来了前所未有的计算体验。

生动地展示了基于向量乘矩阵的存内计算最基本单元。这一单元通过基尔霍夫定律,在仅一个读操作延迟内完整执行一次向量乘矩阵操作。演示了一个2×1的向量(V1, V2)与一个1×2的向量(G1, G2)T相乘的过程,其中ReRAM阻值以(G1, G2)T表示,电压则以(V1, V2)表示。基于基尔霍夫定律,比特线上的输出电流便是向量乘矩阵操作的结果。将这一操作扩展,将矩阵存储在ReRAM阵列中,通过比特线输出相应的结果向量。

二.向量乘矩阵的存内计算

向量乘矩阵的存内计算,指的是计算机科学和线性代数领域中的一种优化技术,其目的是通过最大限度地减少内存访问次数,提高计算效率。在讲解存内计算原理之前,我们需要了解向量和矩阵的基本概念。

  1. 向量: 向量是一个有序数组,其中的元素称为分量。在计算机科学中,向量通常表示为一维数组。

  2. 矩阵: 矩阵是一个二维数组,其中的元素称为矩阵元。矩阵的行和列分别对应于向量的元素。

向量乘矩阵的基本原理是,将一个向量的每个元素分别与矩阵的对应元素相乘,并将结果相加。例如,设有一个向量v和一个矩阵A:

则向量乘矩阵的结果为:

现在来谈谈存内计算的优化原理。在计算机中,内存访问通常是计算中的瓶颈之一,因为内存访问的速度相对较慢。为了提高效率,存内计算尝试最大限度地减少内存访问的次数。

存内计算的优化原理包括:

  1. 局部性原理: 存内计算利用了局部性原理,即一旦访问了某个内存位置,附近的内存位置也很可能被访问。因此,存内计算尽量将需要访问的数据缓存在高速缓存中,减少主存访问次数。

  2. 循环展开: 将循环展开可以增加计算的并行性,减少内存访问次数。这意味着在计算时一次处理多个元素,而不是逐个处理。

  3. 矩阵块操作: 将大矩阵划分成小的矩阵块,利用局部性原理在这些块上进行计算,以减少内存访问的范围。

  4. 向量化: 利用硬件的向量指令,同时处理多个数据。这可以通过使用SIMD(单指令多数据)指令集来实现,例如Intel的MMX、SSE、AVX等。

  5. 内存对齐: 确保数据在内存中按照合适的边界对齐,以提高访问效率。

通过这些优化原理,存内计算可以显著提高向量乘矩阵操作的计算效率。这对于涉及大规模数据的线性代数运算,如深度学习中的矩阵乘法,具有重要意义。

2.1探寻代表性工作的独特之处

 1. DPE (Hewlett Packard Laboratories) 

DPE是专为向量乘矩阵操作设计的存内计算加速器。其独特之处在于提供了一种转化算法,将实际的全精度矩阵巧妙地存储到精度有限的ReRAM存内计算阵列中。实验证明,仅用4位的DAC/ADC就能保证计算结果没有精度损失,而性能提升更是达到了令人瞠目的1000到10000倍。

2. ISAAC (University of Utah) 

ISAAC是专为神经网络推理设计的存内计算架构,其多个存内计算阵列通过C-mesh片上网络连接。每个阵列包含用于不同计算层的多种单元,如最大池化单元、Sigmoid单元、eDRAM缓存等。ISAAC通过ReRAM阵列实现向量乘矩阵操作,采用流水线方式提高推理效率,为神经网络的推理提供了独特而高效的解决方案。

 3. PRIME (University of Santa Barbara) 

PRIME同样专注于神经网络推理,其独特之处在于直接使用ReRAM单元进行计算。ReRAM bank包括Mem subarrays(存储)、FF subarrays(计算)和Buffer subarray(缓存)。相较于其他结构,PRIME实现了显著的性能提升和能耗节约,为神经网络推理领域带来了全新的可能性。

2.2逐鹿存内计算的新时代

随着计算领域不断演进,存内计算技术如一匹矫健的鹿儿,勇敢地迎接着新时代的挑战。DPE、ISAAC、PRIME等工作不仅为存内计算打开了崭新的篇章,也为我们提供了探索计算世界更深层次的机会。

1. PipeLayer (Duke University) 

在神经网络训练领域,PipeLayer是一匹勇敢的鹿。其存内计算系统架构旨在通过复制多份权重数据实现少气泡的pipeline结构。PipeLayer巧妙地使得反向传播阶段的误差传递和权值计算并行进行,从而提高了存内计算训练神经网络的计算效率。实验结果显示,与传统的GPU系统相比,PipeLayer实现了42倍的性能提升和7倍的能耗节约。

2.TIME (Tsinghua University) 

在神经网络训练领域,TIME则为存内计算技术打开了新的可能性。为了降低训练时权重矩阵更新的延迟和能耗,TIME采取了权重矩阵复用的方法,与其他方法不同,它不是复制多份权重矩阵,而是通过特殊的数据映射操作来消除拷贝操作的写入开销。实验证明,TIME在有监督的神经网络和强化学习网络方面分别实现了5.3倍和126倍的能耗节约。

 3.踏入未知的LerGAN之境 (Tsinghua University)

LerGAN作为对抗生成网络(GAN)的存内计算系统架构,为存内计算的发展开辟了新的天地。通过去除零相关的操作,重新构建卷积核,LerGAN巧妙地应对了GAN的挑战。它提出了一个三层堆叠的存内计算阵列结构,使得GAN训练的数据传输路径变短,路由减少。实验结果表明,相较于传统的CNN,LerGAN在性能和能耗方面分别取得了7.46倍和7.68倍的提升。

4.PCM+CMOS:IBM的前瞻之举 

IBM的PCM+CMOS存内计算方法,将存储单元与计算结合,实现了全连接神经网络的前向传播、反向传播和权值计算。其独特的结构中使用PCM单元存储权值的高位,而电容器单元存储权值的低位,巧妙地平衡了计算的稳定性和存储的寿命。该方法为存内计算提供了一种前瞻性的解决方案。

三.总结-携手向前迈进

这一系列存内计算的代表性工作,如同一群勇敢的鹿群,勇敢地探索着计算领域的未知领域。DPE、ISAAC、PRIME、PipeLayer、TIME、LerGAN、PCM+CMOS等工作,各自带有独特的特点,共同构筑起存内计算技术的辉煌画卷。

未来,存内计算技术将继续与创新者携手前行,挑战更大的计算难题。这不仅是对技术的不懈探索,更是对计算领域的一次颠覆性的变革。在这个充满激情和创造力的时代,我们期待存内计算技术与计算领域共同书写新的传奇。携手向前,踏上计算的无限征程。

基于向量乘矩阵的存内计算技术正积极推动着神经网络和图计算领域的发展。DPE、ISAAC、PRIME等代表性工作展示了这一领域的多样性和创新。我们可以期待,存内计算技术将在提高计算效率、减少能耗等方面发挥更为关键的作用,为计算领域带来更多的创新与突破。在这个充满活力的领域中,我们正迈向一个更加智能和高效的未来。

参考来源—巨人的肩膀

1.知存科技

2.中国移动研究院

3.电子与信息学报—存内计算芯片研究进展及应用

4.中科院—基于NorFlash的表积神经网络量化

5.《中国科学》杂志社:内存计算研究进展

原文转载至窥探向量乘矩阵的存内计算原理—基于向量乘矩阵的存内计算-CSDN社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/286819.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第16篇:奇偶校验器

Q:本期我们将实现4位奇偶校验逻辑电路,即校验4位二进制代码中 “1” 的个数是奇数或偶数。 A:奇偶校验器的基本原理:采用异或运算对“1”的奇偶个数进行校验,从最高位依次往最低位进行连续异或运算。如果最后的异或运…

Linux离线安装Docker-Oracle_11g

拉取oracle11g镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g创建11g容器 docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g查看容器是否创建成功 docker ps -a导出oracle容器,查看…

计算机视觉之三维重建(3)---单视几何

文章目录 一、问题提出二、无穷远点、无穷远线、无穷远平面2.1 2D空间2.2 3D空间 三、影消点和影消线3.1 2D平面上的无穷远点,无穷远线变换3.2 影消点3.3 影消线 四、单视重构 一、问题提出 1. 当摄像机标定后,内部参数 K K K 已知,外部参数…

最新上门预约服务派单小程序源码 仿东郊到家小程序源码 开源可二开 含完整搭建部署教程

上门预约服务派单小程序源码的在提供便捷的预约服务、实现有效的派单管理、优化服务流程、提升用户体验,并为业务发展和优化提供数据支持。分享一个最新上门预约服务派单小程序源码,仿东郊到家小程序源码,O2O平台系统,跟58到家模式…

简易电路设计,PW1605芯片实现24V/30V/48V限流过压保护功能

一般描述 PW1605 是一款电流限制开关,具有可编程输入过压保护和输出电压箝位功能。集成保护 N 沟道 FET 具有极低的 RDS(ON) 功能,PW1605有助于降低正常工作期间的功率损耗。可编程软启动时间控制启动期间输出电压的压摆率。独立的…

Docker学习笔记 - 基本概念

一. 什么是“容器”(container)和“镜像”(Image) 所谓“容器”可以理解为一个模拟操作系统的虚拟层,大部分是基于Linux的,应用程序及其配置信息,依赖库可以打包成一个Image独立运行在这个虚拟…

基于springboot+vue+Mysql的校园博客系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

Android 系统应用 pk8签名文件转jks或keystore教程

一、介绍 签名文件对于我们在做应用开发中,经常遇到,且签名文件不仅仅是保护应用安全,还会涉及到应用与底层之间的数据共享和API文件等问题。 在Android中,签名文件同样也存在这个问题。但是android中又区分系统应用和普通应用。系…

Python数据结构实验 串和数组的实现

一、实验目的 1.熟悉串和数组类型的实现方法,了解简单文字处理的设计方法; 2.熟悉Python语言的字符和把字符串处理的原理和方法; 3.了解矩阵的存储结构,运用Python语言进行矩阵简单运算处理。…

UE像素流公网(Windows、Liunx)部署无需GPU服务器

前言 之前有个前端地图服务项目要改成UE来渲染3D,有需要在云服务器上多实例运行,所以就先研究了Windows版本的像素流云渲染,后来客户的云服务器是Linux版CectOS系统,加上又有了一些后端服务在上面运行了不能重装成Windows,所以就又着手去研究了Linux系统的云渲染。 推流…

【笔记】以论文发表形式通俗理解 TCP/IP模型

【笔记】以论文发表形式通俗理解 TCP/IP模型 前言TCP/IP模型理论通俗理解 前言 在网络基础学习过程中,以前只对TCP/IP理解个字面,网上查一下能知道个字面意思,但是连起来到底是什么意思,还是一知半解的,停留在表面&am…

数据结构基础(三)链表

链表(Linked List)是一种常见的线性数据结构,由一系列称为节点(Node)的元素组成,每个节点包含两部分:数据(Data)和指向下一个节点的引用(Pointer 或者 Link&a…

放弃 Rust 选择 Zig,Xata 团队推出 pgzx —— 计划使用 Zig 开发基于 PG 的分布式数据库

Summary Xata 公司在基于 PostgresSQL 开发自己的分布式数据库,出于 Zig 和 C 语言以及 PostgreSQL 的 API 有更好的互操作性的考虑,他们选择了 Zig 而非当红炸子鸡语言 Rust。他们的博客文章中对 pgzx 进行了介绍。让我们来看下他们对 Zig 和 Rust 语言…

【开发环境搭建篇】Git的安装和配置

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…

利用Python和IP技术实现智能旅游情报系统

文章目录 引言一、系统架构设计1. 数据采集模块2. 数据处理模块3. 用户界面模块 二、数据获取技术应用三、系统功能展示四、亮数据采集工具介绍五、总结六、号外 引言 随着旅游行业的不断发展,人们对旅游信息的需求也越来越大。为了帮助旅行者更好地规划行程&#…

基于javaweb(springboot+mybatis)宠物医院预约管理系统设计和实现以及论文报告

基于javaweb(springbootmybatis)宠物医院预约管理系统设计和实现以及论文报告 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎…

【超全详解一文搞懂】Scala基础

目录 Scala 01 —— Scala基础一、搭建Scala开发环境安装Scala编译器在IDEA中进行scala编码 二、Scala简介与概述Scala简介Scala概述Scala代码规范 三、理解Scala变量与数据类型Scala的变量与常量Scala和Java变量的区别 Scala的数据类型 四、Scala的程序逻辑1.表达式2.运算符3.…

紫鸾5.0:紫光云新一代敏捷应用开发平台全家桶

曾几何时,“瀑布式”占据了二十世纪软件开发的主流,开发时间往往以年计,一款软件应用动辄几年才能交付。而随着社会生产力的跃升,“瀑布式”已严重跟不上时代的节奏,2001年,“敏捷宣言”的发布,…

AtCoder Regular Contest 143 C - Piles of Pebbles 博弈 , 每个人要拿的是固定的!不够也算不能拿

C - Piles of Pebbles 题意: n堆鹅卵石,第一个人可以拿任意堆x个,第二个人可以拿任意堆y个,第一个人先拿,谁不能拿谁败。 思路: 这个题我一直没读清楚,如文章标题,拿的是固定数目…

MySQL查询约束

1 DML DML 数据操作语句 插入 insert 更新 update 删除 delete 1.1 更新 语法 update 表名 set 字段 值 [, 字段2 值2, ... ] [where 字段 值]; -- [, 字段2 值2, ... ] 是指,可选的,可以同时修改多个列的值 -- [where 字段 值] 是指,可选的,加上是指过滤,只更新符合条…