WO2018171717A1 - 面向神经网络处理器的自动化设计方法和系统 - Google Patents

面向神经网络处理器的自动化设计方法和系统 Download PDF

Info

Publication number
WO2018171717A1
WO2018171717A1 PCT/CN2018/080207 CN2018080207W WO2018171717A1 WO 2018171717 A1 WO2018171717 A1 WO 2018171717A1 CN 2018080207 W CN2018080207 W CN 2018080207W WO 2018171717 A1 WO2018171717 A1 WO 2018171717A1
Authority
WO
WIPO (PCT)
Prior art keywords
neural network
hardware
data
network model
unit
Prior art date
Application number
PCT/CN2018/080207
Other languages
English (en)
French (fr)
Inventor
韩银和
许浩博
王颖
Original Assignee
中国科学院计算技术研究所
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 中国科学院计算技术研究所 filed Critical 中国科学院计算技术研究所
Publication of WO2018171717A1 publication Critical patent/WO2018171717A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks

Abstract

本发明提出一种面向神经网络处理器的自动化设计方法和系统,包括对于要以硬件电路方式实现的神经网络模型,获取该神经网络模型的描述文件以及目标硬件电路的硬件资源约束参数;建立该神经网络模型的结构与目标硬件电路之间的映射以及该神经网络模型对应的控制指令流和地址访问流;然后根据所述映射和所述控制指令流和地址流生成与所述神经网络模型对应的神经网络处理器的硬件描述语言代码,以便在所述目标硬件电路上实现该神经网络处理器的硬件电路。该系统和方法实现了神经网络处理器的自动化设计,降低了神经网络处理器的设计周期,适应了神经网络技术网络模型更新快、运算速度要求快的特点。

Description

面向神经网络处理器的自动化设计方法和系统 技术领域
本发明涉及神经网络处理器体系结构技术领域,特别涉及面向神经网络处理器的自动化设计方法、装置及优化方法。
背景技术
深度学习及神经网络技术的飞速发展为大规模数据处理任务提供了新的解决途径,各种新型神经网络模型在处理复杂抽象问题上有着出色表现,其在视觉图像处理、语音识别及智能机器人等领域的新型应用层出不穷。
目前利用深度神经网络进行实时任务分析大多依靠大规模高性能处理器或通用图形处理器,这些设备成本高功耗大,面向便携式智能设备应用时,存在电路规模大、能量消耗高和产品价格昂贵等一系列问题。因此,针对嵌入式设备及小型低成本数据中心等应用领域中高能效实时处理的应用,采用专用神经网络处理器加速而不是软件的方式进行神经网络模型计算成为一种更有效的解决方案,然而神经网络模型的拓扑结构及参数设计会根据不同的应用场景而改变,另外神经网络模型的发展更迭速度很快,提供一种可以面向各种应用场景并覆盖各种神经网络模型的通用高效神经网络处理器非常困难,这为高层应用开发者针对不同应用需求设计硬件加速解决方案带来了极大不变。
目前现有的神经网络硬件加速技术包括专用集成电路(Application Specific Integrated Circuit,ASIC)芯片和现场可编程门阵列(Field Programmable Gate Array,FPGA)两种方式。在同等工艺条件下,ASIC芯片运行速度快且功耗低,但设计流程复杂、投片周期长、开发成本高,无法适应神经网络模型快速更新的特点;FPGA具有电路配置灵活、开发周期短的特点,但运行速度相对低,硬件开销及功耗相对较大。无论采用上述哪种硬件加速技术,均需要神经网络模型及算法开发人员在了解网络 拓扑和数据流模式的同时掌握硬件开发技术,包括处理器架构设计、硬件代码编写、仿真验证及布局布线等环节,这些技术对专注于研究神经网络模型及结构设计、而不具备硬件设计能力的高层应用开发人员而言开发难度较高。
发明内容
针对上述问题,本发明提供了一种面向神经网络处理器的自动化设计方法和系统,以使高层开发者能高效地进行神经网络技术应用开发。
本发明的目的是通过以下技术方案实现的:
一方面,本发明提供了一种面向神经网络处理器的自动化设计方法,该方法包括:
步骤1,对于要以硬件电路方式实现的神经网络模型,获取该神经网络模型的描述文件以及目标硬件电路的硬件资源约束参数;
步骤2,根据所述神经网络模型的描述文件与所述硬件资源约束参数,建立该神经网络模型的各组成单元与具体硬件结构之间的映射,
步骤3,根据所述映射和所述硬件资源约束参数生成与该神经网络模型对应的控制指令流和地址访问流;
步骤4,根据所述映射和所述控制指令流和地址流生成与所述神经网络模型对应的神经网络处理器的硬件描述语言代码,以便在所述目标硬件电路上实现该神经网络处理器的硬件电路。
上述方法中,所述硬件资源约束参数可包括下列中的一个或多个:目标硬件电路的工作频率、目标电路面积开销、目标电路功耗开销、所支持的数据精度、目标电路存储器相关参数。
上述方法中,所述神经网络模型的描述文件可包括基本属性、参数描述与连接信息三部分,其中所述基本属性包括层名称、层类型和层结构,所述参数描述包括输出层数、卷积核大小与步进大小,所述连接信息包括连接名称、连接方向、连接类型。
上述方法中,步骤2可包括根据所述神经网络模型的描述文件与所述硬件资源约束参数并基于预先建立的单元库来构建神经网络模型各组成单元与其具体硬件结构之间的对应关系,其中所述单元库由神经网络中可复 用的各种类型的单元构成,每个单元包括用于描述其硬件结构的硬件描述文件及配置脚本。在一些实施例中,该方法还可包括根据所述神经网络模型的描述文件与所述硬件资源约束参数对从所述单元库获取的单元的配置脚本进行设置来获得与该单元对应的硬件结构的描述文件。
上述方法中,所述单元库可包括神经元单元、累加器单元、池化单元、分类器单元、局部响应归一化单元、查找表单元、地址生成单元、控制单元。
上述方法中,所述步骤3可包括:
根据所述神经网络模型描述文件与硬件资源约束参数确定数据路径,并根据神经网络中间层特征确定数据资源共享方式;
根据硬件约束参数和神经网络特征生成存储器地址访问流,所述地址访问流通过有限状态机的方式描述;
将所述有限状态机映射为地址生成电路硬件描述语言。
上述方法中,还可包括:
根据神经网络模型的数据位宽、权重位宽以及目标硬件电路上存储器位宽来进行数据分割和存储映射,以确定数据的存储及访问。
在上述方法中,可通过下面的方式来确定数据的存储及访问:
步骤a,定义卷积核大小为k*k,步进为s,存储器宽度为d,数据图张数为t,如果k^2=d^2,将数据划分为k*k大小的数据块,数据宽度和存储器宽度一致,保证数据在存储器中连续存储;
步骤b,如果k^2!=d^2,并且s是k和d的最大公约数,将数据划分为s*s大小的数据块,保证在一张数据图中数据可在存储器中连续存储;
步骤c,若以上两项都不满足,则求出s、k、d的最大公约数f,将数据分割为大小为f*f的数据块,t张数据图交替存储。由此通过增加处理器数据存储局部性提高处理器的计算效率。
在又一方面,本发明提出一种面向神经网络处理器的自动化设计方法,包括:
步骤(1),获取神经网络模型描述文件、硬件资源约束参数,其中所述硬件资源约束参数包括硬件资源大小及目标运行速度;
步骤(2),根据所述神经网络模型描述文件与所述硬件资源约束参数, 从已构建的神经网络组件库中查找单元库,并根据所述单元库生成对应于所述神经网络模型的神经网络处理器的硬件描述语言代码;
步骤(3),将所述硬件描述语言代码转化为所述神经网络处理器的硬件电路。
在一些实施例中,所述神经网络处理器可包括存储结构、控制结构、计算结构。所述神经网络模型描述文件可包括基本属性、参数描述与连接信息三部分,其中所述基本属性包括层名称与层类型,所述参数描述包括输出层数、卷积核大小与步进大小,所述连接信息包括连接名称、连接方向、连接类型。所述神经网络可复用单元库可包括硬件描述文件及配置脚本两部分。所述神经网络可复用单元库还可包括神经元单元、累加器单元、池化单元、分类器单元、局部响应归一化单元、查找表单元、地址生成单元、控制单元。所述神经网络处理器可包括主地址生成单元、数据地址生成单元与权重地址生成单元。
在一些实施例中,该自动化设计方法还可包括根据用户指定的神经网络模型与硬件资源约束参数确定数据路径,并根据神经网络中间层特征确定数据资源共享方式;根据硬件配置与网络特征生成存储器的地址访问流,所述地址访问流通过有限状态机的方式描述;生成硬件描述语言代码,进而转化为所述神经网络处理器的硬件电路。在一些实施例中,该自动化设计方法还可包括根据所述神经网络模型、所述硬件资源约束参数、所述硬件描述语言代码,生成数据存储映射与控制指令流。
在又一个方面,本发明还提供了一种面向神经网络处理器的自动化设计系统,包括:
获取数据模块,用于获取神经网络模型描述文件、硬件资源约束参数,其中所述硬件资源约束参数包括硬件资源大小及目标运行速度;
生成硬件描述语言代码模块,用于根据所述神经网络模型描述文件与所述硬件资源约束参数,从已构建的神经网络组件库中查找单元库,并根据所述单元库生成对应于所述神经网络模型的神经网络处理器的硬件描述语言代码;
生成硬件电路模块,用于将所述硬件描述语言代码转化为所述神经网络处理器的硬件电路。
在一些实施例中,所述神经网络处理器可包括存储结构、控制结构、计算结构。所述神经网络模型描述文件可包括基本属性、参数描述与连接信息三部分,其中所述基本属性包括层名称与层类型,所述参数描述包括输出层数、卷积核大小与步进大小,所述连接信息包括连接名称、连接方向、连接类型。所述神经网络可复用单元库可包括硬件描述文件及配置脚本两部分。所述神经网络可复用单元库还可包括神经元单元、累加器单元、池化单元、分类器单元、局部响应归一化单元、查找表单元、地址生成单元、控制单元。所述神经网络处理器可包括主地址生成单元、数据地址生成单元与权重地址生成单元。
在一些实施例中,该自动化设计系统还可包括用于根据用户指定的神经网络模型与硬件资源约束参数确定数据路径,并根据神经网络中间层特征确定数据资源共享方式的装置;用于根据硬件配置与网络特征生成存储器的地址访问流的装置,所述地址访问流通过有限状态机的方式描述。在一些实施例中,该自动化设计装置还可包括用于根据所述神经网络模型、所述硬件资源约束参数、所述硬件描述语言代码,生成数据存储映射与控制指令流的装置。
在又一个方面,本发明还提供一种对上文所述的面向神经网络处理器的自动化设计方法的优化方法,包括:
步骤1,定义卷积核大小为k*k,步进为s,存储器宽度为d,数据图张数为t,如果k^2=d^2,将数据划分为k*k大小的数据块,数据宽度与存储器宽度一致,保证数据在存储器中连续存储;
步骤2,如果k^2!=d^2,并且步进s是k与存储器宽度d的最大公约数,将数据划分为s*s大小的数据块,保证在一张数据图中数据在存储器中连续存储;
步骤3,若以上两项都不满足,则求出步进s、k、存储器宽度d的最大公约数f,将数据分割为大小为f*f的数据块,t张数据图交替存储。
由以上方案可知,本发明的优点在于:
将神经网络模型映射为用于设计硬件电路的硬件描述语言代码,并根据硬件资源约束和网络特征自动优化所设计的硬件电路结构及数据存储方式,同时生成相应的控制指令流,实现了神经网络硬件加速器的硬件及 软件自动化协同设计,在缩短神经网络处理器设计周期的同时提高了神经网络处理器运算能效。
附图说明
以下参照附图对本发明的实施例作进一步说明,其中:
图1示出了神经网络常见的拓扑示意图;
图2示出了神经网络卷积操作示意框图;
图3示出了根据神经网络处理器常见结构示意框图;
图4示出了根据本发明一个实施例的神经网络处理器自动化设计系统的工作流程图;
图5示出了根据本发明一个实施例的部分神经网络可复用单元示意图;
图6示出了根据本发明一个实施例的地址生成电路接口示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
神经网络是对人脑结构和行为活动进行建模形成的数学模型,通常分为输入层、隐藏层和输出层等结构,每一层均由多个神经元节点构成,本层的神经元节点的输出值,会作为输入传递给下一层的神经元节点,逐层连接。神经网路本身具有仿生学特征,其多层抽象迭代的过程与人脑及其他感知器官有着类似的信息处理方式。图1示出了神经网络的常见拓扑示意图。神经网络多层结构的第一层输入值为原始图像(在本发明中的“原始图像”指的是待处理的原始数据,不仅仅是狭义的通过拍摄照片获得的图像),典型地,对于神经网络的每一层,可通过对该层的神经元节点值(在本文中也称为数据)和其对应的权重值进行计算来得到下一层的节点值。例如,假设x=x 1,x 2,x 3,...,x n表示神经网络中某一层的几个神经元节点,它们与下一层的节点y相连,
Figure PCTCN2018080207-appb-000001
表示对应连接的权重,则y的取值定义:y=x×w。因此,对于神经网络的各层都存在大量的以乘加运算为主的卷积操作。神经 网络中的卷积操作过程通常如图2所示:将一个K*K大小的二维权重卷积核对特征图进行扫描,在扫描过程中权重与特征图内对应的特征元素求内积,并将所有内积值求和,得到一个输出层特征元素。当每个卷积层具有N个特征图层时,会有N个K*K大小的卷积核与该卷积层内特征图进行卷积操作,N个内积值求和得到一个输出层特征元素。除了上述以向量乘加为主的卷积计算之外,神经网络运算还可包括池化、归一化计算等。考虑到神经网络运算的复杂度,通常采用硬件加速技术构建专用神经网络处理器实现神经网络计算。目前常用硬件加速技术包括ASIC或FPGA,为描述方便,下文以FPGA为例来进行说明。FPGA从设计的角度来说更加的灵活多变,例如可以采用Verilog HDL(Hard Description Language,硬件描述语言)、VHDL、或者其他硬件描述语言定义内部的逻辑结构即可实现定制的硬件电路。
常见的神经网络处理器都基于存储-控制-计算的逻辑结构。存储结构用于存储参与计算的数据、神经网络权重及处理器的操作指令等;控制结构包括译码电路与控制逻辑电路,用于解析操作指令,生成控制信号以控制处理器内数据的调度和存储以及神经网络的计算过程;计算结构负责神经网络计算操作。其中存储单元可以存储神经网络处理器外部传来的数据(例如,原始特征图数据)、已经训练好的神经网络权重、计算过程中产生的处理结果或中间结果、参与计算的指令信息等。图3为给出了常见的神经网络处理器系统101示意图,该神经网络处理器系统101架构包括输入数据存储单元102、控制单元103、输出数据存储单元104、权重存储单元105、指令存储单元106、计算单元107。其中输入数据存储单元102用于存储参与计算的数据,该数据包括原始特征图数据和参与中间层计算的数据;输出数据存储单元104存储计算得到的神经元响应值;指令存储单元106存储参与计算的指令信息,指令被解析为控制流来调度神经网络计算;权重存储单元105用于存储已经训练好的神经网络权重。控制单元103分别与输出数据存储单元104、权重存储单元105、指令存储单元106、计算单元107相连,控制单元103负责指令译码、数据调度、过程控制等工作,例如获得保存在指令存储单元106中的指令并且解析该指令,根据解析得到的控制信号来调度数据并控制计算单元进行神经网络的相关运算。计算单元107用于根据控制单元 103产生的控制信号来执行相应的神经网络计算。计算单元107与一个或多个存储单元相关联,计算单元107可以从与其相关联的输入数据存储单元102中的数据存储部件获得数据以进行计算,并且可以向与其相关联的输出数据存储单元104写入数据。计算单元107完成神经网络算法中的大部分运算,包括向量乘加操作、池化、归一化计算等等。
然而,如在背景技术部分提到的,神经网络模型的拓扑结构及参数设计会根据不同的应用场景或应用需求而改变,并且神经网络模型的发展更迭速度很快,这对于神经网络模型及算法的高层应用开发者带来极大的开发挑战,不仅需要针对不同应用需求快速设计或调整相关的硬件加速解决方案,而且要求高层开发人员在掌握神经网络模型及算法的同时了解例如FPGA等硬件开发技术,因此开发难度很大。
图4给出了根据本发明一个实施例的面向神经网络处理器的自动化设计系统,该系统包括硬件生成器和编译器;其中该硬件生成器可根据神经网络模型及硬件资源约束自动生成神经网络处理器的硬件描述语言代码,以供后续硬件设计人员利用已有硬件电路设计方法通过硬件描述语言生成神经网络处理器的硬件电路;而编译器可用于生成神经网络处理器电路结构的控制和数据调度指令流。
更具体地,首先该系统可获取神经网络模型描述文件和硬件资源约束参数。该神经网络模型描述文件用于描述根据具体应用需求所设计的神经网络模型,包括该神经网络模型的网络拓扑结构和各个运算层定义。例如,该神经网络模型的描述可包括神经网络层数、每层网络尺寸大小及结构、数据位宽、权重位宽、当前层功能属性、当前层输入层数、当前层输出层数、当前层卷积核大小、当前层步进大小,下一层连接属性等等。简言之,神经网络模型描述文件可包括基本属性、参数描述和连接信息三部分,其中基本属性可包括层名称、层类型、层结构等;参数描述可包括输出层数、卷积核大小、步进大小等;连接信息可包括连接名称、连接方向、连接类型等。神经网络每个层包括一个或多个单元,单元类型通常为基本的神经元单元、卷积单元、池化单元、归一化单元、循环单元等等。硬件资源约束参数用于描述可利用的硬件资源,例如可包括要实现该神经网络处理器的目标硬件电路的工作频率、目标电路面积开销、目标电路功耗开销、所支持的数据精度、 目标电路存储器大小等等。这些硬件资源约束参数可以放在一个约束文件中一起载入系统中。
在一些实施例中,为了避免重复设计以及适应各种神经网络模型的硬件实现,该系统还包括单元库,该单元度中可包含神经网络模型中各个可复用的基本单元;包括但不局限于:神经元单元、累加器单元、池化单元、分类器单元、局部响应归一化单元、查找表单元、地址生成单元、控制单元等等。图5中给出了一些单元库中可复用单元的示例。在单元库中的每个单元的具体硬件结构通过与其关联的硬件描述文件来限定。每个单元对应的硬件描述文件可以采用Verilog HDL或其他硬件描述语言来描述。优选地,每个单元还具有与其关联的配置脚本,可以通过该配置脚本来对每个单元的硬件结构进行适当调整;例如配置神经元单元中寄存器的位宽、配置加法树单元中包含的加法器的数量、配置池化单元中比较器的个数等等。
继续参考图4,在接收到神经网络模型描述文件和硬件资源约束文件之后,该系统中的硬件生成器可以进行模型映射,例如根据神经网络模型文件中描述的神经网络模型从预先定义的单元库中提取相应单元并结合硬件资源约束参数来构建用于实现该神经网络模型结构与具体硬件结构之间的对应关系,并生成对该硬件结构进行描述的硬件描述语言代码。例如可以根据目标电路面积确定进行一次神经网络计算的规模大小,例如可同时容纳几个层,几个神经元等,以及需要重复执行多少次才能得到最终运算结果。接着该硬件生成器参考神经网络模型结构与具体硬件结构之间的对应关系对从单元库获取的控制单元的状态机进行配置,例如何进行数据的调度和存储以及神经网络各单元的计算流程,从而生成控制单元。
该系统还包括编译器,其可以根据神经网络模型、逻辑资源约束及生成的硬件描述语言代码生成数据存储映射和控制指令流。在神经网络处理器工作过程中,需要自动获取片上和片外存储器数据的地址流,在该实施例中,存储器地址流可由编译器确定生成。编译器可以根据神经网络模型的数据位宽、权重位宽以及目标硬件支持的位宽来进行数据分割和存储映射,以确定存储器访问模式,其中存储器访问模式包括主访问模式、数据访问模式和权重访问模式等。编译器可以与硬件生成器进行交互,例如文本交互。
在一些实施例中,由于目标硬件电路的资源约束的限制,神经网络模型 在映射为硬件电路时无法按照其模型描述形式完整展开,由此可采用软硬件协同工作的方式优化数据存储及访问机制。首先,编译器分析神经网络处理器的计算吞吐量和片上存储器大小,将神经网络特征数据和权重数据划分为适当的数据块集中存储和访问;其次,依据计算单元规模、存储器及数据位宽在数据块内进行数据分割。神经网络的计算数据包括输入特征数据和训练好的权重数据,通过良好的数据存储布局可以减小处理器内部数据带宽并提高存储空间利用效率。在该实施例中,提供了一种针对待处理的神经网络数据的存储及访问的优化方式,主要包括下列步骤:
步骤a,定义卷积核大小为k*k,步进为s,存储器宽度为d,数据图张数为t,如果k^2=d^2,将数据划分为k*k大小的数据块,数据宽度和存储器宽度一致,保证数据在存储器中连续存储;
步骤b,如果k^2!=d^2,并且s是k和d的最大公约数,将数据划分为s*s大小的数据块,保证在一张数据图中数据可在存储器中连续存储;
步骤c,若以上两项都不满足,则求出s、k、d的最大公约数f,将数据分割为大小为f*f的数据块,t张数据图交替存储。由此通过增加处理器数据存储局部性提高处理器的计算效率。
继续参考图4,硬件生成器可以依据编译器确定的存储器访问模式来对从单元库提取的地址生成单元(AGU)进行相应配置以获得地址生成单元。在该实施例中,可以包括三种类型的地址生成单元:主地址生成单元、数据地址生成单元和权重地址生成单元,其中,主地址生成单元负责片内存储器与片外存储器之间的数据交换,数据地址生成单元负责从片上存储器读取数据至计算单元以及将计算单元中间计算结果和最终计算结果存储至存储单元这两部分数据交换,权重地址生成单元负责从片上存储器读取权重数据至计算单元。
图6为根据本发明一个实施例的地址生成电路通用结构示意图,该地址生成电路具有下述可配置的通用信号接口或参数,该接口包含的接口信号有:
起始地址信号,即数据首地址;
数据块尺寸信号,取一次数据的数据量;
存储器标志位信号,确定将数据存放的存储器编号;
工作模式信号,分为大卷积核取数据模式、小卷积核取数据模式、池化模式、全卷积模式等;
卷积核尺寸信号,定义卷积核大小;
长度信号,定义输出图片大小;
输入层数目信号,标记输入层数目;
输出层数目信号,标记输出层数目;
复位信号,该信号为1时,初始化地址生成电路;
写使能信号,指定被访问存储器进行写操作;
读使能信号,指定被访问存储器进行读操作;
地址信号,给出访问存储器地址;
结束信号,访问结束信号。
针对不同的目标网络,硬件生成器可从单元库中预先设置的上述通用结构中选取必要的参数构建地址生成单元并提供片上及片外存储器访问模式。上述参数可确保地址生成单元支持多种工作模式并保证在不同工作模式及神经网络传播过程中能够生成正确的读写地址流。在本发明的实施例中,可使用数据驱动的方式构建处理器架构,由此该地址生成电路不仅可提供访问地址而且可驱动不同神经层及各层数据块的执行。
在一些实施例中,该系统中由硬件电路生成器与编译器协同工作实现地址生成电路的设计可包括下列步骤:
步骤s1),由硬件生成器根据设计人员指定的神经网络模型和硬件约束参数来确定数据路径,并依据神经网络中间层特征确定数据资源共享方式;
步骤s2),由编译器根据硬件约束参数和神经网络特征生成存储器地址访问流,所述地址访问流由编译器通过有限状态机的方式描述;
步骤s3),由硬件生成器将所述有限状态机映射为地址生成电路硬件描述语言,从而可通过硬件电路设计方法将其映射为具体硬件电路。
继续参考图4,在建立模型映射、生成控制单元和地址生成单元之后硬件生成器可生成最终与所设计的神经网络模型对应的硬件描述语言,然后可通过已有硬件设计方法将该硬件描述语言转化为硬件电路,从而与所设计的神经网络模型对应的专用神经网络处理器的硬件电路。
在又一个实施例中,还提供了一种面向神经网络处理器的自动化设计 方法,包括:步骤1,对于要以硬件电路方式实现的神经网络模型,获取该神经网络模型的描述文件以及目标硬件电路的硬件资源约束参数;步骤2,根据所述神经网络模型的描述文件与所述硬件资源约束参数并基于预先建立的单元库来构建神经网络模型各组成单元与其具体硬件结构之间的对应关系,其中所述单元库由神经网络中可复用的各种类型的单元构成,每个单元包括用于描述其硬件结构的硬件描述文件及配置脚本;步骤3,根据所述映射和所述硬件资源约束参数生成与该神经网络模型对应的控制指令流和地址访问流;步骤4,根据所述映射和所述控制指令流和地址流生成与所述神经网络模型对应的神经网络处理器的硬件描述语言代码,以便在所述目标硬件电路上实现该神经网络处理器的硬件电路。
在又一个实施例中,还提供了一种面向神经网络处理器的自动化设计方法,该方法包括:对于要以硬件电路方式实现的神经网络模型,获取该神经网络模型的描述文件以及目标硬件电路的硬件资源约束参数;根据所述神经网络模型的描述文件与所述硬件资源约束参数并基于预先建立的单元库来构建神经网络模型各组成单元与其具体硬件结构之间的对应关系,其中所述单元库由神经网络中可复用的各种类型的单元构成,每个单元包括用于描述其硬件结构的硬件描述文件及配置脚本;根据所述映射和所述硬件资源约束参数生成与该神经网络模型对应的控制指令流和地址访问流;以及根据所述映射和所述控制指令流和地址流生成与所述神经网络模型对应的神经网络处理器的硬件描述语言代码,以便在所述目标硬件电路上实现该神经网络处理器的硬件电路。
在一些实施例中,所述硬件资源约束参数包括下列中的一个或多个:目标硬件电路的工作频率、目标电路面积开销、目标电路功耗开销、所支持的数据精度、目标电路存储器大小。在一些实施例中,该方法还包括根据所述神经网络模型的描述文件与所述硬件资源约束参数对从所述单元库获取的单元的配置脚本进行设置来获得与该单元对应的硬件结构的描述文件。在一些实施例中,该方法还包括根据所述神经网络模型描述文件与硬件资源约束参数确定数据路径,并根据神经网络中间层特征确定数据资源共享方式;根据硬件约束参数和神经网络特征生成存储器地址访问流,所述地址访问流通过有限状态机的方式描述;以及将所述有限状态机映射为 地址生成电路硬件描述语言。
在又一个实施例中,还提供了一种面向神经网络处理器的自动化设计装置,包括:
获取数据模块,用于获取神经网络模型描述文件、硬件资源约束参数,其中所述硬件资源约束参数包括硬件资源大小及目标运行速度;
生成硬件描述语言代码模块,用于根据所述神经网络模型描述文件与所述硬件资源约束参数,从已构建的神经网络组件库中查找单元库,并根据所述单元库生成对应于所述神经网络模型的神经网络处理器的硬件描述语言代码;
生成硬件电路模块,用于将所述硬件描述语言代码转化为所述神经网络处理器的硬件电路。
其中所述神经网络处理器可包括存储结构、控制结构、计算结构。所述神经网络模型描述文件可包括基本属性、参数描述与连接信息三部分,其中所述基本属性包括层名称与层类型,所述参数描述包括输出层数、卷积核大小与步进大小,所述连接信息包括连接名称、连接方向、连接类型。所述神经网络处理器可包括主地址生成单元、数据地址生成单元与权重地址生成单元。该装置还可包括用于执行下列步骤的模块:根据用户指定的神经网络模型与硬件资源约束参数确定数据路径,并根据神经网络中间层特征确定数据资源共享方式;根据硬件配置与网络特征生成存储器的地址访问流,所述地址访问流通过有限状态机的方式描述将所述有限状态机映射为地址,并生成硬件描述语言代码,进而可转化为所述神经网络处理器的硬件电路。
由上述实施例可以看出,根据本发明的面向神经网络处理器的自动化设计系统具有从神经网络模型映射为描述神经网络处理器的硬件代码、依据硬件资源约束优化处理器架构和自动生成控制流指令等功能,实现了神经网络处理器的自动化设计,降低了神经网络处理器的设计周期,适应了神经网络技术网络模型更新快、运算速度要求块、能量效率要求高的应用特点。
本说明书中针对“各个实施例”、“一些实施例”、“一个实施例”、或“实施例”等的参考指代的是结合所述实施例所描述的特定特征、结构、或性质包括在至少一个实施例中。因此,短语“在各个实施例中”、“在一些实施例中”、“在一个实施例中”、或“在实施例中”等在整个说明书中 各地方的出现并非必须指代相同的实施例。此外,特定特征、结构、或性质可以在一个或多个实施例中以任何合适方式组合。因此,结合一个实施例中所示出或描述的特定特征、结构或性质可以整体地或部分地与一个或多个其他实施例的特征、结构、或性质无限制地组合,只要该组合不是非逻辑性的或不能工作。另外,本申请附图中的各个元素仅仅为了示意说明,并非按比例绘制。
由此描述了本发明的至少一个实施例的几个方面,可以理解,对本领域技术人员来说容易地进行各种改变、修改和改进。这种改变、修改和改进意于在本发明的精神和范围内。

Claims (8)

  1. 一种面向神经网络处理器的自动化设计方法,该方法包括:
    步骤1,对于要以硬件电路方式实现的神经网络模型,获取该神经网络模型的描述文件以及目标硬件电路的硬件资源约束参数;
    步骤2,根据所述神经网络模型的描述文件与所述硬件资源约束参数并基于预先建立的单元库来构建神经网络模型各组成单元与其具体硬件结构之间的对应关系,其中所述单元库由神经网络中可复用的各种类型的单元构成,每个单元包括用于描述其硬件结构的硬件描述文件及配置脚本;
    步骤3,根据所述映射和所述硬件资源约束参数生成与该神经网络模型对应的控制指令流和地址访问流;
    步骤4,根据所述映射和所述控制指令流和地址流生成与所述神经网络模型对应的神经网络处理器的硬件描述语言代码,以便在所述目标硬件电路上实现该神经网络处理器的硬件电路。
  2. 根据权利要求1所述的方法,所述硬件资源约束参数包括下列中的一个或多个:目标硬件电路的工作频率、目标电路面积开销、目标电路功耗开销、所支持的数据精度、目标电路存储器大小。
  3. 根据权利要求1所述的方法,还包括根据所述神经网络模型的描述文件与所述硬件资源约束参数对从所述单元库获取的单元的配置脚本进行设置来获得与该单元对应的硬件结构的描述文件。
  4. 根据权利要求1所述的方法,所述步骤3包括:
    根据所述神经网络模型描述文件与硬件资源约束参数确定数据路径,并根据神经网络中间层特征确定数据资源共享方式;
    根据硬件约束参数和神经网络特征生成存储器地址访问流,所述地址访问流通过有限状态机的方式描述;
    将所述有限状态机映射为地址生成电路硬件描述语言。
  5. 根据权利要求1所述的方法,还包括:
    根据神经网络模型的数据位宽、权重位宽以及目标硬件电路上存储器位宽来进行数据分割和存储映射,以确定用于神经网络处理器的数据的存储及访问方式。
  6. 根据权利要求5所述的方法,其中通过下面的步骤来确定用于神经网 络处理器的数据的存储及访问方式:
    步骤a,定义卷积核大小为k*k,步进为s,存储器宽度为d,数据图张数为t,如果k^2=d^2,将数据划分为k*k大小的数据块,数据宽度和存储器宽度一致,保证数据在存储器中连续存储;
    步骤b,如果k^2!=d^2,并且s是k和d的最大公约数,将数据划分为s*s大小的数据块,保证在一张数据图中数据可在存储器中连续存储;
    步骤c,若以上两项都不满足,则求出s、k、d的最大公约数f,将数据分割为大小为f*f的数据块,t张数据图交替存储。
  7. 一种面向神经网络处理器的自动化设计方法,其特征在于,包括:
    步骤(1),获取神经网络模型描述文件、硬件资源约束参数,其中所述硬件资源约束参数包括硬件资源大小及目标运行速度;
    步骤(2),根据所述神经网络模型描述文件与所述硬件资源约束参数,从已构建的神经网络组件库中查找单元库,并根据所述单元库生成对应于所述神经网络模型的神经网络处理器的硬件描述语言代码;
    步骤(3),将所述硬件描述语言代码转化为所述神经网络处理器的硬件电路。
  8. 一种面向神经网络处理器的自动化设计系统,其特征在于,包括:
    获取数据模块,用于获取神经网络模型描述文件、硬件资源约束参数,其中所述硬件资源约束参数包括硬件资源大小及目标运行速度;
    生成硬件描述语言代码模块,用于根据所述神经网络模型描述文件与所述硬件资源约束参数,从已构建的神经网络组件库中查找单元库,并根据所述单元库生成对应于所述神经网络模型的神经网络处理器的硬件描述语言代码;
    生成硬件电路模块,用于将所述硬件描述语言代码转化为所述神经网络处理器的硬件电路。
PCT/CN2018/080207 2017-03-23 2018-03-23 面向神经网络处理器的自动化设计方法和系统 WO2018171717A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201710178281.3 2017-03-23
CN201710178281.3A CN107103113B (zh) 2017-03-23 2017-03-23 面向神经网络处理器的自动化设计方法、装置及优化方法

Publications (1)

Publication Number Publication Date
WO2018171717A1 true WO2018171717A1 (zh) 2018-09-27

Family

ID=59676152

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2018/080207 WO2018171717A1 (zh) 2017-03-23 2018-03-23 面向神经网络处理器的自动化设计方法和系统

Country Status (2)

Country Link
CN (1) CN107103113B (zh)
WO (1) WO2018171717A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3629251A4 (en) * 2017-12-29 2020-11-25 Cambricon Technologies Corporation Limited PROCESSING METHODS FOR NEURONAL NETWORK, COMPUTER SYSTEM AND STORAGE MEDIUM
WO2023027128A1 (ja) * 2021-08-26 2023-03-02 国立大学法人 東京大学 情報処理装置、及び記録媒体

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018176000A1 (en) 2017-03-23 2018-09-27 DeepScale, Inc. Data synthesis for autonomous control systems
CN107103113B (zh) * 2017-03-23 2019-01-11 中国科学院计算技术研究所 面向神经网络处理器的自动化设计方法、装置及优化方法
CN107341761A (zh) * 2017-07-12 2017-11-10 成都品果科技有限公司 一种深度神经网络的计算执行方法和系统
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US10671349B2 (en) 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
CN107633295B (zh) * 2017-09-25 2020-04-28 南京地平线机器人技术有限公司 用于适配神经网络的参数的方法和装置
CN109697507B (zh) * 2017-10-24 2020-12-25 安徽寒武纪信息科技有限公司 处理方法及装置
CN109726805B (zh) * 2017-10-30 2021-02-09 上海寒武纪信息科技有限公司 利用黑盒模拟器进行神经网络处理器设计的方法
US11521046B2 (en) 2017-11-08 2022-12-06 Samsung Electronics Co., Ltd. Time-delayed convolutions for neural network device and method
EP3614260A4 (en) 2017-11-20 2020-10-21 Shanghai Cambricon Information Technology Co., Ltd METHOD, DEVICE AND SYSTEM FOR PARALLEL PROCESSING OF TASKS, STORAGE MEDIUM AND COMPUTER DEVICE
CN110097179B (zh) * 2018-01-29 2020-03-10 上海寒武纪信息科技有限公司 计算机设备、数据处理方法及存储介质
CN110097180B (zh) * 2018-01-29 2020-02-21 上海寒武纪信息科技有限公司 计算机设备、数据处理方法及存储介质
CN111582464B (zh) * 2017-12-29 2023-09-29 中科寒武纪科技股份有限公司 神经网络处理方法、计算机系统及存储介质
CN108563808B (zh) * 2018-01-05 2020-12-04 中国科学技术大学 基于fpga的异构可重构图计算加速器系统的设计方法
CN108388943B (zh) * 2018-01-08 2020-12-29 中国科学院计算技术研究所 一种适用于神经网络的池化装置及方法
CN108154229B (zh) * 2018-01-10 2022-04-08 西安电子科技大学 基于fpga加速卷积神经网络框架的图片处理方法
CN108389183A (zh) * 2018-01-24 2018-08-10 上海交通大学 肺部结节检测神经网络加速器及其控制方法
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
JPWO2019181137A1 (ja) * 2018-03-23 2021-03-25 ソニー株式会社 情報処理装置および情報処理方法
CN108921289B (zh) * 2018-06-20 2021-10-29 郑州云海信息技术有限公司 一种fpga异构加速方法、装置及系统
US11215999B2 (en) 2018-06-20 2022-01-04 Tesla, Inc. Data pipeline and deep learning system for autonomous driving
US11361457B2 (en) 2018-07-20 2022-06-14 Tesla, Inc. Annotation cross-labeling for autonomous control systems
US11636333B2 (en) 2018-07-26 2023-04-25 Tesla, Inc. Optimizing neural network structures for embedded systems
US11562231B2 (en) 2018-09-03 2023-01-24 Tesla, Inc. Neural networks for embedded devices
CN110955380B (zh) * 2018-09-21 2021-01-12 中科寒武纪科技股份有限公司 访存数据生成方法、存储介质、计算机设备和装置
AU2019357615B2 (en) 2018-10-11 2023-09-14 Tesla, Inc. Systems and methods for training machine models with augmented data
WO2020078446A1 (zh) * 2018-10-19 2020-04-23 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN111079912B (zh) * 2018-10-19 2021-02-12 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
CN111079910B (zh) * 2018-10-19 2021-01-26 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN111079914B (zh) * 2018-10-19 2021-02-09 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
CN111079911B (zh) * 2018-10-19 2021-02-09 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
CN111079909B (zh) * 2018-10-19 2021-01-26 安徽寒武纪信息科技有限公司 运算方法、系统及相关产品
CN111079907B (zh) * 2018-10-19 2021-01-26 安徽寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111078293B (zh) * 2018-10-19 2021-03-16 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN111079916B (zh) * 2018-10-19 2021-01-15 安徽寒武纪信息科技有限公司 运算方法、系统及相关产品
CN111079924B (zh) * 2018-10-19 2021-01-08 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
US11196678B2 (en) 2018-10-25 2021-12-07 Tesla, Inc. QOS manager for system on a chip communications
CN111144561B (zh) * 2018-11-05 2023-05-02 杭州海康威视数字技术股份有限公司 一种神经网络模型确定方法及装置
CN112912837B (zh) * 2018-11-08 2024-02-13 北京比特大陆科技有限公司 神经网络编译方法、装置、设备、存储介质及程序产品
CN109491956B (zh) * 2018-11-09 2021-04-23 北京灵汐科技有限公司 一种异构协同计算系统
US11816585B2 (en) 2018-12-03 2023-11-14 Tesla, Inc. Machine learning models operating at different frequencies for autonomous vehicles
US11537811B2 (en) 2018-12-04 2022-12-27 Tesla, Inc. Enhanced object detection for autonomous vehicles based on field view
KR20200069901A (ko) 2018-12-07 2020-06-17 삼성전자주식회사 뉴럴 네트워크를 분할하는 방법 및 뉴로모픽 장치
CN111325311B (zh) * 2018-12-14 2024-03-29 深圳云天励飞技术有限公司 用于图像识别的神经网络模型生成方法及相关设备
CN109726797B (zh) * 2018-12-21 2019-11-19 北京中科寒武纪科技有限公司 数据处理方法、装置、计算机系统及存储介质
CN109685203B (zh) * 2018-12-21 2020-01-17 中科寒武纪科技股份有限公司 数据处理方法、装置、计算机系统及存储介质
US11610117B2 (en) 2018-12-27 2023-03-21 Tesla, Inc. System and method for adapting a neural network model on a hardware platform
CN109754084B (zh) * 2018-12-29 2020-06-12 中科寒武纪科技股份有限公司 网络结构的处理方法、装置及相关产品
CN111461296B (zh) * 2018-12-29 2023-09-22 中科寒武纪科技股份有限公司 数据处理方法、电子设备和可读存储介质
US10997461B2 (en) 2019-02-01 2021-05-04 Tesla, Inc. Generating ground truth for machine learning from time series elements
US11567514B2 (en) 2019-02-11 2023-01-31 Tesla, Inc. Autonomous and user controlled vehicle summon to a target
US10956755B2 (en) 2019-02-19 2021-03-23 Tesla, Inc. Estimating object properties using visual image data
CN109978160B (zh) * 2019-03-25 2021-03-02 中科寒武纪科技股份有限公司 人工智能处理器的配置装置、方法及相关产品
CN109739802B (zh) * 2019-04-01 2019-06-18 上海燧原智能科技有限公司 计算集群及计算集群配置方法
KR20200139909A (ko) * 2019-06-05 2020-12-15 삼성전자주식회사 전자 장치 및 그의 연산 수행 방법
CN112132271A (zh) * 2019-06-25 2020-12-25 Oppo广东移动通信有限公司 神经网络加速器运行方法、架构及相关装置
CN111126572B (zh) * 2019-12-26 2023-12-08 北京奇艺世纪科技有限公司 一种模型参数处理方法、装置、电子设备及存储介质
CN111339027B (zh) * 2020-02-25 2023-11-28 中国科学院苏州纳米技术与纳米仿生研究所 可重构的人工智能核心与异构多核芯片的自动设计方法
CN111488969B (zh) * 2020-04-03 2024-01-19 北京集朗半导体科技有限公司 基于神经网络加速器的执行优化方法及装置
CN111949405A (zh) * 2020-08-13 2020-11-17 Oppo广东移动通信有限公司 资源调度方法、硬件加速器及电子设备
CN111931926A (zh) * 2020-10-12 2020-11-13 南京风兴科技有限公司 一种用于卷积神经网络cnn的硬件加速系统及控制方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106022468A (zh) * 2016-05-17 2016-10-12 成都启英泰伦科技有限公司 人工神经网络处理器集成电路及该集成电路的设计方法
US20160328642A1 (en) * 2015-05-06 2016-11-10 Indiana University Research And Technology Corporation Sensor signal processing using an analog neural network
CN106447034A (zh) * 2016-10-27 2017-02-22 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
CN106529670A (zh) * 2016-10-27 2017-03-22 中国科学院计算技术研究所 一种基于权重压缩的神经网络处理器、设计方法、芯片
CN107103113A (zh) * 2017-03-23 2017-08-29 中国科学院计算技术研究所 面向神经网络处理器的自动化设计方法、装置及优化方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160328642A1 (en) * 2015-05-06 2016-11-10 Indiana University Research And Technology Corporation Sensor signal processing using an analog neural network
CN106022468A (zh) * 2016-05-17 2016-10-12 成都启英泰伦科技有限公司 人工神经网络处理器集成电路及该集成电路的设计方法
CN106447034A (zh) * 2016-10-27 2017-02-22 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
CN106529670A (zh) * 2016-10-27 2017-03-22 中国科学院计算技术研究所 一种基于权重压缩的神经网络处理器、设计方法、芯片
CN107103113A (zh) * 2017-03-23 2017-08-29 中国科学院计算技术研究所 面向神经网络处理器的自动化设计方法、装置及优化方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WANG, YING ET AL.: "DeePBurning: Automatic Generation of FPGA-based Learning Accelerators for the Neural Network Family", DESIGN AUTOMATION CONFERENCE, 9 June 2016 (2016-06-09), pages 1 - 6, XP055541159 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3629251A4 (en) * 2017-12-29 2020-11-25 Cambricon Technologies Corporation Limited PROCESSING METHODS FOR NEURONAL NETWORK, COMPUTER SYSTEM AND STORAGE MEDIUM
WO2023027128A1 (ja) * 2021-08-26 2023-03-02 国立大学法人 東京大学 情報処理装置、及び記録媒体

Also Published As

Publication number Publication date
CN107103113B (zh) 2019-01-11
CN107103113A (zh) 2017-08-29

Similar Documents

Publication Publication Date Title
WO2018171717A1 (zh) 面向神经网络处理器的自动化设计方法和系统
WO2018171715A1 (zh) 适用神经网络处理器的自动化设计方法及系统
CN109086867B (zh) 一种基于fpga的卷积神经网络加速系统
US20210295169A1 (en) Deep learning based identification of difficult to test nodes
US10872290B2 (en) Neural network processor with direct memory access and hardware acceleration circuits
Whatmough et al. FixyNN: Efficient hardware for mobile computer vision via transfer learning
Neto et al. LSOracle: A logic synthesis framework driven by artificial intelligence
Pestana et al. A full featured configurable accelerator for object detection with YOLO
US20210350233A1 (en) System and Method for Automated Precision Configuration for Deep Neural Networks
Petrica et al. Memory-efficient dataflow inference for deep CNNs on FPGA
JP2016051313A (ja) 半導体装置、画像セグメンテーション方法、および画像処理装置
US20210350230A1 (en) Data dividing method and processor for convolution operation
CN112070202B (zh) 一种融合图的生成方法、生成装置和计算机可读存储介质
Belabed et al. User driven FPGA-based design automated framework of deep neural networks for low-power low-cost edge computing
EP3805995A1 (en) Method of and apparatus for processing data of a deep neural network
de Prado et al. Automated design space exploration for optimized deployment of dnn on arm cortex-a cpus
Voss et al. Convolutional neural networks on dataflow engines
US20210312278A1 (en) Method and apparatus with incremental learning moddel
Whatmough et al. Fixynn: Energy-efficient real-time mobile computer vision hardware acceleration via transfer learning
Gan et al. High performance reconfigurable computing for numerical simulation and deep learning
CN116401552A (zh) 一种分类模型的训练方法及相关装置
Odetola et al. 2l-3w: 2-level 3-way hardware–software co-verification for the mapping of convolutional neural network (cnn) onto fpga boards
Gonçalves et al. Exploring data size to run convolutional neural networks in low density fpgas
Ali et al. RISC-V based MPSoC design exploration for FPGAs: area, power and performance
Wang et al. A 40.96-GOPS 196.8-mW digital logic accelerator used in DNN for underwater object recognition

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18770670

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18770670

Country of ref document: EP

Kind code of ref document: A1