CN115659113A - 可编程矩阵处理引擎 - Google Patents
可编程矩阵处理引擎 Download PDFInfo
- Publication number
- CN115659113A CN115659113A CN202211088794.2A CN202211088794A CN115659113A CN 115659113 A CN115659113 A CN 115659113A CN 202211088794 A CN202211088794 A CN 202211088794A CN 115659113 A CN115659113 A CN 115659113A
- Authority
- CN
- China
- Prior art keywords
- matrix
- processing
- operations
- memory
- chip
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Optimization (AREA)
- Molecular Biology (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Programmable Controllers (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了可编程矩阵处理引擎。在一个实施例中,可对一个或多个矩阵操作数执行矩阵操作。例如,可从多维存储器接收矩阵数据,其中,所述矩阵数据与一个或多个矩阵操作数相关联。这一个或多个矩阵操作数可从矩阵数据提取。可标识与矩阵操作相关联的矩阵例程。可使用一个或多个矩阵操作数、在矩阵处理器上执行矩阵例程。可基于由矩阵处理器执行的矩阵例程来获取矩阵操作的结果。
Description
本申请2018年1月2日提交的、申请号为201810002887.6、题为“可 编程矩阵处理引擎”的发明专利申请申请的分案申请。
技术领域
本公开总体上关于计算机处理领域,更具体地但非排他地涉及可编程矩阵 处理。
背景技术
矩阵操作(诸如,矩阵乘法和卷积)可能是高度处理器密集型或存储器密 集型的操作,因为它们常涉及对大型多维矩阵操作数的复杂操作。相应地,复 杂矩阵操作的性能会受限于处理和/或存储器等待时间(latency)。随着矩阵操 作日益用于各种应用且日益具有不断增长的数据集(从图形和图像处理到机器 学习和人工智能),对矩阵操作的高性能和灵活处理的需求正在增长。
附图说明
通过在结合所附附图来阅读以下具体实施方式,最好地理解本公开。值得 强调的是,根据行业内的标准惯例,各种特点不一定是按比例绘制的,并且仅 用于说明。在显式或隐式地示出比例的情况下,它仅提供一个说明性示例。在 其他实施例中,为了使讨论清楚,可以任意地扩大或缩小各种特征的尺寸。
图1示出根据某些实施例的示例计算系统的示意图。
图2A-图2C示出矩阵处理架构的示例实施例的框图。
图3和图4示出计算机处理器的示例实施例的框图。
图5示出可编程矩阵处理引擎的示例实施例。
图6示出可编程矩阵处理的示例实施例的流程图。
具体实施方式
下列公开提供用于实现本公开的不同特征的许多不同的实施例或示例。下 文中将描述组件和布置的特定示例以简化本公开。当然,这些仅是示例,并不 旨在是限制性的。此外,本公开可以在各种示例中重复参考编号和/或字母。此 重复只是为了简明和清晰,并且本身不规定所讨论的各实施例和/或配置之间的 关系。不同的实施例可具有不同的优点,并且没有特定的优点对于任何实施例 一定是必需的。
矩阵处理操作(例如,涉及矩阵和/或向量操作数的线性代数运算)在计 算系统中具有广泛应用,从图形处理到机器学习和人工智能,等等此类示例。 例如,复杂的矩阵操作可用于实现提供人工智能和机器学习能力的人工神经网 络,包括计算机视觉、自主导航、语音和音频识别以及自然语言处理,等等此 类示例。这些复杂的矩阵操作(例如,矩阵乘法和卷积)可用于实现神经网络 的基本操作,诸如,前向传播、后向传播以及权重更新。然而,这些矩阵操作 可能是高度处理器密集型和存储器密集型的,因为这些矩阵操作涉及对大型多 维矩阵操作数的复杂操作。相应地,这些矩阵操作的性能会受限于处理和/或存 储器等待时间。此外,这些刻板的矩阵操作经常被实现为没有任何灵活性来实 现矩阵操作的新类型或变体和/或修改现有操作的行为。随着矩阵操作日益用于 各种应用且日益具有不断增长的数据集(诸如,人工智能和机器学习),对矩 阵操作的高性能处理和灵活实现的需求正在增长。
现有的矩阵处理方式遭受各种低效率,当用于实现人工神经网络中的人工 智能和机器学习时尤其如此。例如,虽然中央处理单元(CPU)可用于执行矩 阵操作,但是许多CPU架构为低算术强度操作(即,低的算术操作相对于存 储器操作的比率)而设计,因此不是为对矩阵操作的高效执行而设计的。此外, 许多CPU架构利用复杂的本地或高速缓存存储器管理例程,这对于涉及大型 矩阵操作数的操作会增加处理开销和执行复杂度。图形处理单元(GPU)也可 用于执行矩阵操作。然而,GPU通常为高精度计算而设计,并且会提供对于某 些矩阵操作而言不需要的精确等级,由此减少了可被执行的矩阵操作的量。相 应地,现有的矩阵操作方式对于某些矩阵操作(诸如,涉及大型矩阵操作数和 /或具有某些维度的矩阵操作数的矩阵乘法或卷积操作,等等此类示例)是低效 的。此外,现有的方式可能无法高效地按比例缩放来跨附加的处理资源并行地 执行这些矩阵操作。由此,现有方式当按比例缩放和/或分布这些矩阵操作时不 实现100%的处理效率。此外,现有方式通常是刻板且不灵活的,仅有受限的 能力或没有能力定义新矩阵操作、修改现有的矩阵操作,等等。
贯穿本公开所描述的矩阵处理功能提供用于定义和/或实现特定矩阵操作 的灵活或“可编程”的方式。例如,某些实施例可包括可执行可编程矩阵例程的 矩阵处理器。矩阵例程例如可以是设计成用于当由矩阵处理器执行时来执行特 定矩阵操作的可编程例程。例如,矩阵例程可包括一系列指令和/或命令,这些 指令和/或命令由特定的矩阵处理器支持,并且设计成用于当由矩阵处理器执行 时来执行所需的矩阵操作。例如,在一些实施例中,矩阵处理器可设计成用于 支持用于执行各种基础操作的一组指令和/或命令。以此方式,用于更复杂矩阵 操作的矩阵例程可使用由矩阵处理器支持的基本指令和/或命令来编程。在一些 实施例中,这些矩阵例程可存储在与矩阵处理器相关联的矩阵例程存储器上。 随后,当需要执行特定的矩阵操作时,矩阵处理器可从矩阵例程存储器检索对 应的矩阵例程,随后执行该例程的指令和/或命令来执行所需的矩阵操作。
贯穿本公开所述的可编程矩阵处理功能提供众多技术优点,包括:缓和现 有方式的低效率,以及使得能够使用可编程矩阵例程高效地定义和实现灵活的 矩阵操作。这些可编程矩阵例程使各种各样的矩阵处理功能能够以编程方式在 矩阵处理器上实现而不是经由低效、耗时且昂贵的基于硬件的实现方式来实现。
现在将更具体地参照附图来描述可用于实现本公开的矩阵处理功能的示 例实施例。
图1示出根据某些实施例的示例计算系统100的示意图。
在一些实施例中,贯穿本公开所描述的矩阵处理功能可在系统100中实现。 矩阵处理功能可在系统100中用于涉及矩阵操作的广泛范围的应用和/或用例, 从图形处理到机器学习和人工智能,等等此类示例。例如,在一些实施例中, 矩阵处理功能可用于实现人工神经网络中的人工智能和机器学习。此外,矩阵 处理功能可由系统100的任何组件实现。例如,在所示实施例中,系统100包 括边缘设备110、云服务120、矩阵处理节点130和网络150。矩阵处理节点 130可包括具有矩阵处理功能的任何组件或设备,包括系统100的任何组件。 例如,矩阵处理节点130可包括实现有矩阵处理功能的云服务120和/或服务器 (例如,数据中心中的应用服务器)、实现有矩阵处理功能的边缘设备110(例 如,终端用户设备112、物联网设备114、网关116),等等。在下文中进一步 讨论系统100的这些不同组件。
边缘设备110可包括靠近通信系统100的“边缘”而部署或连接的任何装备 和/或设备。边缘设备110可通过一个或多个网络和/或通信协议(诸如,网络 150)彼此通信和/或与其他远程网络和服务(例如,云服务120)通信。在一 些实施例中,某些边缘设备110可包括贯穿本公开所述的矩阵处理功能,因此, 它们可用作矩阵处理节点130。在所示实施例中,边缘设备110包括终端用户 设备112(例如,台式机、膝上型计算机、移动设备)、物联网(IoT)设备 114以及网关和/或路由器116,等等此类示例。
终端设备112可包括允许或促进与计算系统100的用户交互的任何设备, 包括例如,台式计算机、膝上型计算机、平板、移动电话和其他移动设备、以 及可穿戴设备(例如,智能手表、智能眼镜、头戴式耳机),等等此类示例。
IoT设备114可包括能够通信和/或能够参与物联网(IoT)系统或网络的 任何设备。IoT系统可以指由为特定应用或用例交互操作或协同的多个不同设 备(例如,IoT设备114)组成的自组织(ad-hoc)系统和网络。随着越来越多 的产品和装备演变成变得“智能”,此类自组织系统正在兴起,这意味着这些自 组织系统由计算机处理器控制或监测,并且能够与其他设备通信。例如,IoT 设备114可包括计算机处理器和/或通信接口以允许与系统100的其他组件(诸 如,与云服务120和/或与其他边缘设备110)交互操作。IoT设备114可以是 从头开发出IoT能力的“绿野”(“greenfield”)设备、或通过将IoT能力整合到 最初并没有开发出IoT能力的现有传统设备中而创建的“棕野”(“brownfield”) 设备。例如,在一些情况下,IoT设备114可从整合在“物体”中或附连至“物体” 的传感器和通信模块建立,该“物体”诸如装备、玩具、工具、车辆、活物(例 如,植物、动物、人),等等。替代地或附加地,某些IoT设备114可依赖于 中介组件(诸如,边缘网关或路由器116)来与系统100的各种组件通信。
IoT设备114可包括用于监测、检测、测量和生成与它们的环境特性相关 联的传感器数据和信号的各种类型的传感器。例如,给定的传感器可配置成用 于检测一个或多个相应特性,诸如,移动、重量、物理接触、温度、风、噪声、 光、位置、湿度、辐射、液体、具体的化学化合物、电池寿命、无线信号、计 算机通信和带宽,等等此类示例。传感器可包括物理传感器(例如,物理监测 组件)和虚拟传感器(例如,基于软件的监测组件)。IoT设备114也可包括 用于在其相应的环境中执行各种动作的致动器。例如,致动器可用于选择性地 激活某些功能,诸如,切换安全系统(例如,警报、摄像头、锁)或家用装置 (例如,音频系统、照明、HVAC装置、车库门)的功率或操作,等等此类示 例。
实际上,本公开构想了潜在地无限范围的IoT设备114和相关联的传感器 /致动器的使用。IoT设备114可包括与任何类型的系统100和/或行业相关联的 任何类型的装备和/或设备,上述行业包括:交通(例如,汽车、航空)、工业 制造、能量(例如,发电厂)、电信(例如,因特网、蜂窝和电视服务提供方)、 医疗(例如,保健、制药)、食品加工和/或零售行业,等等。例如,在交通行 业,IoT设备114可包括与飞行器、汽车或船舶相关联的装备和设备,诸如, 导航系统、自主飞行或驾驶系统、交通传感器和控制器和/或由传感器监测的任 何内部机械或电气组件(例如,引擎)。IoT设备114也可包括与工业制造和 生产、航运(例如,货物跟踪)、通信网络(例如,网关、路由器、服务器、 蜂窝塔)、服务器场、发电厂、风力场、油气管线、水处理和配送、废水收集 和处理以及天气监测(例如,温度、风和湿度传感器)等此类示例相关联的装 备、设备和/或基础设施。IoT设备114也可包括例如任何类型的“智能”设备或 系统,诸如,智能娱乐系统(例如,电视机、音频系统、电子游戏系统)、智 能家庭或办公室装置(例如,供热-通风-空气调节(HVAC)装置、冰箱、洗 衣机、烘干机、咖啡机)、功率控制系统(例如,自动电、光和HVAC控制)、 安全系统(例如,警报、锁、摄像头、运动检测器、指纹扫描器、面部识别系 统)以及其他家庭自动化系统,等等此类示例。IoT设备114可静态地定位, 诸如,安装在建筑物、墙壁、地板、地面、灯杆、标识牌、水塔或任何其他固 定或静态结构上。IoT设备114也可以是移动的,诸如,在车辆或飞行器中的 设备、无人机、包裹(例如,用于跟踪货物)、移动设备以及可穿戴设备,等 等此类示例。此外,IoT设备114也可以是任何类型的边缘设备110,包括终 端用户设备112以及边缘网关和路由器116。
边缘网关和/或路由器116可用于促进至边缘设别110以及来自边缘设备 110的通信。例如,网关116可将通信能力提供给最初没有开发出任何此类能 力的现有传统设备(例如,“棕野”IoT设备)。网关116也可用于延伸具有短 程、专属或以其他方式受限的通信能力的边缘设备110(诸如,具有蓝牙或 ZigBee通信能力的IoT设备114)的地理范围。例如,网关116可通过使用其 原生通信能力(例如,蓝牙、ZigBee)将前传(front-haul)提供给IoT设备114 并且使用另一有线或无线通信介质(例如,以太网、WiFi、蜂窝)将后传 (back-haul)提供给其他网络150和/或云服务120以在IoT设备114与远程网 络或服务之间充当中介。在一些实施例中,网关116可由专用网关设备实现, 或可由通用设备(诸如,另一IoT设备114、终端用户设备114或其他类型的 边缘设备110)实现。
在一些实例中,网关116可单独地或与其他组件(诸如,云服务120和/ 或其他边缘设备110)结合地实现某些网络管理和/或应用功能(例如,用于IoT 设备114的IoT管理和/或IoT应用功能)。例如,在一些实施例中,可向网关 设备116推送配置参数和/或应用逻辑或从网关设备116拉取配置参数和/或应 用逻辑,从而允许网关116的范围或接近度内的IoT设备114被配置成用于特 定的IoT应用或用例。
云服务120可包括通过网络150或在“云”中被远程地主管的服务。例如, 在一些实施例中,云服务120可在数据中心中的服务器(例如,应用服务器或 数据库服务器)上被远程地主管。云服务120可包括可由边缘设备110利用或 可用于边缘设备110的任何服务,包括但不限于,数据存储、计算服务(例如, 数据分析、搜索、诊断和故障管理)、安全服务(例如,监控、警报、用户认 证等)、绘图与导航、地理位置服务、网络或基础设施管理、IoT应用和管理 服务、支付处理、音频和视频流送、消息传送、社交联网、新闻和天气,等等 此类示例。在一些实施例中,某些云服务120可包括贯穿本公开所述的矩阵处 理功能,因此,它们可用作矩阵处理节点130。
一般而言,边缘设备100(特别是IoT设备114)可生成极大量以及极多 种类的数据。IoT边缘设备114典型地将此数据卸载到云,以进行处理和/或存 储(例如,由云服务120)。然而,云服务120可能不一定适合处置由IoT设 备114和其他边缘设备110生成的迅速增长量、种类和速度的数据。例如,基 于云的处理在某些情况下可能不是理想的,这些情况诸如,处理时间敏感或高 度机密的数据,或当面对网络带宽约束时,等等此类示例。在一些实施例中, 云服务可利用使用边缘设备110的基于“边缘”的处理来改善云服务的性能。边缘处理是涉及在网络边缘处(例如,使用边缘设备110)(在网络边缘附近, 数据被生成)处理某些数据而不是简单地使大量数据漏向云以进行处理和存储 的方式。某些数据仍可酌情被发送到云,诸如用于更深度分析和/或长期存储。 边缘处理可用于弥补基于云的处理的不足(例如,当基于云的处理低效、无效 和/或不安全时),并因此改善对由IoT设备114和/或其他边缘设备110生成 的增长量、种类和速度的数据的处置。例如,在一些情况下,靠近数据的源(例 如,在网络边缘)而不是在云中处理数据可改善性能和/或避免系统失灵或灾难。 边缘处理也可保存网络带宽,当面对带宽约束和/或受限的网络连接性时这是特 别有益的。
在一些实施例中,为云服务120提供基于边缘的处理的边缘设备110可被 统称为“雾”(“fog”),因为它们用于将“云”延伸至网络的边缘,由此在网络边 缘上形成“雾”。在一些实施例中,“雾”中的设备110可例如使用互连标准或协 议连接至彼此和/或彼此通信。例如,在一些实施例中,设备互连可使用开放互 连联盟(OIC)标准规范1.0来实现,该OIC标准规范1.0由开放连接性基金 会TM在2015年12月23日发布,其使设备能够发现彼此并与彼此连接。另一 可用的互连协议是Thread,在“智能”家庭自动化和类似部署中使用的用于物联网(IoT)设备的联网协议,其已由名称为“Thread Group”的组织联盟开发。也 可使用其他互连协议,包括例如,最优链路状态路由(OLSR)协议、或至移 动自组织联网的更好方式(B.A.T.M.A.N),等等此类示例。
网络150可用于促进计算系统100的组件之间的通信。例如,边缘设备 110(诸如,终端用户设备112和IoT设备114)可使用网络150来彼此通信和 /或访问一个或多个远程云服务120。网络150可包括任何数量或类型的通信网 络,包括例如,局域网、广域网、公共网络、英特网、蜂窝网络、Wi-Fi网络、 短程网络(例如,蓝牙或ZigBee)和/或任何其他有线或无线网络或通信介质。
系统100的计算设备中的任一者、全部或一些可适于执行任何操作系统, 包括Linux或其他基于UNIX的操作系统,微软Windows、Windows Server、 MacOS、苹果iOS、谷歌安卓、或任何定制和/或专属操作系统,以及适于虚拟 化特定操作系统的执行的虚拟机。
尽管图1被描述为包含多个元件或与多个元件相关联,但并非图1的系统 100内示出的所有元件都会用于本公开的每一替代实现方式中。此外,结合图 1的示例所述的元件中的一个或多个元件可以位于系统100外部,而在其他实 例中,某些元件可以被包括在其他所述元件中的一个或多个以及未在所示实现 方式中描述的其他元件内,或被包括作为其他所述元件中的一个或多个以及未 在所示实现方式中描述的其他元件的一部分。此外,图1所示的某些元件可以 与其他组件组合,并用于除了本文中所述的那些目的以外替代的或附加的目的。
示例矩阵处理架构
图2A-图2C示出矩阵处理架构的示例实施例的框图。
在一些实施例中,贯穿本公开所述的矩阵处理功能可使用矩阵处理架构 (诸如,图2A-图2C的矩阵处理架构)来实现。矩阵处理架构(诸如,图2A- 图2C的矩阵处理架构)可在各种系统、设备和/或组件中实现和使用,各种系 统、设备和/或组件诸如贯穿本公开所述的那些系统、设备和/或组件,包括图 1的系统100和/或其相关联组件中的任一者(例如,云服务120/数据中心服务 器、边缘设备110、矩阵处理节点130)。在一些实施例中,图2A-图2C的矩 阵处理架构可用于实现神经网络中的人工智能和机器学习。图2A-图2C中所 示的矩阵处理架构仅是用于执行贯穿本公开所述的矩阵处理功能的一个示例 实施例。其他实施例可使用不同类型、布置和/或数量的组件。例如,其他实施 例可包括任何数量的矩阵处理芯片220、矩阵处理群集230、矩阵处理单元 (MCU)234、高带宽存储器(HBM)模块240和/或存储器资源块(MRB) 238。此外,图2A-图2C的矩阵处理架构的任何组件的全部或部分(例如,矩 阵处理系统200、矩阵处理芯片220和/或矩阵处理群集230的任何组件)可实 现为分开的或独立的组件或芯片,或可与其他组件或芯片集成,诸如,将各种 计算机组件集成到单个芯片中的片上系统(SoC)。
图2A示出矩阵处理系统200的示例实施例的框图。在所示实施例中,矩 阵处理系统200包括主机处理器260、主机存储器270、矩阵处理资源210和 互连总线280。
主机处理器260可配置成用于控制和/或管理矩阵处理系统200。例如,在 一些实施例中,主机处理器260可使用矩阵处理资源210来执行复杂矩阵操作。 主机处理器260可以是能够控制和/或管理矩阵处理系统200的矩阵处理功能的 任何处理资源。例如,在一些实施例中,主机处理器260可使用图3和图4中 各自的计算机处理器300或400来实现。在一些实施例中,主机处理器260可 以是通信地耦合至矩阵处理资源210的分开的或独立的组件。或者,在其他实 施例中,主机处理器260和主机处理资源210可集成到同一组件或芯片中。例 如,在一些实施例中,矩阵处理系统200的组件(包括主机处理器260和矩阵 处理资源210)可实现为片上系统(SoC)。
主机存储器270可包括任何类型或组合的易失性和/或非易失性存储器。 易失性存储器的示例包括各种类型的随机存取存储器(RAM),诸如,动态随 机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)和静态随机 存取存储器(SRAM),等等此类示例。非易失性存储器的示例包括基于盘的 存储介质(例如,磁和/或光存储介质)、固态存储(例如,任何形式的持久闪 存,包括平面或三维(3D)NAND闪存或NOR闪存)、3D交叉点存储器、 电可擦可编程只读存储器(EEPROM)和/或其他类型的非易失性随机存取存 储器(RAM),等等此类示例。主机存储器270可用于例如存储供主机处理器 260在执行期间用的信息(诸如,代码和/或数据)。
在一些实施例中,互连总线280可用于将主机处理器260和主机存储器 270通信地耦合至矩阵处理资源210。互连总线280可使用任何互连协议,诸 如,外围组件总线高速(PCIe)、通用串行总线(USB)或小型计算机系统接 口(SCSI),等等此类示例。
矩阵处理资源210可包括配置成用于执行矩阵操作的任何处理资源。例 如,矩阵处理资源210可配置成用于执行矩阵乘法操作、卷积操作、按元素矩 阵操作(例如,+、*、/、<、>、==)、维度混洗操作和/或上述操作的任何组 合。在一些实施例中,矩阵处理资源210可包括设计并优化成用于执行矩阵操 作的处理资源。在一些实施例中,矩阵处理资源210也能以处理资源的多个层 级分层地布置。例如,在所示实施例中,矩阵处理资源210包括多个矩阵处理 芯片220,并且还可包括每一个矩阵处理芯片220内的任何处理资源。例如, 如下文中结合图2B和图2C所讨论,每一个矩阵处理芯片220可包括多个高 带宽存储器(HBM)模块240和多个矩阵处理群集230,并且每一个矩阵处理 群集230可包括多个矩阵处理单元234。因此,在一些实施例中,矩阵处理资 源210可包括多个矩阵处理芯片220、在每一个矩阵处理芯片220上的多个高 带宽存储器(HBM)模块240和多个矩阵处理群集230、和/或在每一个矩阵 处理群集230上的多个矩阵处理单元234。
矩阵处理芯片220可以是例如配置成用于执行矩阵操作的任何芯片或其 他组件。例如,在一些实施例中,矩阵处理芯片220可以是使用任何类型的互 连接口(诸如,PCIe接口)而连接至主机处理器260的外围卡或芯片。在一些 实施例中,矩阵处理芯片220可使用集成电路来实现,集成电路诸如,专用集 成电路(ASIC)、现场可编程门阵列(FPGA)和/或任何其他类型的电路。在 所示实施例中,矩阵处理芯片220利用通信信道215、以循环布置配置在相邻 的矩阵处理芯片220之间。在一些实施例中,通信信道215可在相邻的矩阵处 理芯片220之间提供单向通信。然而,在其他实施例中,通信信道215可在相 邻的矩阵处理芯片220之间提供双向通信。利用在相邻的处理资源之间的单向 通信的循环布置可称为“单循环”配置,而利用在相邻的处理资源之间的双向通 信的循环布置可称为“双循环”配置。
此外,尽管没有示出,但是在一些实施例中,矩阵处理系统200可包括用 于通过通信网络进行通信的通信接口。例如,在一些实施例中,矩阵处理系统 200可通过网络与一个或多个远程矩阵处理芯片通信来执行分布式矩阵操作。
图2B示出矩阵处理芯片220的示例实施例的框图。在所示实施例中,矩 阵处理芯片220包括控制器222、主机接口224、片间链路225、高带宽存储器 (HBM)模块240和矩阵处理群集230。
控制器222可配置成用于控制和/或管理由矩阵处理芯片220执行的矩阵 操作。在一些实施例中,控制器222可控制和/或管理结合图2A的主机处理器 260和/或图2C的矩阵处理群集230的主控CPU(MCC)232进行的矩阵操作。 例如,在一些实施例中,主机处理器260、控制器222和/或主控CPU(MCC) 232可配置成用于接收矩阵操作或命令,并且跨矩阵处理群集230和高带宽存 储器(HBM)模块240分布矩阵操作和矩阵操作数。在一些实施例中,控制器 222可以是微处理器、集成电路和/或任何其他类型的电路和/或处理逻辑。
主机接口224可以是使矩阵处理芯片220能够与图2A的主机处理器260 通信的通信接口。在一些实施例中,例如控制器222可使用主机接口224来与 图2A的主机处理器260通信。主机接口224可使用任何类型的互连协议或接 口,包括外围组件总线高速(PCIe)、通用串行总线(USB)或小型计算机系 统接口(SCSI),等等此类示例。
片间链路(ICL)225可使矩阵处理芯片220能够与其他矩阵处理芯片通 信。例如,片间链路225可用于实现图2A中的矩阵处理芯片220之间的通信 信道215。片间链路225可以是例如用于使矩阵处理芯片220能够与另一矩阵 处理芯片通信的任何通信接口。在一些实施例中,矩阵处理芯片220可包括多 个片间链路225(例如,十二个片间链路)。在一些实施例中,片间链路225 可使用一个或多个串行化器/解串行化器(SerDes)接口来实现。SerDes接口 可以是将数据从串行转换为并行或反过来从并行转换为串行的通信接口。例如, SerDes接口的发射机可包括串行-并行转换器,并且SerDes接口的接收机可包 括并行-串行转换器。在一些实施例中,矩阵处理芯片220可将多个SerDes接 口用于至另一矩阵处理芯片的每一个连接(例如,在每一对经连接的矩阵处理 芯片之间的四个SerDes接口)。
高带宽存储器(HBM)模块240可以是与矩阵处理芯片220相关联的、 用于存储矩阵操作数和其他矩阵数据的存储器组件。在一些实施例中,高带宽 存储器(HBM)模块240可设计成用于高效地存储和检索矩阵数据。在一些实 施例中,高带宽存储器(HBM)模块240可以是配置成用于在多个维度上存储 和检索数据的多维存储器组件。例如,在一些实施例中,高带宽存储器(HBM) 模块240可以是配置成用于在两个维度(诸如,行和列)上存储和检索数据的 存储器组件。然而,其他实施例可使用配置成用于使用任何其他数量的维度(例如,一个维度、三个维度、四个维度,等等)来存储和检索数据。在所示实施 例中,矩阵处理芯片220包括四个高带宽存储器(HBM)模块240a-d。在一 些实施例中,高带宽存储器(HBM)模块240可由矩阵处理芯片220的矩阵处 理群集230共享。
矩阵处理群集230可包括配置成用于执行矩阵操作(诸如,矩阵乘法、卷 积和/或维度混洗,等等此类示例)的处理资源。在一些实施例中,矩阵处理群 集230可通过并行地执行矩阵处理而共同地用于执行特定矩阵操作。在所示实 施例中,矩阵处理芯片220包括十二个矩阵处理群集230a-230l。此外,在所 示实施例中,矩阵处理群集230使用二维网格互连拓扑来配置或布置。矩阵处 理群集230的互连拓扑可促进矩阵处理群集230之间的循环通信。此外,其他 实施例可包括任何数量和/或布置的矩阵处理群集230。
图2C示出矩阵处理群集230的示例实施例的框图。在所示实施例中,矩 阵处理群集230包括主控CPU(MCC)232、矩阵处理单元(MPU)234、分 片引擎236和存储器资源块(MRB)238。
主控CPU(MCC)232可配置成用于控制和/或管理由矩阵处理群集230 执行的矩阵操作。在一些实施例中,主控CPU 232可以是微处理器、集成电路 和/或任何其他类型的电路和/或处理逻辑。在一些实施例中,主控CPU 232可 从另一组件(诸如,图2A的主机处理器260和/或图2B的控制器222)接收 指令。基于这些指令,主控CPU 232随后可使用矩阵处理单元234来执行矩阵 操作,诸如,矩阵乘法、卷积和/或维度混洗,等等此类示例。例如,主控CPU 232可接收用于执行矩阵乘法操作(诸如,C=A*B)的指令。指令可包括每一 个矩阵的句柄或标识符,并且还可指示矩阵应当如何被存储在存储器资源块 (MRB)238中。随后,矩阵A和矩阵B可被分解为一系列较小的矩阵(例 如,32x32矩阵)。随后,可对该较小矩阵执行矩阵操作,并且可将结果存储 在存储器资源快(MRB)238中,直到已完全计算出输出矩阵C。
矩阵处理单元(MPU)234可配置成用于执行矩阵操作,诸如,矩阵乘法、 卷积和/或维度混洗。在一些实施例中,矩阵处理单元(MPU)234基于从主控 CPU(MCC)232接收的命令来执行矩阵操作。此外,在一些实施例中,每一 个矩阵处理群集230可包括多个矩阵处理单元(MPU)234。例如,在所示实 施例中,矩阵处理群集230包括两个矩阵处理单元(MPU)234。矩阵处理单 元(MPU)234可能能够对小型矩阵(例如,32x32矩阵)执行矩阵操作(诸 如,矩阵乘法)。在一些情况下,矩阵处理单元(MPU)234可设计和/或优化 成用于执行矩阵乘法操作。矩阵处理单元(MPU)234可从存储器资源块(MRB) 238加载矩阵操作数。在一些实施例中,矩阵处理单元(MPU)234可支持以 下算术操作:矩阵乘法;一元矩阵操作;二元矩阵操作,诸如,加(+)、减 (-)、乘(*)、除(/),按位XOR(异或)、AND(与)、OR(或)、逻 辑和算术左移和右移、比较(>、<、>=、==、!=);以及按列、按行和矩阵 级操作,诸如,求和、最大值和最小值。
分片引擎236可配置成将特定矩阵操作的矩阵操作数分片为较小的部分 矩阵。例如,在一些实施例中,主控CPU(MCC)232可使用分片引擎236以 便为矩阵处理单元(MPU)234将矩阵操作数分解为较小的部分矩阵。在一些 实施例中,分片引擎236可包括用于为卷积操作执行矩阵分片的卷积分片引擎 (CSE)。例如,在一些实施例中,卷积分片引擎(CSE)能以使卷积操作能 够被投射为矩阵乘法操作的方式来对矩阵操作数分片,由此使同一处理逻辑既 能执行矩阵乘法操作,又能执行矩阵卷积操作。此外,在一些实施例中,分片 引擎236和/或相关联的卷积分片引擎(CSE)可用于执行维度混洗操作以对矩 阵的维度重排序。
存储器资源块(MRB)238可以是用于存储矩阵操作数和其他矩阵数据的 矩阵处理群集230上的存储器组件。在一些实施例中,存储器资源块(MRB) 238可设计成用于高效地存储和检索矩阵数据。在一些实施例中,存储器资源 块(MRB)238可以是配置成用于在多个维度上存储和检索数据的多维存储器 组件。例如,在一些实施例中,存储器资源块(MRB)238可以是配置成用于 在两个维度(诸如,行和列)上存储和检索数据的存储器组件。在所示实施例 中,矩阵处理群集230包括十个存储器资源块(MRB)238。然而,其他实施 例可在矩阵处理群集230上包括不同数量的存储器资源块(MRB)238。在一 些实施例中,每一个存储器资源块(MRB)238可能能够存储某个大小的矩阵 (例如,256x512矩阵)。在一些实施例中,存储器资源块(MRB)238可由 特定矩阵处理群集230的矩阵处理单元(234)共享。
在一些实施例中,图2A-图2C的矩阵处理架构可用于实现贯穿本公开所 述的矩阵处理功能。例如,矩阵处理系统200可用于使用分布式方式来执行矩 阵操作,该分布式方式使用可用的处理资源来实现100%的处理效率。例如, 在一些实施例中,矩阵操作可跨为矩阵操作而优化的多个处理资源210而分布, 由此实现贯穿矩阵操作的持续时间对处理资源210的完全利用。例如,矩阵处 理系统200可包括设计并优化成用于执行矩阵操作的多个处理资源210。在一 些实施例中,这些处理资源210能以单循环或双循环布置来配置。此外,处理 资源210能以处理资源的多个层级分层地布置。例如,在一些实施例中,处理 资源210可包括多个矩阵处理芯片220、在每一个矩阵处理芯片220上的多个 高带宽存储器(HBM)模块240和多个矩阵处理群集230、和/或在每一个矩 阵处理群集230上的多个矩阵处理单元(MPU)234。该处理架构使矩阵操作 能够以100%的处理效率跨多个处理资源210和/或处理分层而分布。此外,该 处理架构使矩阵操作能够跨可变数量的并行操作的处理资源210高效地按比例 缩放,同时仍实现100%的处理效率。例如,按比例缩放可通过以下方式来实现:调整用于执行特定矩阵操作的处理资源210的数量,诸如,矩阵处理系统 200或服务器的数量、每一个矩阵处理系统200或服务器中的矩阵处理芯片220 的数量,等等。
作为示例,图2A-图2C的矩阵处理架构可用于实现矩阵乘法和/或卷积操 作。例如,在一些实施例中,矩阵乘法操作能以如下方式跨多个处理资源210 而分布:该方式导致传递矩阵操作数的等待时间小于矩阵处理时间,这允许矩 阵操作数的传递将在矩阵处理正被执行时完成。例如,对于涉及具有某些维度 的矩阵操作数的某些矩阵操作(例如,具有“薄”矩阵操作数的矩阵乘法),访 问并传递矩阵操作数所需的时间可能超过执行实际矩阵计算所需的时间,由此 导致当正从存储器获取矩阵操作数和/或正将矩阵操作数传递至处理资源210 时的闲置处理时间。例如,单循环配置(例如,其中每一个处理资源210在任 何给定时刻仅从一个相邻处理资源210获取矩阵操作数和数据)对于这些特定 类型的矩阵操作和矩阵操作数可能不能够实现100%的处理效率。然而,处理 资源210的双循环配置使每一个处理资源能够执行矩阵计算,同时从该处理资 源相邻的两个处理资源210获取矩阵操作数和数据,这显著地减小了传递矩阵 操作数的等待时间,并由此避免了任何闲置处理时间。例如,当使用双循环方 式而不是单循环方式时,某些操作的传递等待时间可减少一半。以此方式,传 递矩阵操作数和矩阵数据的等待时间可完全由矩阵处理时间掩盖,由此避免任 何浪费的或闲置的处理时间,并实现100%的处理效率。相应地,甚至对于大 型矩阵操作数和/或具有某些维度的矩阵操作数(诸如,既不是方形也不是单向 量的大型矩阵操作数(例如,高度比宽度大得多的“薄”矩阵)),也可高效地 执行矩阵操作(例如,矩阵乘法或GEMM)。例如,甚至当将两个薄矩阵相 乘,将薄矩阵与方矩阵相乘等时,也可高效地执行矩阵乘法。类似地,使用可 用的处理资源、以导致100%的处理效率的方式可跨多个处理资源210分布卷 积操作。
作为示例,当接收到矩阵操作或命令时,该卷积操作可跨矩阵处理系统 200的处理资源210分布。例如,可基于可用处理资源210的数量对矩阵操作 数(或输入矩阵)分区。此外,在一些实施例中,分区可跨矩阵操作数的行, 和/或跨矩阵操作数的任何其他维度。随后,每一个分区可分布至特定的处理资 源210。随后,每一个处理资源210可执行多个部分矩阵操作。在一些实施例 中,在多个级中执行多个部分矩阵操作。例如,每一个处理资源210可执行部 分矩阵操作的特定级,同时将部分矩阵数据发送至该处理资源的相邻处理资源 210并从该处理资源的相邻处理资源210接收部分矩阵数据。例如,在处理资 源210的单循环配置中,每一个处理资源210要么将部分矩阵数据发送至每一 个相邻的处理资源,要么从每一个相邻的处理资源接收部分矩阵数据。类似地, 在处理资源210的双循环配置中,每一个处理资源210可将部分矩阵数据发送 至每一个相邻的处理资源210,并且从每一个相邻的处理资源210接收部分矩 阵数据。
随后,每一个处理资源210可将该部分矩阵数据用于后续的部分矩阵操作。 随后,矩阵操作的结果可基于由处理资源210共同执行的部分矩阵操作来确定。
此外,如果处理资源210分层地布置,则矩阵操作能以分层方式分布。例 如,最初可基于可用矩阵处理芯片220的数量对矩阵操作数(或输入矩阵)分 区。随后,每一个分区以及相关联的部分矩阵操作可分布至特定的矩阵处理芯 片220。随后,可跨特定的矩阵处理芯片220的矩阵处理群集230和/或高带宽 存储器(HBM)模块240类似地对分布至特定矩阵处理芯片220的分区和部分 矩阵操作进行分区和分布。例如,对于某些矩阵操作,部分矩阵操作可分布至 每一个矩阵处理群集230。或者,对于某些矩阵操作,部分矩阵操作可跨各个“逻 辑处理节点”(例如,与高带宽存储器(HBM)模块240相关联的矩阵处理群 集230的组)分布,并且随后可分布至特定逻辑处理节点的每一个矩阵处理群 集230。在一些实施例中,矩阵处理群集230(和/或逻辑处理节点)能以类似 于矩阵处理芯片220的方式被循环式地配置。随后,可跨特定矩阵处理群集230 的矩阵处理单元(MPU)234以类似方式对分布至特定矩阵处理群集230的分 区和部分矩阵操作进行分区和分布。
示例计算机处理器架构
图3和图4示出可根据本文中所公开的实施例而使用的计算机处理器的示 例实施例的框图。例如,图3和图4中所示的计算机处理器可用作与矩阵处理 系统相关联的主机处理器(例如,图2A的矩阵处理系统200中的主机处理器 260),或用作与贯穿本公开所讨论的其他组件和/或设备相关联的处理器(例 如,与图1的系统100中的组件相关联的处理器)。本领域已知的对膝上型设 备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网 络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视 频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以 及各种其他电子设备的其他处理器和系统设计也是合适的。一般地,能够包含 本文中所公开的处理器和/或其他执行逻辑的多个系统和电子设备一般都是合 适的。
图3示出处理器300的示例实施例的框图。处理器300是可结合贯穿本公 开所述的实施例来使用的硬件设备类型的示例。处理器300可以是任何类型的 处理器,诸如,微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处 理器、多核处理器,单核处理器,或用于执行代码的其他设备。虽然在图3中 仅示出一个处理器300,但是处理元件可以替代地包括多于一个的图3中所示 出的处理器300。处理器300可以是单线程核,或对于至少一个实施例,处理 器300可以是多线程的,体现在对于每一个核,处理器300可包括多于一个的 硬件线程上下文(或“逻辑处理器”)。
图3还示出根据实施例的存储器302,此存储器302耦合到处理器300。 存储器302可以是为本领域技术人员所知或以其他方式对本领域技术人员可用 的各种存储器(包括存储器层次结构的各个层)中的任何一种。此类存储器元 件可包括但不仅限于,随机存取存储器(RAM)、只读存储器(ROM)、现 场可编程门阵列(FPGA)的逻辑块、可擦可编程只读存储器(EPROM)以及 电可擦可编程序只读存储器(EEPROM)。
处理器300可执行与本文中详细描述的多个算法、过程或操作相关联的任 何类型的指令。一般而言,处理器300可以将要素或制品(例如,数据)从一 种状态或事物转换为另一种状态或事物。
可将代码304(其可以是由处理器300执行的一条或多条指令)存储在存 储器302中;或者可将代码304存储在软件、硬件、固件或者软件、硬件和固 件的任意合适的组合中;或者可基于特定的需求,在适当的情况下,将代码存 储在任何其他内部或外部的组件、设备、元件或对象中。在一个示例中,处理 器300可以遵循由代码304指示的指令的程序序列。每一条指令都进入前端逻 辑306,并且由一个或多个解码器308处理。解码器可以生成微操作(诸如, 按预定义格式的固定宽度的微操作)或可以生成反映原始的代码指令的其他指令、微指令或控制信号以作为其输出。前端逻辑306还可包括寄存器重命名逻 辑和调度逻辑,它们一般分配资源,并对应于供执行的指令对操作排队列。
处理器300可也包括执行逻辑314,该执行逻辑314具有执行单元316a、 316b、316n等的集合。一些实施例可以包括专用于特定功能或功能集的多个执 行单元。其他实施例可包括仅一个执行单元或可执行特定的功能的仅一个执行 单元。执行逻辑314执行由代码指令指定的操作。
在完成了对由代码指令指定的操作的执行之后,后端逻辑318可以引退代 码304的指令。在一个实施例中,处理器300允许乱序的执行,但是要求有序 的指令引退。引退逻辑320可以采取各种已知的形式(例如,重排序缓冲器等)。 以此方式,至少对于由解码器生成的输出、硬件寄存器和由寄存器重命名逻辑 310利用的表以及由执行逻辑314修改的任何寄存器(未示出)而言,处理器 300在代码304的执行期间被转换。
虽然在图3中未示出,但是处理元件可在与处理器300一起的芯片上包括 其他元件。例如,处理元件可包括与处理器300一起的存储器控制逻辑。处理 元件可包括I/O控制逻辑和/或可包括与存储器控制逻辑集成的I/O控制逻辑。 处理元件也可以包括一个或多个高速缓存。在一些实施例中,非易失性存储器(诸如,闪存或熔丝)也可以与处理器300一起被包括在芯片上。
图4示出多处理器400的示例实施例的框图。如图4中所示,多处理器系 统400是点对点互连系统,并且包括经由点对点互连450耦合的第一处理器470 和第二处理器480。在一些实施例中,处理器470和处理器480中的每一个都 可以是图3的处理器300的某个版本。
处理器470和480被示为分别包括集成存储器控制器(IMC)单元472和 482。处理器470还包括作为其总线控制器单元的一部分的点对点(P-P)接口 476和478;类似地,第二处理器480包括P-P接口486和488。处理器470、 480可以经由使用点对点(P-P)接口电路478、488的P-P接口450来交换信 息。如图4中所示,IMC 472和482将处理器耦合到相应的存储器,即存储器 432和存储器434,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器470、480可各自经由使用点对点接口电路476、494、486、498 的各个P-P接口452、454与芯片组490交换信息。芯片组490可以可选地经 由高性能接口439与协处理器438交换信息。在一个实施例中,协处理器438 是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩 引擎、图形处理器、GPGPU、嵌入式处理器、矩阵处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外 部但经由P-P互连与这些处理器连接,从而如果处理器被置于低功率模式,则 任一个或这两个处理器的本地高速缓存信息可被存储在该共享的高速缓存中。
芯片组490可经由接口496耦合至第一总线416。在一个实施例中,第一 总线416可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代 I/O互连总线之类的总线,但是本公开的范围不限于此。
如图4中所示,各种I/O设备414可连同总线桥418一起耦合到第一总线 416,总线桥418将第一总线416耦合到第二总线420。在一个实施例中,诸如 协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形 加速器或数字信号处理(DSP)单元)、矩阵处理器、现场可编程门阵列或任 何其他处理器的一个或多个附加处理器415耦合到第一总线416。在一个实施 例中,第二总线420可以是低引脚数(LPC)总线。各种设备可耦合到第二总 线420,这些设备包括例如键盘和/或鼠标422、通信设备427以及存储单元428 (诸如,在一个实施例中可包括指令/代码和数据430的盘驱动器或者其他大容 量存储设备)。此外,音频I/O 424可以耦合至第二总线420。注意,其他架 构是可能的。例如,代替图4的点对点架构,系统可以实现多分支总线或其他 此类架构。
图4中的任何组件的全部或部分可实现为分开的或独立的组件或芯片,或 可与其他组件或芯片集成,诸如,将各种计算机组件集成到单个芯片中的片上 系统(SoC)。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方 法的组合中。某些实施例可实现为在可编程系统上执行的计算机程序或程序代 码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存 储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图4中示出的代码430)应用于输入指令,以执行 本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或 多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理 器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系 统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处 理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上, 本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可 以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示 性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机 器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储 在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造 该逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成 的物品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其他类型的 盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW) 以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器 (DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除 可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM); 相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介 质。
相应地,本公开的各实施例还包括非瞬态的有形机器可读介质,该介质包 含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、 电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
可编程矩阵处理引擎
图5示出可编程矩阵处理引擎500的示例实施例。在一些实施例中,矩阵 处理引擎500可由矩阵处理架构(诸如,图2A-图2C的矩阵处理架构)来实 现。例如,在一些实施例中,矩阵处理引擎500可由矩阵处理芯片上的矩阵处 理群集(例如,来自图2B和图2C的矩阵处理芯片220的矩阵处理群集230) 实现。在那些实施例中,特定的矩阵处理群集可使用其相关联的矩阵处理引擎 500来执行基于矩阵的处理和操作,诸如,与(例如,贯穿本公开所述的)跨 多个矩阵处理资源分布的特定矩阵操作相关联的部分矩阵操作。
在所示实施例中,矩阵处理引擎500包括读取引擎535、片引擎536和输 出引擎537,这些将在下文中进一步讨论。所示实施例也描绘当使用矩阵处理 引擎500来执行矩阵操作时可能涉及的底层矩阵处理架构的各种组件。例如, 所示实施例描绘高带宽存储器(HBM)模块540、主控CPU(MCC)532、矩 阵处理单元(MPU)534、存储器资源块(MRB)538和矩阵例程存储器539。 例如,在所示实施例中,这些各种各样的组件在矩阵处理引擎500上重叠以说 明这些组件将如何以及何时由矩阵处理引擎500使用,如下文中进一步所述。
HBM模块540可以是设计成用于高效地存储和检索大量矩阵数据的高带 宽存储器(HBM)模块。例如,在一些实施例中,HBM模块540可以是矩阵 处理芯片上的高带宽存储器(HBM)模块(例如,来自图2B的矩阵处理芯片 220的HBM模块240)。
MCC 532可以是用于控制和/或管理矩阵操作的主控CPU(MCC)。例如, 在一些实施例中,MCC 532可以是在特定矩阵处理群集上的主控CPU(例如, 来自图2C的矩阵处理群集230的MCC 232)。例如,在那些实施例中,MCC 532可用于控制和/或管理在它的特定群集上执行的矩阵操作。
MPU 534可以是用于执行矩阵操作的矩阵处理单元(MPU)。例如,在 一些实施例中,MPU 534可以是在特定的矩阵处理群集上的矩阵处理单元(例 如,来自图2C的矩阵处理群集230的MPU 234)。例如,在一些实施例中, 矩阵处理群集可包括用于执行矩阵操作的多个矩阵处理单元(MPU)。所示实 施例例如描绘两个矩阵处理单元(MPU)534a和534b。在一些实施例中,MPU 534可基于来自主控CPU(MCC)532的命令或指令来执行矩阵操作。
存储器资源块(MRB)538可以是设计成用于存储和检索矩阵数据的存储 器组件。例如,在一些实施例中,MRB 538可以是在特定的矩阵处理群集上的 存储器资源块(例如,来自图2C的矩阵处理群集230的存储器资源块238)。 例如,在那些实施例中,MRB 538可用于存储和检索与在特定群集上执行的矩 阵操作相关联的矩阵数据。
矩阵例程存储器539可以是用于存储矩阵例程的存储器组件。矩阵例程例 如可以是用于矩阵处理器的、设计成用于当由矩阵处理器执行时来执行特定矩 阵操作的可编程例程。例如,矩阵例程可包括一系列指令和/或命令,这些指令 和/或命令由特定的矩阵处理器支持,并且设计成用于当由矩阵处理器执行时来 执行所需的矩阵操作。例如,在一些实施例中,矩阵处理器可设计成用于支持 用于执行各种基础操作的一组指令和/或命令。例如,在一些实施例中,矩阵处 理器可支持用于以下操作的指令:处理数据,执行各种算术操作,和/或为各种 指令和操作标识矩阵操作数和输出。
例如,某些指令可用于处理数据,诸如,读取,写入,和/或将数据(例 如,矩阵数据)复制到不同位置以及从不同位置复制数据(例如,矩阵数据), 对矩阵数据分片,提取矩阵数据,重新布置矩阵数据,等等。
作为另一示例,某些指令可用于执行特定的算术操作,包括以下操作中的 任何操作:矩阵乘法;卷积;一元矩阵操作;二元矩阵操作,诸如,加(+)、 减(-)、乘(*)、除(/),按位XOR(异或)、AND(与)、OR(或)、 逻辑和算术左移和右移、比较(>、<、>=、==、!=);以及按列、按行和矩 阵级操作,诸如,求和、最大值和最小值。
此外,特殊的“寄存器操作数”(REGOP)指令可用于为各种所支持的指 令和操作标识矩阵操作数和输出。寄存器操作数指令例如可用于指定操作数的 大小和位置以及特定指令或操作的输出。例如,在一些实施例中,寄存器操作 数指令可用于标识与特定的操作数或输出相关联的高带宽存储器(HBM)模块 或存储器资源块(MRB)中的位置。作为示例,基本矩阵乘法操作可使用以下 指令来编程:用于标识每一个操作数的位置以及输出的位置的REGOP指令, 以及随后的用于执行矩阵乘法操作的指令。
以此方式,由矩阵处理器支持的基础指令和/或命令可用于对用于更复杂 矩阵操作(诸如,分布式矩阵乘法和/或卷积操作、维度混洗操作、重塑(reshape) 操作,等等)的矩阵例程编程。
矩阵例程存储器539可在矩阵处理架构的任何部分(诸如,矩阵处理芯片、 矩阵处理群集和/或主机计算系统)中实现。例如,在一些实施例中,矩阵处理 芯片(例如,图2B的矩阵处理芯片220)可包括可由那个矩阵处理芯片上的 相应群集访问的矩阵例程存储器539。作为另一示例,在一些实施例中,矩阵 处理群集(例如,图2C的矩阵处理群集230)可包括其自身的矩阵例程存储 器539。作为又一示例,在一些实施例中,矩阵处理架构的主机计算系统可包 括可由其相关联的矩阵处理资源访问的矩阵例程存储器539(例如,在图2A中,矩阵处理系统200的主机存储器270可包括可由矩阵处理资源210访问的 矩阵例程存储器)。
此外,矩阵例程存储器539可以是能够存储数据的任何组件或机制,包括 任何类型或组合的易失性和/或非易失性存储器,诸如,随机存取存储器(RAM) (例如,动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、 静态随机存取存储器(SRAM))、基于闪存的存储器、只读存储器(ROM)、 现场可编程门阵列(FPGA)的逻辑块、可擦可编程只读存储器(EPROM)、 电可擦可编程ROM(EEPROM)、和/或上述各项的任何合适的组合。
作为示例,在一些实施例中,矩阵例程存储器539可以使用矩阵处理芯片 上的随机存取存储器(例如,SRAM)来实现。例如,在这些实施例中,可由 主机计算系统(例如,图2的主机处理器260)在矩阵例程存储器539上加载 矩阵例程。例如,主机计算系统可经由互连接口(例如,PCIe接口)将矩阵例 程传送至矩阵处理芯片,矩阵处理芯片随后可将这些矩阵例程存储在其相关联 的矩阵例程存储器539上。在一些实施例中,主机计算系统的软件驱动器可用 于加载矩阵例程。此外,在一些实施例中,在系统启动期间可在矩阵例程存储器539上加载任何现有的矩阵例程,而任何附加的矩阵例程可在系统启动之后 在后续酌情被加载。
在所示示例中,矩阵处理引擎500并行地执行多个矩阵操作501和502。 例如,如上所述,在一些实施例中,矩阵处理引擎500可实现在特定的矩阵处 理群集上,并且该特定的矩阵处理群集可包括多个MPU 534。在所示示例中, 矩阵处理引擎500实现在具有两个MPU534a-b的群集上。相应地,矩阵处理 引擎500可使用相应的MPU 534并行地执行两个矩阵操作501和502。所示示 例示出矩阵处理引擎500的针对第一矩阵操作501和第二矩阵操作502的控制 流。
在所示示例中,针对第一矩阵操作501的控制流开始于矩阵处理引擎500 的读取引擎535。读取引擎535首先可从矩阵处理芯片的对应HBM模块540a 检索矩阵数据(例如,与矩阵操作501的操作数相关联的矩阵数据),并且读 取引擎535随后可将那个矩阵数据存储在与读取引擎535相关联的特定群集的 某些MRB 538a中。例如,如上所述,HBM模块540a可以是特定的矩阵处理 芯片上的高带宽存储器模块(例如,由特定的矩阵处理芯片的矩阵处理群集共 享的存储器),并且MRB 538可以是特定的矩阵处理群集上的本地存储器资 源块。此外,在一些实施例中,读取引擎535可使用其相应的群集上的主控 CPU(MCC)532来存储和检索HBM 540和MRB 538上的数据。
随后,片引擎536a可对存储在MRB 538中的矩阵数据“分片”以提取与矩 阵操作501相关联的特定矩阵操作数。例如,在一些情况下,相关联的矩阵操 作数可仅包括存储在MRB 538a中的矩阵数据的子集,并且/或者矩阵操作数可 以不被连续地布置在存储在MRB538a中的矩阵数据中。相应地,片引擎536a 可提取存储在MRB 538a中的矩阵数据的特定“片”或片段,并且随后可布置这 些片以形成相应的矩阵操作数。例如,在所示示例中,矩阵操作501与卷积操 作相关联,相应地,片引擎536a用于从存储在MRB 538a中的矩阵数据中提 取经分片的矩阵操作数和过滤符(filter)。随后,经分片的矩阵操作数和过滤 符分别被存储在MRB 538b和538c中。在一些情况下,由片引擎536a使用的 特定分片方式可取决于各种因素,包括矩阵操作501的类型、可用的处理资源 的数量以及操作数的大小,等等。此外,在一些实施例中,由片引擎536a为 特定操作执行的特定分片可使用由片引擎536a支持的一组指令来编程和/或定 义。
随后,输出引擎537可用于计算特定矩阵操作501的结果。例如,输出引 擎537可使用由片引擎536a生成的矩阵操作数(例如,存储在MRB 538b和 538c中的矩阵操作数)来执行合适的矩阵操作501。例如,在一些实施例中, 输出引擎可首先标识对应于特定矩阵操作501的相关联矩阵例程,随后,输出 引擎537可从矩阵例程存储器539获取那个矩阵例程。在一些实施例中,输出 引擎537可使用其相应的群集上的主控CPU(MCC)532以从矩阵例程存储器 539检索矩阵例程。
随后,如果合适的话,输出引擎537可指定或供应由矩阵例程使用的某些 信息或字段。例如,在一些实施例中,矩阵例程的某些信息和/或字段(诸如, 矩阵例程的特定操作数的大小和/或位置)可以是不完整或未指定的。相应地, 在一些实施例中,输出引擎537可使用MCC 532来为特定的矩阵例程指定或 供应任何剩余信息和/或字段(例如,矩阵操作数的大小和/或位置)。
随后,输出引擎537可执行特定的矩阵例程。例如,输出引擎537可使用 MCC 532和/或MPU 534a来执行与特定的矩阵例程相关联的经编程指令。MCC 532可例如用于执行由指令指定的某些任务,诸如,读取和写入数据,与其他 资源通信,等等。MPU 534a可例如用于执行由指令指定的特定算术操作。此 外,在一些情况下,可重复地执行或循环进行特定的矩阵例程,直到已为所有 必要数据(例如,特定矩阵操作数的所有数据)执行或完成了特定操作。
随后,输出引擎537可将矩阵例程的输出或结果存储在用于执行矩阵例程 的群集的某(些)MRB 538d中。在一些情况下,输出引擎537随后可将存储 在MRB 538d中的输出提供给矩阵处理架构的另一组件。例如,在一些情况下, 矩阵操作501可以是与跨多个处理资源分布的较大矩阵操作相关联的部分矩阵 操作,由此,矩阵操作501的输出可以是与该较大分布式操作相关联的部分结 果。此外,部分矩阵操作501的输出可能是分布式矩阵操作中所涉及的(多个) 其他处理资源所需要的。相应地,输出引擎537可将部分矩阵操作501的输出 提供给合适的资源,以便例如进行进一步处理和/或存储。在一些情况下,合适 的资源可基于情况而有所不同,这些情况包括被执行的矩阵操作的类型、(多 个)相关联矩阵例程的实现方式、处理资源的数量和可用性,等等。例如,在 一些情况下,矩阵操作的输出的特定处理和/或目的地可由相关联的矩阵例程编 程或定义。此外,在一些实施例中,输出引擎537可使用其相应群集上的主控 CPU(MCC)532以将部分矩阵操作501的输出提供至合适的目的地。
例如,在一些情况下,输出引擎537可将部分矩阵操作501的输出提供至 用于存储分布式矩阵操作的部分结果的特定目的地。例如,对于分布式矩阵操 作,由每一个处理资源确定的相应的部分结果可在特定的存储器组件(诸如, 矩阵处理芯片的特定HBM 540b)上被合并。例如,在一些情况下,由矩阵处 理芯片的每一个群集确定的相应的部分结果可在矩阵处理芯片的特定HBM 540b上被合并。此外,部分结果可使用共同形成矩阵操作的完整结果的特定布 置而被存储在HBM 540b上。
作为另一示例,在一些情况下,输出引擎537可将部分矩阵操作501的输 出(例如,存储在MRB 538d中的输出)往回馈送到MPU 534a,以便例如使 MPU 534a能够将那个输出用作后续的部分操作中的操作数。例如,在一些情 况下,分布式矩阵操作的一个级中的部分操作的输出可用作用于该分布式矩阵 操作的另一级中的部分操作的输入或操作数。
作为另一示例,在一些情况下,输出引擎537可将部分矩阵操作501的输 出(例如,存储在MRB 538d中的输出)提供至另一矩阵处理资源(诸如,在 同一矩阵处理芯片上的另一矩阵处理群集、或完全是另一矩阵处理芯片)。例 如,在一些情况下,分布式矩阵操作可跨矩阵处理芯片的多个群集和/或跨多个 矩阵处理芯片分布。此外,在一些情况下,由特定的矩阵处理资源执行的部分 操作的输出可用作由不同处理资源执行的另一部分操作中的操作数。
在所示示例中,第二矩阵操作502可并行于第一矩阵操作501来执行。此 外,针对第二矩阵操作502的控制流可类似于上文中针对第一矩阵操作501所 述的控制流。然而,第二矩阵操作502可以是不同的矩阵操作(例如,使用不 同的矩阵例程来执行),其具有不同的矩阵操作数和结果,使用HBM 540和/ 或MRB 538的不同存储器位置,并且使用不同的MPU534b和相关联的分片 引擎536b来执行。
图6示出用于可编程矩阵处理的示例实施例的流程图600。在一些实施例 中,流程图600可由贯穿本公开所述的组件(例如,图2A-图2C的矩阵处理 架构和/或图5的可编程矩阵处理引擎)来实现。
流程图可开始于框602:接收用于执行矩阵操作的命令。矩阵操作可包括 对一个或多个矩阵操作数的操作。例如,矩阵操作可包括任何基于矩阵的算术 操作,包括按元素的矩阵操作、矩阵乘法、卷积和/或此类操作的任何组合。
此外,在一些实施例中,矩阵操作可用于实现人工神经网络中的计算机版 本的人工智能以及机器学习能力。例如,在一些实施例中,框602的矩阵操作 可与人工神经网络中的操作(诸如,前向传播、后向传播和/或权重更新操作) 相关联。
随后,流程图可继续进行到框604以从存储器获取矩阵数据。矩阵数据可 例如与矩阵操作的一个或多个矩阵操作数相关联。在一些实施例中,矩阵数据 可从多维存储器获取。多维存储器可以例如是设计成用于高效地按多个维度 (例如,二维)存储和检索数据的存储器组件。在一些实施例中,矩阵数据可 通过执行用于从多维存储器的一个或多个存储器位置获取矩阵数据的一条或 多条指令来获取。
随后,流程图可继续进行到框606以从矩阵数据获取矩阵操作数。例如, 在一些实施例中,矩阵操作数可通过对矩阵数据分片来获取,从而从矩阵数据 中提取矩阵操作数。此外,在一些实施例中,矩阵操作数可通过执行用于对矩 阵操作数分片或从矩阵数据中提取矩阵操作数的一条或多条指令来获取。
随后,流程图可继续进行到框608以标识与矩阵操作相关联的矩阵例程。 矩阵例程可例如是用于矩阵处理器的、设计成用于当由该矩阵处理器执行时来 执行特定矩阵操作的可编程例程。例如,矩阵例程可包括一系列指令和/或命令, 这些指令和/或命令由特定的矩阵处理器支持,并且设计成用于当由矩阵处理器 执行时来执行所需的矩阵操作。例如,在一些实施例中,矩阵处理器可设计成 用于支持用于执行各种基础矩阵操作的一组指令和/或命令。例如,矩阵处理器 可包括用于以下操作的指令和/或命令:标识矩阵操作数的存储器位置,从存储 器获取矩阵操作数,和/或对矩阵操作数执行特定的算术操作或计算,等等此类 示例。以此方式,由矩阵处理器支持的基础指令和/或命令可用于对用于更复杂 矩阵操作的矩阵例程进行编程。
在一些实施例中,矩阵例程存储器可用于存储矩阵例程,并且这些矩阵例 程可在需要时从矩阵例程存储器检索。例如,为了执行所需的矩阵操作,对应 的矩阵例程可首先从矩阵例程存储器获取。然而,在一些情况下,特定的矩阵 例程可能还未存储在矩阵例程存储器上。相应地,可能需要在矩阵例程存储器 上加载该特定的矩阵例程。由此,在一些情况下,特定的矩阵例程可首先从主 机计算系统获取,并且随后可被存储在矩阵例程存储器上。
随后,流程图可继续进行到框610以执行矩阵例程。例如,在一些实施例 中,可使用一个或多个矩阵操作数、在矩阵处理器上执行矩阵例程。随后,流 程图可继续进行到框612以便基于由矩阵处理器执行的矩阵例程来获取矩阵操 作的结果。例如,在一些情况下,特定的矩阵例程可返回通过由矩阵处理器执 行的一系列指令和/或命令确定的结果。
此刻,流程图可完成。然而,在一些实施例中,流程图可重新开始和/或 可重复某些框。例如,在一些实施例中,流程图可在框602处重复,以便继续 接收和处理用于执行矩阵操作的命令。
多个图中的流程图和框图示出根据本公开的各方面的系统、方法和计算机 程序产品的可能的实现的架构、功能和操作。就这一点而言,流程图或框图中 的每一个框可表示包括用于实现(多个)所指定的逻辑功能的一条或多条可执 行指令的代码模块、代码段或代码部分。还应当注意,在一些替代实现方式中, 框中所标注的多个功能可不按图中所标注的顺序发生。例如,取决于所涉及的 功能,实际上可基本上同时执行连续地示出的两个框,或者有时可按相反的顺 序或替代的顺序来执行这些框。也将注意,可由执行所指定功能或动作的基于 专用硬件的的系统或专用硬件和计算机指令的多种组合来实现框图和/或流程 图说明中的每一个框和框图和/或流程图说明中的多个框的组合。
前述公开概述了若干实施例的特征,使得本领域技术人员可以更好地理解 本公开的各方面。本领域技术人员应当理解,他们可以容易地使用本公开作为 用于设计或修改其他过程和结构以执行相同的目的和/或实现本文中介绍的多 个实施例的相同优点的基础。本领域技术人员还应当认识到,此类等效构造不 背离本公开的精神和范围,并且他们可以作出各种更改、替换和改变而不背离 本公开的精神和范围。
本文中所公开的任何硬件元件的全部或部分可容易地在片上系统(SoC) (包括中央处理单元(CPU)封装)中提供。SOC表示将计算机或其他电子系 统的组件集成到单个芯片中的集成电路(IC)。SoC可以包含数字的、模拟的、 混合式信号以及射频功能,所有这些都可以在单个芯片基板上提供。其他实施 例可以包括多芯片模块(MCM),其中,多个芯片位于单个电子封装内,并 且配置成通过此电子封装彼此密切地交互。在各种其他实施例中,本文中所公 开的计算功能可以在专用集成电路(ASIC)、现场可编程门阵列(FPGA)以 及其他半导体芯片中的一个或多个硅核中实现。
如贯穿本说明书所使用,术语“处理器”或“微处理器”应当理解为不仅包括 传统微处理器(诸如,引领行业的x86和x64架构),还包括矩阵处 理器、图形处理器、以及任何ASIC、FPGA、微控制器、数字信号处理器(DSP)、 可编程逻辑器件、可编程逻辑阵列(PLA)、微代码、指令集、仿真的或虚拟 机处理器、或任何类似的“图灵完备”(Turing-complete)设备、设备的组合、 或允许指令的执行的逻辑元件(硬件或软件)。
也应注意,在某些实施例中,可省略或合并组件中的一些组件。在一般意 义上,附图中所描绘的布置应当理解为逻辑划分,而物理架构可以包括这些元 件的各种排列、组合和/或混合。重要的是应注意到,可以使用无数可能的设计 配置来实现本文中概述的操作目标。相应地,相关联的基础结构具有无数替代 布置、设计选择、设备可能性、硬件配置、软件实现和装备选项。
在一般意义上,任何适当地配置的处理器可执行与数据或微代码相关联的 指令以实现本文中详述的操作。本文中公开的任何处理器都可以将要素或制品 (例如,数据)从一种状态或事物转换为另一种状态或事物。在另一个示例中, 可以利用固定逻辑或可编程逻辑(例如,由处理器执行的软件/计算机指令)来 实现本文中概述的一些活动,并且本文中所标识的元件可以是某种类型的可编 程处理器、可编程数字逻辑(例如,现场可编程门阵列(FPGA)、可擦可编 程只读存储器(EPROM)、电可擦可编程序只读存储器(EEPROM))或包括数字逻辑、软件、代码、电子指令的ASIC、闪存、光盘、CD-ROM、DVD ROM、 磁卡或光卡、适于存储电子指令的其他类型的机器可读介质、上述各项的任何 合适的组合。
在操作中,存储可在合适的情况下并基于特定的需求将信息存储在任何合 适类型的非暂态存储介质(例如,随机存取存储器(RAM)、只读存储器(ROM)、 现场可编程门阵列(FPGA)、可擦可编程只读存储器(EPROM)、电可擦可 编程序只读存储器(EEPROM)或微代码)、软件、硬件(例如,处理器指令 或微代码)、或任何其他合适的组件、设备、元件,或对象中。此外,基于特 定的需要和实现方式,可在任何数据库、寄存器、表、高速缓存、队列、控制列表或存储结构中提供在处理器中跟踪、发送、接收或存储的信息,所有这些 都可在任何合适的时间帧内被引用。本文中公开的存储器或存储元件中的任一 者应当解释为被酌情涵盖在宽泛的术语“存储器”和“存储”内。本文中的非暂态 存储介质明确地旨在包括配置成用于提供所公开的操作或使处理器执行所公 开的操作的任何非暂态专用或可编程硬件。非暂态存储介质还明确地包括其上 存储有硬件编码的指令,并任选地包括编码在硬件、固件或软件中的微代码指 令或序列的处理器。
实现本文中所描述的功能中的全部或部分的计算机程序逻辑以各种形式 具体化,这些形式包括但绝不限于,硬件描述语言、源代码形式、计算机可执 行形式、机器指令或微代码、可编程硬件以及各种中间形式(例如,由HDL 处理器、汇编器、编译器、链接器或定位器生成的形式)。在示例中,源代码 包括以各种编程语言或硬件描述语言实现的一系列计算机程序指令,各种编程 语言诸如,目标代码、汇编语言或高级语言(诸如,用于与各种操作系统或操 作环境一起使用的OpenCL、FORTRAN、C、C++、JAVA或HTML),硬件 描述语言诸如,Spice、Verilog和VHDL。源代码可以定义并使用各种数据结 构和通信消息。源代码可以是计算机可执行形式(例如,经由解释器)的,或 者源代码可以(例如,经由转换器、汇编器,或编译器)被转换为计算机可执 行的形式,或被转换为中间形式(诸如,字节代码)。在合适的情况下,上述 内容中的任一者可用于建立或描述合适的分立电路或集成电路,无论是序列的、 组合的、状态机或其他形式的。
在一个示例中,可以在相关联的电子设备的板上实现附图中的任意数量的 电路。板可以是通用电路板,此通用电路板可以固定电子设备的内部电子系统 的各种组件,并且可进一步地提供用于其他外围设备的连接器。更具体而言, 板可以提供电连接,系统的其他组件可以通过此电连接来电气地通信。任何适 当的处理器和存储器可基于特定的配置需要、处理需求和计算设计而适当地耦 合到板。其他组件(诸如,外部存储、附加传感器、用于音频/视频显示的控制 器和外围设备)可以经由电缆、作为插入卡而被附连至板,或可被集成到板本 身中。在另一示例中,附图中的电路可以被实现为独立模块(例如,具有配置成用于执行特定的应用或功能的相关联的组件和电路的设备)或实现为插入到 电子设备的专用硬件中的插入式模块。
请注意,对于本文中提供的众多示例,能以两个、三个、四个或更多个电 组件来描述交互。然而,仅处于清楚和示例的目的这样做。应当理解,还能以 任何合适的方式来合并以及重新配置系统。与类似的设计替代方案一起,能以 各种可能的配置来组合附图中所示出的组件、模块和元件中的任何一个,所有 的这些都在本说明书的广泛的范围内。在某些情况下,通过仅引用有限数量的 电元件来描述给定的流程集的功能中的一个或多个功能可能是更容易的。应当 理解,附图中的电路以及其教导是易于按比例缩放的,并且可以接纳大量的组 件以及更复杂/精制的布置和配置。相应地,所提供的示例不应当限制潜在地应 用于无数其他架构的电路的范围,也不应当抑制所述电路的广泛教导。
众多其他改变、替换、变体、更改和修改对本领域技术人员可以是确定的, 并且本公开旨在将所有此类改变、替换、变体、更改和修改涵盖为落在所附权 利要求书的范围内。
示例实现方式
以下示例涉及贯穿本公开所述的实施例。
一个或多个实施例可包括一种装置,所述装置包括:多维存储器;多个处 理元件,用于对一个或多个矩阵操作数执行矩阵操作,其中,所述多个处理元 件包括一个或多个矩阵处理器;其中,所述多个处理元件配置成用于:从所述 多维存储器接收矩阵数据,其中,所述矩阵数据与所述一个或多个矩阵操作数 相关联;从所述矩阵数据提取所述一个或多个矩阵操作数;标识与所述矩阵操 作相关联的矩阵例程;使用所述一个或多个矩阵操作数来执行所述矩阵例程; 以及基于所执行的矩阵例程来获取所述矩阵操作的结果。
在装置的一个示例实施例中,所述装置进一步包括矩阵例程存储器,其中, 所述矩阵例程存储器包括与一个或多个矩阵操作相关联的一个或多个矩阵例 程。
在装置的一个示例实施例中,所述多个处理元件进一步配置成用于从所述 矩阵例程存储器接收所述矩阵例程。
在装置的一个示例实施例中,所述多个处理元件进一步配置成用于:从主 机计算系统接收所述矩阵例程;以及将所述矩阵例程存储在所述矩阵例程存储 器中。
在装置的一个示例实施例中,所述矩阵例程包括与所述矩阵操作相关联的 一条或多条指令。
在装置的一个示例实施例中,所述矩阵例程的所述一条或多条指令包括与 所述一个或多个矩阵操作数相关联的一个或多个存储器位置的指示。
在装置的一个示例实施例中,用于从所述矩阵数据提取所述一个或多个矩 阵操作数的所述多个处理元件进一步配置成用于对所述矩阵数据分片以提取 所述一个或多个矩阵操作数。
在装置的一个示例实施例中,所述多个处理元件进一步配置成用于:执行 用于从所述矩阵数据提取所述一个或多个矩阵操作数的一条或多条指令。
在装置的一个示例实施例中,所述多个处理元件进一步配置成用于:执行 用于从所述多维存储器的一个或多个存储器位置获取所述矩阵数据的一条或 多条指令。
在装置的一个示例实施例中,所述矩阵操作包括一个或多个矩阵乘法操作。
在装置的一个示例实施例中,所述矩阵操作包括一个或多个卷积操作。
在装置的一个示例实施例中,所述矩阵操作与神经网络中的操作相关联。
一个或多个实施例可提供一种方法,所述方法包括:对一个或多个矩阵操 作数执行矩阵操作,其中,执行所述矩阵操作包括:从多维存储器接收矩阵数 据,其中,所述矩阵数据与所述一个或多个矩阵操作数相关联;从所述矩阵数 据提取所述一个或多个矩阵操作数;标识与所述矩阵操作相关联的矩阵例程; 使用所述一个或多个矩阵操作数、在矩阵处理器上执行所述矩阵例程;以及基 于由所述矩阵处理器执行的所述矩阵例程来获取所述矩阵操作的结果。
在方法的一个示例实施例中,所述方法进一步包括:从矩阵例程存储器接 收所述矩阵例程,其中,所述矩阵例程存储器包括与一个或多个矩阵操作相关 联的一个或多个矩阵例程。
在方法的一个示例实施例中,所述矩阵例程包括与所述矩阵操作相关联的 一条或多条指令。
在方法的一个示例实施例中,所述矩阵例程的所述一条或多条指令包括与 所述一个或多个矩阵操作数相关联的一个或多个存储器位置的指示。
一个或多个实施例可提供一种系统,所述系统包括:多个存储器元件,其 中,所述多个存储器元件包括多维存储器;以及多个处理元件,用于对一个或 多个矩阵操作数执行矩阵操作,其中,所述多个处理元件包括:主机处理器; 以及一个或多个矩阵处理芯片;其中,所述多个处理元件配置成用于:从所述 多维存储器接收矩阵数据,其中,所述矩阵数据与所述一个或多个矩阵操作数 相关联;从所述矩阵数据提取所述一个或多个矩阵操作数;标识与所述矩阵操 作相关联的矩阵例程;使用所述一个或多个矩阵操作数来执行所述矩阵例程; 以及基于所执行的矩阵例程来获取所述矩阵操作的结果。
在系统的一个示例实施例中,每一个矩阵处理芯片包括多个矩阵处理群集。
在系统的一个示例实施例中,每一个矩阵处理群集包括多个矩阵处理单元。
在系统的一个示例实施例中,每一个矩阵处理群集包括多个存储器资源块。
一个或多个实施例可包括至少一种机器可访问存储介质,具有存储于其上 的指令,当在机器上执行所述指令时,所述指令使所述机器:对一个或多个矩 阵操作数执行矩阵操作,其中,使所述机器执行所述矩阵操作的指令进一步使 所述机器:从多维存储器接收矩阵数据,其中,所述矩阵数据与所述一个或多 个矩阵操作数相关联;从所述矩阵数据提取所述一个或多个矩阵操作数;标识 与所述矩阵操作相关联的矩阵例程;使用所述一个或多个矩阵操作数、在矩阵 处理器上执行所述矩阵例程;以及基于由所述矩阵处理器执行的所述矩阵例程 来获取所述矩阵操作的结果。
在存储介质的一个示例实施例中,所述指令进一步使所述机器:从矩阵例 程存储器接收所述矩阵例程,其中,所述矩阵例程存储器包括与一个或多个矩 阵操作相关联的一个或多个矩阵例程。
在存储介质的一个示例实施例中,所述矩阵例程包括与所述矩阵操作相关 联的一条或多条指令。
在存储介质的一个示例实施例中,所述矩阵例程包括与所述一个或多个矩 阵操作数相关联的一个或多个存储器位置的指示。
在存储介质的一个示例实施例中,使所述机器从所述多维存储器接收所述 矩阵数据的指令进一步使所述机器从所述多维存储器的一个或多个存储器位 置获取所述矩阵数据。
一个或多个实施例可包括一种设备,所述设备包括用于执行前述示例中的 任一项中的方法的装置。
一个或多个实施例可包括至少一种机器可访问存储介质,具有存储于其上 的指令,当在机器上执行所述指令时,所述指令使所述机器:执行来自前述示 例中的任一项的方法或实现来自前述示例中的任一项的装置。
Claims (19)
1.一种装置,包括:
多个矩阵处理芯片(220a,…,220d),所述多个矩阵处理芯片集成在封装上,每个矩阵处理芯片(220a...220d)用于处理矩阵指令;
片间链路ICL(225),用于连接所述多个矩阵处理芯片(220a,…,220d)中的两个或更多个矩阵处理芯片,所述ICL用于启用所述两个或更多个矩阵处理芯片(220a,…,220d)之间的通信;
多个高带宽存储器HBM模块(240a,…240d),所述多个HBM模块(240a...240d)中的HBM模块(240a,…240d)用于存储用于由所述多个矩阵处理芯片(220a,…,220d)中的矩阵处理芯片(220a...220d)处理的矩阵数据;
所述矩阵处理芯片(220a...220d)包括:
主机接口(224),用于将所述矩阵处理芯片(220a...220d)耦合到主机处理器(260),
控制器(222),用于控制和/或管理矩阵例程的矩阵操作;以及
多个矩阵处理单元(234),耦合至所述控制器(222),所述多个矩阵处理单元配置成用于基于来自所述矩阵例程的矩阵乘法指令执行矩阵乘法操作,所述矩阵乘法指令指定包括第一输入矩阵A和第二输入矩阵B的矩阵操作数,所述矩阵处理单元(234)用于通过将所述第一输入矩阵A和所述第二输入矩阵B相乘来产生输出矩阵C。
2.如权利要求1所述的装置,其中,所述矩阵处理单元MPU(234)被包括在矩阵处理集群(230)中,所述装置进一步包括:
多个集群控制器(232)(232),每个集群控制器(232)用于控制对应的矩阵处理集群(230)内的矩阵操作。
3.如权利要求2所述的装置,其中,所述多个集群控制器(232)(232)使得所述矩阵乘法指令使用对应集群中的一个或多个MPU(234)被执行。
4.如权利要求1所述的装置,其中,至少一个矩阵处理单元(234)用于从所述多个HBM模块(240a...240d)中的HBM模块(240a,…240d)接收矩阵数据,其中,所述矩阵数据与所述矩阵乘法指令的所述矩阵操作数相关联。
5.如权利要求4所述的装置,其中,所述至少一个矩阵处理单元(234)用于使用所述矩阵操作数来执行所述矩阵乘法指令。
6.如权利要求5所述的装置,其中,所述矩阵乘法指令是所述矩阵例程的多个指令中的一个指令,所述矩阵例程用于由所述矩阵处理芯片(220a,…,220d)中的至少一个矩阵处理芯片执行。
7.如权利要求6所述的装置,其中,所述矩阵例程包括分布式矩阵乘法例程,所述分布式矩阵乘法例程用于由所述矩阵处理芯片(220a,…,220d)中的多个矩阵处理芯片执行。
8.如权利要求6所述的装置,其中,所述矩阵处理芯片(220a,…,220d)中的至少一个矩阵处理芯片用于从多个矩阵例程中标识所述矩阵例程。
9.如权利要求1所述的装置,其中,所述主机接口(224)用于将所述矩阵处理芯片(220a...220d)耦合至外围组件互连快速PCIe总线。
10.如权利要求6所述的装置,其中,所述矩阵例程的所述多个指令用于被执行以执行一个或多个卷积操作。
11.如权利要求10所述的装置,其中,所述矩阵例程与神经网络中的操作相关联。
12.如权利要求3所述的装置,其中,所述控制器(222)用于结合所述多个集群控制器(232)来控制和/或管理矩阵操作。
13.如权利要求1所述的装置,其中,所述多个HBM模块(240a…240d)包括耦合至所述多个矩阵处理芯片(220a,…,220d)中的第一矩阵处理芯片(220a...220d)的四个HMB模块(240a…240d)以及耦合至所述多个矩阵处理芯片(220a,…,220d)中的第二矩阵处理芯片(220a...220d)的不同的四个HBM模块(240a…240d)。
14.如权利要求1所述的装置,其中,所述控制器(222)包括芯片级控制器。
15.如权利要求14所述的装置,其中,所述芯片级控制器(222)用于结合所述多个集群控制器(232)来控制和/或管理矩阵操作。
16.一种矩阵处理系统,包括:
互连总线;
矩阵处理资源,通信地耦合至所述互连总线,所述主机处理资源包括:
多个矩阵处理芯片,用于处理矩阵操作,所述多个矩阵处理芯片通过通信信道彼此耦合;
主机处理器,通信地耦合至所述互连总线;以及
主机存储器,通信地耦合至所述互连总线,并与所述主机处理器耦合。
17.如权利要求16所述的矩阵处理系统,其中,所述通信信道在相邻的处理芯片之间提供双向通信。
18.一种矩阵处理芯片,包括:
多个矩阵处理集群,包括用于执行矩阵操作的处理资源;
高带宽存储器,用于存储矩阵操作数和其他矩阵数据;
控制器,用于控制和/或管理由所述矩阵处理芯片执行的矩阵操作;
主机接口,用于促进所述矩阵处理芯片与主机处理器之间的通信;以及
片间链路,用于促进所述矩阵处理芯片与其他矩阵处理芯片之间的通信。
19.如权利要求18所述的矩阵处理芯片,其中,所述多个矩阵处理集群使用二维网格互连拓扑来配置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/395,654 | 2016-12-30 | ||
US15/395,654 US10228937B2 (en) | 2016-12-30 | 2016-12-30 | Programmable matrix processing engine |
CN201810002887.6A CN108268425B (zh) | 2016-12-30 | 2018-01-02 | 可编程矩阵处理引擎 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810002887.6A Division CN108268425B (zh) | 2016-12-30 | 2018-01-02 | 可编程矩阵处理引擎 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115659113A true CN115659113A (zh) | 2023-01-31 |
Family
ID=60673822
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211088794.2A Pending CN115659113A (zh) | 2016-12-30 | 2018-01-02 | 可编程矩阵处理引擎 |
CN201810002887.6A Active CN108268425B (zh) | 2016-12-30 | 2018-01-02 | 可编程矩阵处理引擎 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810002887.6A Active CN108268425B (zh) | 2016-12-30 | 2018-01-02 | 可编程矩阵处理引擎 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10228937B2 (zh) |
EP (3) | EP4120071A1 (zh) |
JP (4) | JP7057093B2 (zh) |
CN (2) | CN115659113A (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10482155B2 (en) | 2016-12-30 | 2019-11-19 | Intel Corporation | Winograd algorithm on a matrix processing architecture |
US11748625B2 (en) | 2016-12-30 | 2023-09-05 | Intel Corporation | Distributed convolution for neural networks |
US10169296B2 (en) | 2016-12-30 | 2019-01-01 | Intel Corporation | Distributed matrix multiplication for neural networks |
EP3563304B1 (en) * | 2016-12-30 | 2022-03-09 | Intel Corporation | Deep learning hardware |
US10949496B2 (en) | 2016-12-30 | 2021-03-16 | Intel Corporation | Dimension shuffling using matrix processors |
US11055695B2 (en) * | 2017-06-12 | 2021-07-06 | Discover Financial Services | Automated system and method for testing bank identification numbers in a networked system |
US11036827B1 (en) * | 2017-10-17 | 2021-06-15 | Xilinx, Inc. | Software-defined buffer/transposer for general matrix multiplication in a programmable IC |
CN109086244A (zh) * | 2018-07-11 | 2018-12-25 | 中国人民解放军国防科技大学 | 一种基于向量处理器的矩阵卷积向量化实现方法 |
CN112213993A (zh) * | 2019-07-11 | 2021-01-12 | 航天长征化学工程股份有限公司 | 一种基于云端的控制系统和方法 |
US11520562B2 (en) | 2019-08-30 | 2022-12-06 | Intel Corporation | System to perform unary functions using range-specific coefficient sets |
US11372644B2 (en) | 2019-12-09 | 2022-06-28 | Meta Platforms, Inc. | Matrix processing instruction with optional up/down sampling of matrix |
CN111008513B (zh) * | 2019-12-16 | 2022-07-15 | 北京华大九天科技股份有限公司 | 一种平板显示版图物理验证中的单元矩阵合并方法 |
CN113536221B (zh) * | 2020-04-21 | 2023-12-15 | 中科寒武纪科技股份有限公司 | 运算方法、处理器以及相关产品 |
CN112162851B (zh) * | 2020-09-14 | 2022-12-13 | Oppo(重庆)智能科技有限公司 | dex预编译方法、装置、计算机设备及存储介质 |
US11748251B2 (en) | 2021-01-08 | 2023-09-05 | Microsoft Technology Licensing, Llc | Storing tensors in memory based on depth |
CN113377546B (zh) * | 2021-07-12 | 2022-02-01 | 中科弘云科技(北京)有限公司 | 通信避免方法、装置、电子设备和存储介质 |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5014235A (en) * | 1987-12-15 | 1991-05-07 | Steven G. Morton | Convolution memory |
JP2620487B2 (ja) * | 1992-05-22 | 1997-06-11 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・パッケージ |
JPH05346914A (ja) * | 1992-06-16 | 1993-12-27 | Matsushita Electron Corp | ニューロプロセッサ |
US5530661A (en) * | 1994-10-05 | 1996-06-25 | Winnov | Data bit-slicing apparatus and method for computing convolutions |
US5864689A (en) * | 1995-12-05 | 1999-01-26 | Advanced Micro Devices, Inc. | Microprocessor configured to selectively invoke a microcode DSP function or a program subroutine in response to a target address value of branch instruction |
US5721945A (en) * | 1996-05-06 | 1998-02-24 | Advanced Micro Devices | Microprocessor configured to detect a DSP call instruction and to direct a DSP to execute a routine corresponding to the DSP call instruction |
JPH10222487A (ja) * | 1997-02-04 | 1998-08-21 | Hitachi Ltd | 並列計算機上でのプログラム実行方法 |
US6507898B1 (en) * | 1997-04-30 | 2003-01-14 | Canon Kabushiki Kaisha | Reconfigurable data cache controller |
US6701028B1 (en) * | 2000-01-11 | 2004-03-02 | Applied Materials, Inc. | Method and apparatus for fast signal convolution using spline kernel |
US6944747B2 (en) * | 2002-12-09 | 2005-09-13 | Gemtech Systems, Llc | Apparatus and method for matrix data processing |
US7788466B2 (en) * | 2003-09-19 | 2010-08-31 | Nxp B.V. | Integrated circuit with a plurality of communicating digital signal processors |
US7571435B2 (en) * | 2003-09-29 | 2009-08-04 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using preloading of floating point registers |
US7475101B2 (en) * | 2003-09-29 | 2009-01-06 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using streaming |
US8495122B2 (en) * | 2003-12-29 | 2013-07-23 | Xilinx, Inc. | Programmable device with dynamic DSP architecture |
US7548892B2 (en) * | 2004-04-30 | 2009-06-16 | Microsoft Corporation | Processing machine learning techniques using a graphics processing unit |
US20060161612A1 (en) * | 2005-01-14 | 2006-07-20 | International Business Machines Corporation | Method and structure for a generalized cache-register file interface with data restructuring methods for multiple cache levels and hardware pre-fetching |
US8055878B2 (en) * | 2005-02-08 | 2011-11-08 | International Business Machines Corporation | Method and structure for skewed block-cyclic distribution of lower-dimensional data arrays in higher-dimensional processor grids |
US20060265445A1 (en) * | 2005-05-20 | 2006-11-23 | International Business Machines Corporation | Method and structure for improving processing efficiency in parallel processing machines for rectangular and triangular matrix routines |
US8392487B1 (en) * | 2007-03-29 | 2013-03-05 | Compass Electro-Optical Systems Ltd | Programmable matrix processor |
US8751556B2 (en) * | 2010-06-11 | 2014-06-10 | Massachusetts Institute Of Technology | Processor for large graph algorithm computations and matrix operations |
US9600281B2 (en) * | 2010-07-12 | 2017-03-21 | International Business Machines Corporation | Matrix multiplication operations using pair-wise load and splat operations |
JP5346914B2 (ja) | 2010-12-27 | 2013-11-20 | 京セラドキュメントソリューションズ株式会社 | 画像形成装置 |
US9960917B2 (en) * | 2011-12-22 | 2018-05-01 | Intel Corporation | Matrix multiply accumulate instruction |
US9317482B2 (en) * | 2012-10-14 | 2016-04-19 | Microsoft Technology Licensing, Llc | Universal FPGA/ASIC matrix-vector multiplication architecture |
JP5951570B2 (ja) * | 2013-09-13 | 2016-07-13 | 株式会社東芝 | 行列演算装置 |
US10061747B2 (en) * | 2014-05-07 | 2018-08-28 | Seagate Technology Llc | Storage of a matrix on a storage compute device |
US10255547B2 (en) * | 2014-12-04 | 2019-04-09 | Nvidia Corporation | Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system |
US9996350B2 (en) * | 2014-12-27 | 2018-06-12 | Intel Corporation | Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array |
US9606934B2 (en) * | 2015-02-02 | 2017-03-28 | International Business Machines Corporation | Matrix ordering for cache efficiency in performing large sparse matrix operations |
US20160239706A1 (en) * | 2015-02-13 | 2016-08-18 | Qualcomm Incorporated | Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks |
US9953394B2 (en) * | 2015-02-26 | 2018-04-24 | Tata Consultancy Services Limited | Methods and systems for designing correlation filter |
US9965318B2 (en) * | 2015-03-16 | 2018-05-08 | Tata Consultancy Services Limited | Concurrent principal component analysis computation |
US10949496B2 (en) | 2016-12-30 | 2021-03-16 | Intel Corporation | Dimension shuffling using matrix processors |
US11748625B2 (en) | 2016-12-30 | 2023-09-05 | Intel Corporation | Distributed convolution for neural networks |
US10198401B2 (en) | 2016-12-30 | 2019-02-05 | Intel Corporation | Max pooling in a matrix processing architecture |
US10169296B2 (en) | 2016-12-30 | 2019-01-01 | Intel Corporation | Distributed matrix multiplication for neural networks |
US20180188972A1 (en) | 2016-12-30 | 2018-07-05 | Intel Corporation | Matrix storage using data shifting memory |
US10482155B2 (en) | 2016-12-30 | 2019-11-19 | Intel Corporation | Winograd algorithm on a matrix processing architecture |
-
2016
- 2016-12-30 US US15/395,654 patent/US10228937B2/en active Active
-
2017
- 2017-10-12 JP JP2017198749A patent/JP7057093B2/ja active Active
- 2017-12-18 EP EP22195212.0A patent/EP4120071A1/en active Pending
- 2017-12-18 EP EP23219551.1A patent/EP4321993A3/en active Pending
- 2017-12-18 EP EP17208110.1A patent/EP3343356A1/en active Pending
-
2018
- 2018-01-02 CN CN202211088794.2A patent/CN115659113A/zh active Pending
- 2018-01-02 CN CN201810002887.6A patent/CN108268425B/zh active Active
-
2019
- 2019-01-31 US US16/264,483 patent/US10896039B2/en active Active
-
2022
- 2022-04-07 JP JP2022063915A patent/JP7401171B2/ja active Active
- 2022-09-08 JP JP2022142663A patent/JP7379779B2/ja active Active
-
2023
- 2023-12-05 JP JP2023205119A patent/JP2024026273A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US20190171450A1 (en) | 2019-06-06 |
JP2018139097A (ja) | 2018-09-06 |
EP3343356A1 (en) | 2018-07-04 |
EP4120071A1 (en) | 2023-01-18 |
JP7379779B2 (ja) | 2023-11-15 |
JP2022177096A (ja) | 2022-11-30 |
US20180189057A1 (en) | 2018-07-05 |
CN108268425A (zh) | 2018-07-10 |
US10896039B2 (en) | 2021-01-19 |
JP2024026273A (ja) | 2024-02-28 |
JP7401171B2 (ja) | 2023-12-19 |
US10228937B2 (en) | 2019-03-12 |
EP4321993A2 (en) | 2024-02-14 |
EP4321993A3 (en) | 2024-05-22 |
CN108268425B (zh) | 2023-10-13 |
JP2022095843A (ja) | 2022-06-28 |
JP7057093B2 (ja) | 2022-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108268425B (zh) | 可编程矩阵处理引擎 | |
US10482155B2 (en) | Winograd algorithm on a matrix processing architecture | |
US10922380B2 (en) | Distributed matrix multiplication for neural networks | |
CN108268933B (zh) | 矩阵处理架构中的最大池化 | |
EP3343355B1 (en) | Dimension shuffling using matrix processors | |
EP3346391A1 (en) | Distributed convolution for neural networks | |
EP3343563A1 (en) | Matrix storage using data shifting memory | |
TWI746865B (zh) | 深度視覺處理器 | |
US9886418B2 (en) | Matrix operands for linear algebra operations | |
EP3563304A1 (en) | Deep learning hardware | |
CN105190542B (zh) | 提供可伸缩计算结构的方法、计算设备和打印设备 | |
US10685081B2 (en) | Optimized data discretization | |
CN115605907A (zh) | 分布式图形处理器单元架构 | |
Naik et al. | Analysis of performance enhancement on graphic processor based heterogeneous architecture: A CUDA and MATLAB experiment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |