CN110134379A - 计算机系统、编程方法及非暂态计算机可读介质 - Google Patents
计算机系统、编程方法及非暂态计算机可读介质 Download PDFInfo
- Publication number
- CN110134379A CN110134379A CN201810832509.0A CN201810832509A CN110134379A CN 110134379 A CN110134379 A CN 110134379A CN 201810832509 A CN201810832509 A CN 201810832509A CN 110134379 A CN110134379 A CN 110134379A
- Authority
- CN
- China
- Prior art keywords
- programmable gate
- gate array
- field programmable
- array device
- code
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- 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/04—Architecture, e.g. interconnection topology
-
- 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
-
- 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/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Geometry (AREA)
- Stored Programmes (AREA)
- Logic Circuits (AREA)
Abstract
本公开提供一种计算机系统、编程方法及非暂态计算机可读介质,用于编程现场可编程门阵列装置。用于深度学习程序的已训练模型被取得并被转换成设计抽象代码,设计抽象代码用于定义逻辑区块电路,以编程现场可编程门阵列装置。每一个逻辑区块电路代表执行深度学习程序的不同层之间的处理步骤的多个模块中的其中一个。
Description
技术领域
本发明涉及一种现场可编程门阵列装置,特别有关一种用于深度学习、人工神经网络以及机器学习应用的用于编程现场可编程门阵列装置的装置和方法。
背景技术
深度学习应用的执行通常需要分层式的软件堆迭,其相对而言使用和管理上来说较为复杂。深度学习应用包含无人驾驶应用、物体检测和辨识以及计算机辅助诊断系统,但不限定这些应用。因此,使用者于开发基于已训练模型的深度学习应用时,也需要安装及调用许多相关的软件元件,例如架构、程序库以及接口,以支持多种应用。此外,若需在已训练模型或堆迭的任何部分中做出更动,通常必须重建相关的依存关系。此外,随着结合深度学习应用的软件堆迭变得更复杂,额外的运算负担会实质地影响上述应用的效能。
从开发观点来看,复杂的软件堆迭对开发者增加额外的负担。举例来说,现今开发者需要熟悉针对不同情境应用的不同软件堆迭。因此,开发出能够解决不同情境的堆迭是耗时且困难的。从效能观点来看,由于额外的运算负担,对于各种情境应用而言,复杂的软件不仅是次佳的,额外的运算负担更可能随着对于特定应用要求更深的软件堆迭而增加(如,包含大量层数,且在每一层中支持更多种功能)。
为优化深度学习应用的执行,一种传统解决方法利用了特殊应用集成电路(application-specific integrated circuit,ASIC)。一般来说,特殊应用集成电路优化以实施特定任务,并因此改善该等任务的效能。然而,如上所述,深度学习模型的堆迭要求可能有很大的差异。特殊应用集成电路一般而言太过具体特定,导致适用性受到限制。因此,特殊应用集成电路仍无法解决广泛应用的需求。
另一种优化深度学习应用的执行的传统方法为利用现场可编程门阵列(fieldprogrammable gate array,FPGA)装置。由于现场可编程门阵列装置可重新编程,而能灵活地适应各种已训练模型和应用,因此受到开发者的注意。然而,现场可编程门阵列装置对于深度学习应用的编程并不简明易懂。因此,用于处理深度学习应用的开发方案普遍受到限制。一种解决方法为基于已知的软件堆迭提供深度学习的软件开发套件。然而,这导致了与上述讨论实质相同的堆迭管理以及运算负担的问题。另一种解决方法采用“一站式”(turn-key)方案,其中提供了工具套组供使用者支持某些深度学习应用。然而,这种对应用上的有限支持,导致和特殊应用集成电路相同的问题。
基于上述,本领域需要一种可以简化用于深度学习应用的现场可编程门阵列装置的编程的系统和方法,以能够充分发挥现场可编程门阵列装置的优点。
发明内容
本发明的实施例是关于用于编程现场可编程门阵列装置的计算机系统、编程方法以及计算机程序。一种例示性的编程方法包含取得用于深度学习程序的已训练模型,以及将已训练模型转换成设计抽象代码。其后,系统内的现场可编程门阵列装置可根据设计抽象代码来编程。设计抽象代码配置用以定义多个逻辑区块电路,其中多个逻辑区块电路的每一个代表多个模块中的其中一个模块。这些模块的每一个模块代表介于深度学习程序的不同层之间的处理步骤。在一些实作中,设计抽象代码为用以编程现场可编程门阵列装置的寄存器传输级代码。
在一些实施例中,转换步骤可包含指定通过多个逻辑区块电路的数据流程。接着,设计抽象代码指定与在现场可编程门阵列装置中的多个逻辑区块电路互相连接以提供该数据流程。
转换步骤也可包含识别已训练模型的处理步骤以及使各个处理步骤与这些模块中的其中一个相关联。其后,逻辑区块电路可被编码以对应与处理步骤相关联的模块。
在一些实施例中,方法可在编程之前包含附加步骤。举例来说,可对现场可编程门阵列装置的空间不足以支持设计抽象代码所需的多个逻辑区块电路作出判断。若做出上述判断,则在编程步骤期间,可以替代编程模式用于现场可编程门阵列装置。
一种替代编程模式包含识别对应于执行重复操作的逻辑区块电路的设计抽象代码,以获取重复的逻辑区块电路。接着,可将除了重复区域中的一个以外的重复区域删除。接着便可更新设计抽象代码以配置现场可编程门阵列装置,以使用这些重复逻辑区块电路中保留的一个来执行重复操作。
另一种替代编程模式包含识别对应于代表由系统中的另一元件执行操作的模块的逻辑区块电路的设计抽象代码,以再次获取重复的逻辑区块电路。接着,可将来自设计抽象代码的所有重复逻辑区块电路删除。设计抽象代码也可被更新以配置现场可编程门阵列装置,以利用其他元件实施重复操作。
其他实施例是关于一种计算机系统,其包含处理器、现场可编程门阵列装置以及使处理器执行上述方法的存储器。又其他实施例包含用以使计算机装置执行上述方法的非暂态计算机可读介质。
附图说明
图1为根据一实施例绘示的例示方法的步骤流程图;
图2示意地绘示根据一实施例的现场可编程门阵列的转换器系统;
图3示意地绘示根据一实施例的对应模型的串联模块和参数;
图4示意地绘示根据一实施例的以“完整”模式编程的现场可编程门阵列装置;
图5绘示利用图4的现场可编程门阵列装置的统示意图;
图6示意地绘示根据一实施例的以“节约”模式编程现场可编程门阵列装置;
图7绘示利用图6的现场可编程门阵列装置的统示意图;
图8示意地绘示根据一实施例的现场可编程门阵列装置以及其他处理器,其中该现场可编程门阵列装置以“混合”模式编程;
图9绘示利用图8的现场可编程门阵列装置以及其他处理器的系统示意图;
图10绘示一计算机系统实例,其中该计算机系统的元件彼此利用总线电力通信;以及
图11绘示一具有芯片组结构的计算机系统实例,其中该系统可用于执行不同实施例的系统和方法。
【符号说明】
100:方法
102、104、106:步骤
200:现场可编程门阵列转换器系统
202:编译器
204:除错器
206:分析器
208:模块数据库
300:串联模块
302:参数
400:现场可编程门阵列装置
402:栅极阵列
404:寄存器
500:系统
502:中央处理器
600:现场可编程门阵列装置
602:栅极阵列
604:寄存器
700:系统
702:中央处理器
800:现场可编程门阵列装置
802:栅极阵列
804:寄存器
850:其他处理器
852:逻辑区块
900:系统
902:中央处理器
904:混合处理系统
1000:系统
1002:总线
1004:存储器
1006:只读存储器
1008:随机存取存储器
1010:控制器
1012:存储装置
1014:模块
1016:模块
1018:模块
1020:输入装置
1022:输出装置
1024:通信接口
1025:显示器
1026:传感器
1028:快取存储器
1030:处理器
1031:现场可编程门阵列
1032:快闪存储器
1034:固件
1100:系统
1102:芯片组
1104:桥接器
1106:使用者接口元件
1108:通信接口
1110:处理器
1111:现场可编程门阵列
1112:芯片组
1114:输出装置
1116:存储装置
1118:随机存取存储器
具体实施方式
本发明参照附图图示来说明,其中在所有附图中使用相同的参考数字以指明相似或同等的元件。附图并未以实际大小绘示,而仅提供用以说明本发明。下面参照用于说明的实例应用描述了本发明的数个面向。应可理解的是,列举的许多具体细节、关系以及方法为用以提供对本发明的全面理解。然而,本领域技术人员可轻易地辨别本发明可不以一或多个具体细节或以其他方法来实施。在其他例子中,已知的结构或操作并未详细绘示以避免混淆本发明。本发明并非受限于所示的动作或事件的顺序,部分动作可以不同次序发生和/或和其他动作或事件同步发生。另外,实施本发明所描述的一个或多个态样或实施例时,并非所有在此示出的步骤皆为必需。
如上所述,利用现场可编程门阵列装置执行深度学习应用的传统解决方案通常是受到局限且复杂的。有鉴于是上述限制,各个实施例涉及一个在现场可编程门阵列装置中执行已训练模型的新方法,并因此降低一般为了用于深度学习而使用传统现场可编程门阵列装置编程解决方案会面临的复杂和运算负担(overhead)的问题。特别的是,各个实施例涉及执行一个用于深度学习应用的新的现场可编程门阵列转换器的系统和方法。此处讨论的系统和方法配置以将已训练模型转换为寄存器传输级(register-transfer level,RTL)代码或是其他设计抽象代码。其他抽象设计代码可包含Verilog或是OpenCL代码,但不以此为限。设计抽象代码可用以直接地配置现场可编程门阵列装置。通过上述配置,各个实施例中的新的现场可编程门阵列转换器不仅能减少复杂的开发过程,从而改善开发者体验,也能提供更简洁的模型,以调整欲使用的目标现场可编程门阵列装置。
图1绘示各个实施例的整体方法。图1为传输已训练模型至现场可编程门阵列装置的例示性方法100的步骤流程图。方法始于步骤102,在步骤102中,用于现场可编程门阵列装置的已训练模型可被取得。已训练模型可为任何类型的机器学习模型,以下仅举数例,包含基于决策树模型(decision tree based models)、基于线性回归模型(linearregression based models)、基于神经网络模型(neural network based models)、基于贝氏网络模型(Bayesian network based models)、基于支持向量机模型(support vectormachine based models)以及基于最近邻居模型(nearest neighbor based models),但不以此为限。所提供的机器学习模型也可为不同类型模型的组合。此外,该模型可以任何形式的类型提供。举例来说,神经网络模型可利用传统模型提供,如AlexNet、GoogleNet、ResNet、DenseNet或其他神经网络形式的类型。然而,在不同的实施例中,模型的类型和形式并不限定上述所述。虽然模型在一些实施例中可预处理和训练,但在其他的实施例中,由于已训练模型一般包含使用模型所需的全部文件,因此并不需预处理。举例来说,这些文件可包含提供如层数、每层的类型、内核数量、内核尺寸等参数的定制化架构的文件,以及提供如训练权重等参数的文件。
在步骤102中取得已训练模型后,模型可在步骤104中被转换为设计抽象代码。步骤104包含将在步骤102中取得的模型提供给现场可编程门阵列转换器系统进行处理。此现场可编程门阵列转换器系统可为执行深度学习应用的系统的一部分,或是一个全然独立的系统。进一步地,现场可编程门阵列转换器系统可作为软件元件、硬件元件,或是以软硬件元件的组合执行。
最后在步骤106中,在步骤104中取得的设计抽象代码可用以编程现场可编程门阵列装置。此种编程可以任何已知的现场可编程门阵列装置编程技术来实施。进一步地,此种编程可在执行深度学习应用的系统中实施,或是可一个全然独立的系统中实施。然而,后者的配置提供了优势,使得现场可编程门阵列装置可根据需要重新编程以支持不同的应用。
图2绘示根据不同实施例的现场可编程门阵列装置转换器系统的一个例示性执行。如图2所绘示,现场可编程门阵列转换器系统200可包含不同元件,如编译器202、除错器204以及分析器206。编译器202可配置用以将已训练模型编译(亦即转换)成设计抽象代码。除错器204可提供开发者查看和检阅编译器202的操作产生的错误讯息,并在之后对现场可编程门阵列装置的设计抽象代码实施任何必要的除错或是更新。分析器206可作为诊断工具提供开发者分析正在转换的模型的编译时间和执行时间表现。
在操作中,编译器202配置用以从现场可编程门阵列转换器系统200的模块数据库208中选择模块,其中每个模块与介于深度学习操作的特定层之间的操作步骤相关联。这些模块的每一个可用以配置以优化目标现场可编程门阵列装置内操作步骤的效率。在一些实作中,可针对正在使用的模型的类型对模块进行优化。实施模块的选择如下。当提供模型给现场可编程门阵列转换器系统200,编译器202首先对模型的组成实施分析,以将模块分解为串联的操作。接着,编译器202自数据库208对应的串联的操作中辨识串联的模块。最后,将适当参数连接每一个模块,以能够执行已训练模型的对应操作。
在不同的执行中,模块可包含将卷积滤波器应用于图像的卷积模块(C)、将启动函数应用于卷积模块的输出的线性整流函数模块(R)、将图像数据缩放到不同范围的正规化模块(N)、将卷积模块得到的图像数据进行向下采样的池化模块(P)、将卷积模块得到的以及池化模块向下采样得到的特征实施分类的完全连接模块(F)、选择要放弃训练的节点的丢弃模块(dropout module)(D),以及基于输入的值域通过归一化指数函数Softmax模块(S)产生输出,但不限于这些模块。然而,不同的实施例在这方面不受限制,且根据不同实施例的现场可编程门阵列转换器系统可配置以支持较上述更多或更少的模块类型。
从上述可看出,不同的模块执行不同的操作。一些模块可利用软件(算法)进行优化或满足硬件资源的限制。举例来说,卷积操作可被分解成许多向量操作,每个操作皆可独立运行。因此,可展开操作并平行执行不同的操作(亦即在同一时间下)。在另一个实例中,减少精密度也为一个改善表现效率的良好方法。此外,权重修剪、分群压缩以及矩阵分解为重要的算法级别方法,用以压缩已训练模型和加速推理。在一些实施例中,可使用硬件优化。举例来说,查找表可用以映射结果,而非实施计算。
编译过程因此导致欲由现场可编程门阵列装置串联执行的模块的集合。举例来说,图3绘示一个例示性串联模块300。为了易于说明,图3中的模块受限于上述所讨论的模块。然而,如上所述,不同实施例可配置以支持较上述列举更多或更少的模块类型。进一步地,如图3所绘示,串联模块300中的每一个模块可与一组参数302中的一个参数有关联。然而,在一些实作中,串联模块300中的一些或全部的模块可能不需要任何的参数。
如上所述对应图1,设计抽象代码一旦产生,即可对现场可编程门阵列装置或是电路板进行编程,并可在之后用以深度学习工作负荷或是应用。图4绘示一个例示性的已编程的现场可编程门阵列装置。如图4所绘示,现场可编程门阵列装置400包含已编程并用以定义串联的互连逻辑区块的栅极阵列402。特别的是,如图4所绘示,在栅极阵列402中的逻辑区块对应到图3的串联模块300。图3的参数302可被编程进入图4的一或多个寄存器404中,并根据需要和栅极阵列402中的逻辑区块互连。
接着可以使用编程的现场可编程门阵列装置400,如图5所绘示。图5示意地绘示实施深度学习工作负荷的系统500的数据流程。如图5所绘示,系统包含中央处理器502以及现场可编程门阵列装置400。在操作中,当中央处理器502遇到深度学习任务时,该任务被转送至现场可编程门阵列装置400。接着,现场可编程门阵列装置400根据其中编程的模型执行该任务。其后,现场可编程门阵列装置400将结果提供回中央处理器502。
在一些实作中,参数不需要存储在正被编程的现场可编程门阵列装置中。而是当需要实施深度学习任务时,这些参数可被传送至现场可编程门阵列装置中。另一方面,独立的存储器装置可被耦合至现场可编程门阵列装置以存储用于现场可编程门阵列装置的参数。
图5绘示现场可编程门阵列装置400的配置以及过程,两者皆为基于现场可编程门阵列装置仅在“完整”模式下操作的假设。也就是说,模型可完全地在现场可编程门阵列装置中执行。然而,在某些情况下,由于硬件的约束及限制,无法实现该配置。举例来说,现场可编程门阵列装置的栅极阵列可能没有足够栅极数量来定义在现场可编程门阵列装置中执行模型所需要的每一个模块及每个模块的实例。在一些例子中,将数个现场可编程门阵列装置串联起来以实施任务是可能的。在这样的配置中,每一个现场可编程门阵列装置会包含串联的一部分,而最后一个现场可编程门阵列装置将最终结果反馈回中央处理器。然而,在其他实例中,可能仅是多个现场可编程门阵列装置的系统内没有足够的物理空间。因此,在不同的实施例中,提供了替代的编程模式以克服这些阻碍。
在一些实施例中,如果可能的话,现场可编程门阵列装置可被编程在“节约”模式下操作。也就是说,如果需要用以执行模型的串联模块包含重复操作,则和重复操作有关的模块可在现场可编程门阵列装置中重新使用。以这种方式配置的现场可编程门阵列装置600示意地绘示于图6中。
如图6所绘示,现场可编程门阵列装置600包含已编程并用以定义串联的互连逻辑区块的栅极阵列602。特别的是,如图6所绘示,在栅极阵列602中的逻辑区块包含第一组602a以及第二组602b。第一组602a以及第二组602b对应于模型内重复的操作。参数可被编程进入一或多个寄存器604中,并根据需要和栅极阵列602中的逻辑区块互连。在现场可编程门阵列装置600中,第一组602a以及第二组602b可配置以根据需要多次实施它们各自的操作(如图6中指出的循环)。
接着可以使用编程的现场可编程门阵列装置600,如图7所绘示。图7示意地绘示实施深度学习工作负荷的系统700的数据流程。如图7所绘示,系统包含中央处理器702以及现场可编程门阵列装置600。在操作中,当中央处理器遇到深度学习任务时,该任务被转送至现场可编程门阵列装置600。接着,现场可编程门阵列装置600根据其中编程的模型执行该任务,并根据需要重复任务(如循环所指出)。其后,现场可编程门阵列装置600将结果提供回中央处理器702。
考虑到在一些实施例中,现场可编程门阵列装置的重复操作可以不同方式来管理。举例来说,在一些实施例中,现场可编程门阵列装置可具有硬线式的数据流程以确保数据流回至现场可编程门阵列装置中的适当的模块,上述可确保实施重复操作的正确数量。在其他实施例中,现场可编程门阵列装置的部分的栅极阵列可配置以定义用以控制及管理数据流程的逻辑。在其他实施例中,该过程可由中央处理器控制。也就是说,第一次传递的结果可提供给中央处理器,而中央处理器可传递结果回现场可编程门阵列装置做进一步处理,直到实施重复操作的数量。此外,上述技术的组合可用在不同的实施例中。
在一些实施例中,现场可编程门阵列装置可配置以跳跃(skip)或旁路(bypass)模块。举例来说,图6绘示了现场可编程门阵列装置配置以使用一或多次模块序列“CRNP”,接着使用一或多次模块序列“FRDS”。图4的现场可编程门阵列装置通过“旁路”可达成相同的结果。也就是说,如图4所绘示,使用了两次序列“CRNP”。其后,为了达成“FRDS”序列,现场可编程门阵列装置400可配置以向前跳跃至“F”、“R”、“D”以及“S”的下一个实例。在这样的配置中,现场可编程门阵列装置400可配置以接收用以控制如何以及那些模块被旁路的额外参数。在一些实施例中,重复以及旁路功能可在相同的现场可编程门阵列装置中一起执行。因此,回头参阅图4,若需要多于“CRNP”的两个实例,则现场可编程门阵列装置400可配置以重复一或多个可用的实例以提供所需的功能。
如上所述,在一些实施例中,模型可存储在处理来自串联的中央处理器的输入信号的现场可编程门阵列串联装置中,而最后一个现场可编程门阵列装置将最后结果回传至中央处理器。然而,在一些实施例中,提供了“混合”的模式。也就是说,可减少所需用于现场可编程门阵列装置的模块的数量以及逻辑电路区块,其中这样的模块已在系统他处执行。举例来说,系统中其他的现场可编程门阵列装置或加速器可能已经配置包含执行这样的模块的逻辑电路区块。在此情形下,现场可编程门阵列装置可配置与其他深度学习任务装置相互配合使用。这在图8和图9被示意地绘示出。
图8绘示已编程的现场可编程门阵列装置800,其用以与其他处理器850配合使用。现场可编程门阵列装置800包含已编程并用以定义串联的互连逻辑区块的栅极阵列802。参数可被编程进入一或多个寄存器804中,并根据需要和阵列802中的逻辑区块互连。其他处理器850也可为现场可编程门阵列装置、加速器或其他处理器。其他处理器850可包含用以执行在栅极阵列802的中逻辑区块无法实施的操作的逻辑区块852。在一些实作中,可加入额外的现场可编程门阵列装置、加速器或其他处理器,以实施现场可编程门阵列装置800或其他处理器850中的任何一个不可用的额外的操作。
已编程的现场可编程门阵列装置800和其他处理器850(以及其他任何的装置)可如图9中所绘示般使用。图9示意地绘示实施深度学习工作负荷的系统900的数据流程。如图9所绘示,系统包含中央处理器902以及混合处理系统904。在操作中,当中央处理器902遇到深度学习任务时,该任务被转送至混合处理系统904。任务一旦完成,混合处理系统904将结果提供回中央处理器902。
在系统900中,混合处理系统904由至少现场可编程门阵列装置800和其他处理器850(在此情况下配置为加速器)所组成。然而,如上所述对应图8,现场可编程门阵列装置800和其他处理器850可配置以和其他不同的装置配合使用。因此,如图9所绘示,混合处理系统904可包含一或多个额外的装置。
混合处理系统904操作如下述。在从中央处理器902接收到任务后,任务被传送到混合处理系统904内的其中一个元件。该元件接着实施一些操作,并将任务传送至混合处理系统904内的其他元件。重复这个过程直到任务完成。接着,完成任务的最后操作的元件可传送最后结果回中央处理器902。
举例来说,现场可编程门阵列装置800可实施任务的第一次操作,其他处理器850可执行任务的额外的操作。若任务完成后,其他处理器850可接着传送任务至中央处理器。若任务尚未完成(亦即需要更多操作),任务可根据完成任务所需,被传送回现场可编程门阵列装置800或混合处理系统904内的其他元件。
在某些实施例中,中央处理器可为混合处理系统的一部分。也就是说,中央处理器可包含有效率地实施某些操作的逻辑。因此,在一些例子中,数据可在中央处理器、现场可编程门阵列以及其他元件中间传送,以完成所有的操作。
在不同的实施例中,用于混合处理系统的不同元件的参数可以不同的方式存储。在一些例子中,每个元件的参数可与每个元件一起存储。在一些例子中,当需要实施操作时,可将这些参数传送至元件。这些参数可从混合操作系统内部源或外部源传送。举例来说,参数可由中央处理器提供,另一方面,独立的存储器装置可被耦合至混合处理系统以存储这些参数。
在一些实施例中,“混合”和“节约”模式可结合使用。也就是说,可根据需要重复不同元件提供的操作。举例来说,回头参阅图9,现场可编程门阵列装置800、其他处理器850或混合处理系统904中的其他任何元件实施的操作,可根据需要配置以重复操作来完成任务。
如上所述,可用不同方式管理重复的操作。举例来说,在一些使用混合处理系统的实施例中,混合操作系统的元件可具有元件之间的硬线式的数据流程以确保数据流回至适当的元件,以及确保实施重复操作的正确数量。在其他实施例中,混合处理系统的一或多个元件可配置以定义控制以及管理元件之间的数据流程的逻辑。在其他实施例中,过程可由中央处理器控制。也就是说,第一次传送的结果可由中央处理器提供,且中央处理器将结果传送回混合处理系统做进一步处理,直到实施重复操作的数量。此外,上述技术的组合可用在不同的实施例中。
在不同的实施例中,可预期能自动选择模式选择。也就是说,编译器可检查欲使用的现场可编程门阵列装置,并判断可行的模式与选择无须使用者输入的适当的模式。举例来说,若编译器判断现场可编程门阵列装置无法容纳整个模型(亦即“完整”模式是不可能的),则编译器可判断是否可执行“节约”和“混合”中的一或两种模式。若两种模式皆为可能,则编译器接着可配置以检查现场可编程门阵列装置和/或其他元件,以辨别那种模式预期能为所需操作提供最佳表现。另一方面,编译器可以优先顺序选择模式。
在一些实施例中,使用者可指定所欲或喜好的模式。举例来说,若“完整”模式是可能的,则使用者可指示编译器应配置以在此模式下自动使用现场可编程门阵列装置。在其他实例中,若使用者意识到某些元件已经存在于系统用于有效地执行某些操作,则使用者可要求混合模式。在一些例子中,使用者也可辨认欲借助利用的现有元件。然而,在其他例子中,编译器可配置以自动检测系统中的元件。如此一来,使用者可选择借助利用系统的现有功能。在其他实例中,使用者也可指定介于“节约”和“混合”之间的喜好的模式。
模式选择的实例如下述。编译器将分析已训练模型、检测到的元件(中央处理器、现场可编程门阵列或图形处理器)、所需的资源(存储器和寄存器)以及执行每一个模块最有效率的方法。举例来说,通常使用图形处理器以更有效地实施卷积操作。因此,若编译器检测到在计算机系统的图形处理器是可用的,则可选择混合模式以利用图形处理器来实施卷积操作。在其他实例中。若编译器判断现场可编程门阵列无法达到执行模型所需的一或多个模块的要求,则转换器可将现场可编程门阵列联合中央处理器、图形处理器或其他可用的现场可编程门阵列,以实施这些任务。
虽然上述有关系统的有限细节描述了例示性的实施例,但它们可以被执行或以其他方式使用,而这仅是便于说明。而是,不同的实施例可在包含上述更多的元件的系统中执行或以其他方式使用。例示性系统对应图10和图11被绘示出。然而,不同的实施例并不限定于此例示性系统。
图10绘示计算机系统1000的实例,其中计算机系统的元件利用总线1002彼此电力通信。系统1000包含处理单元1030(中央处理器或是处理器)以及系统总线1002,系统总线1002将不同的系统元件如系统存储器1004(例如只读存储器1006和随机存取存储器1008)耦合到处理器1030。系统1000可包含直接连接、紧密邻接或整合成部分处理器1030的高速缓冲存储器。系统1000可将来自存储器1004和/或存储装置1012数据复制到快取存储器1028以供处理器1030快速存取。如此一来,在等待数据的同时,快取存储器可为处理器1030提供表现提升。这些和其他模块可控制或配置来控制处理器1030以实施不同的动作。其他系统存储器1004也可用于使用。存储器1004可包含多个不同类型且不同效能特征的存储器。处理器1030可包含任何通用的处理器和硬件模块或软件模块,如嵌入存储装置1012中的第一模块1014、第二模块1016以及第三模块1018。硬件模块或软件模块配置以控制处理器1030和软件指令被结合到实际处理器设计中的专用处理器。处理器1030实质上可为自包含计算机系统,包含了多个内核或处理器、总线、存储器控制器、快取存储器等等。多内核处理器可为对称或非对称。
除了处理器1030外,其他处理器可整合进系统1000中。举例来说,如图10所绘示,可提供现场可编程门阵列1031或其他处理器。如图10所绘示,现场可编程门阵列1031也可耦合至系统总线1002以使现场可编程门阵列1031和系统1000内的其他元件通信以及互动。然而,在一些实施例中,现场可编程门阵列1031可耦合至系统1000内的其他元件。
为让使用者能与计算机装置1000互动,提供了输入装置1020作为输入机构。输入装置1020可包含用于语音的麦克风、用于手势或图像输入的触摸屏、键盘、鼠标、动作输入等等。在一些实例中,多模式系统可让使用者能够提供多种类型的输入以和系统1000通信。在这样的实例中,同样可提供输出装置1022。通信接口1024可监督以及管理使用者输入和系统输出。举例来说,可通过显示器1025来输出系统。
存储装置1012可为非易失性存储器以存储计算机可存取的数据。存储装置1012可为磁性卡匣、快闪存储卡、固态存储器装置、数字多功能光盘、卡匣、随机存取存储器1008、只读存储器1006,以及上述的混合。
控制器1010可为系统1000上专用的微控制器或是处理器,例如基板管理控制器。在一些例子中,控制器1010可为智能管理平台接口的一部分。此外,在一些例子中,控制器1010可被嵌入系统1000的主机板或是主要电路板中。控制器1010可管理系统管理软件和平台硬件之间的接口。控制器1010也可与不同系统装置以及元件(内部和/或外部),如控制器或周边元件通信,进一步如下述。
控制器1010可产生对通知、警报和/或事件的特定响应,以及和远端装置或元件(如电子邮件讯息、网络讯息等等)通信以产生用于自动硬件回复程序的指示或命令等等。管理者也可与控制器1010远端通信以启动或是实施特定的硬件回复程序的程序或操作,其操作进一步如下述。
控制器1010也可包含系统事件记录控制器和/或存储器用以管理和维护控制器1010接收的事件、警报以及通知。举例来说,控制器1010或系统事件记录控制器接收来自一或多个装置和元件的警报和通知,并维护系统事件存储元件内的警报和通知。
快闪存储器1032可为系统1000使用并用于存储和/或数据传送的电子非易失性计算机存储介质或芯片。快闪存储器1032可被电性擦除和/或重新编程。快闪存储器1032,举例来说,可包含可擦除可编程式只读存储器(erasable programmable read-only memory,EPROM)、电子可擦除可编程式只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读存储器、非易失性随机存取存储器或互补式金属氧化物半导体场效晶体管。当系统1000以及指定用于固件1034的一组配置首次通电时,快闪存储器1032可存储系统1000执行的固件1034。快闪存储器1032也可存储固件1034使用的配置。
固件1034可包含基本输入输出系统或其同等设备,如可扩展固件接口或统一可扩展固件接口。每一次系统1000启动时,固件1034可做为顺序程序被加载或执行。固件1034可基于该组配置来识别、初始化以及测试系统1000中存在的硬件。固件1034可在系统1000上实施自测试,如开机自测试(Power-on-Self-Test,POST)。该自测试可测试不同硬件元件的功能,如硬盘、光学读取装置、冷却装置、存储器模块、扩展卡等等。固件1034可处理及分配在存储器1004、只读存储器1006、随机存取存储器1008,和/或存储装置1012中的区域,以存储操作系统。固件1034可加载启动载入器和/或操作系统,并将系统1000的控制权交给操作系统。
系统1000的固件1034可包含固件配置,其定义了固件1034是如何控制系统1000内不同的硬件元件。固件配置可决定系统1000内的不同硬件元件的启动顺序。固件1034可提供接口,如统一可扩展固件接口,使得能够设置多种不同的参数,而这些参数与固件默认配置中的参数不同。举例来说,使用者(如管理者)可使用固件1034以指定时序及总线的速度、定义连接到系统1000的周边设备、设置健康监控(如风扇速度以及中央处理器温度限制)和/或提供其他多种影响整体表现及系统1000电量使用的其他参数。虽然固件1034被绘示为存储在快闪存储器1032中,但本领域技术人员可轻易辨别固件1034可存储在其他存储器元件中,如存储器1004或只读存储器1006。
系统1000可包含一或多个传感器1026。一或多个传感器1026可包含,举例来说,一或多个温度传感器、热传感器、氧气传感器、化学传感器、噪声传感器、电流传感器、电压检测器、空气流量传感器、流量传感器、红外线温度计、热通量传感器、温度计、高温计等等。举例来说,一或多个传感器1026可藉由总线1002和处理器、快取存储器1028、快闪存储器1032、通信接口1024、显示器1025、存储器1004、只读存储器1006、随机存取存储器1008、控制器1010以及存储装置1012通信。一或多个传感器1026也可藉由一或多个不同方法与系统内其他元件通信,如内部集成电路、通用型输出等等。系统1000上不同类型的传感器(如传感器1026)也可向控制器汇报参数,如冷却风扇速度、电源状态、操作系统状态、硬件状态等等。
图11绘示具有可用于执行上述方法或操作,以及产生和显示图形化使用者接口的芯片组架构的计算机系统1100的实例。计算机系统1100可包含用以执行公开技术的计算机硬件、软件以及固件。系统1100可包含处理器1110,该处理器代表能够处理配置以实施识别计算的软件、固件或硬件的多种物理和/或逻辑上不同的资源。处理器1110能和控制处理器1110的输入与输出的芯片组1112通信。在这样的实例中,芯片组1102将信息输出至输出装置1114,如显示器,且可读取和写入讯息到存储装置1116。系统1100也可包含额外的处理器,如现场可编程门阵列1111。现场可编程门阵列1111也可与芯片组1112通信以控制现场可编程门阵列1111的输入与输出。然而,在其他的实施例中,现场可编程门阵列可连接至系统1100内的其他元件。
举例来说,存储装置1116可包含磁性介质以及固态介质。芯片组1102也可读取来自随机存取存储器1118的数据并将数据写入随机存取存储器1118中。可提供用于接合多种使用者接口元件1106的桥接器1104以接合芯片组1102。使用者接口元件1106可包含键盘、麦克风、触控检测和处理电路以及指向装置,如鼠标。
芯片组1102也可与一或多个具有不同物理界面的通信接口1108接合。这样的通信接口可包含用于有线和无线局域网络、用于宽带无线网络以及用于个人局域网络的接口。进一步地,机器可接收通过使用者接口元件1106来自使用者的输入并利用处理器1110来解释这些输入以执行适当的功能,如浏览功能。
此外,芯片组1102也可与固件1112通信,当通电时固件1112可由计算机系统1100执行。固件1112可基于一组固件配置来辨识、初始化以及测试系统1100中存在的硬件。固件1112可在系统1100上实施自测试,如开机自测试。该自测试可测试不同硬件元件1102-1108的功能。固件1112可处理及分配在随机存取存储器1118中的区域,以存储操作系统。固件1112可加载启动载入器和/或操作系统,并将系统1100的控制权交给操作系统。在一些例子中,固件1112可与硬件元件1102-1110以及1114-1118通信。在此,固件1112可藉由芯片组1102和/或一或多个其他元件来与硬件元件1102-1110以及1114-1118通信。在一些例子中,固件1112可与硬件元件1102-1110以及1114-1118直接通信。
可理解的是,在示例的系统1000和1100可具有多于一个的处理器,或为网络连接在一起的计算机装置的群组或丛集的一部分,以提供更佳的处理能力。
为了明确解释,在一些实施例中,本公开可能会呈现为包含个别功能区块、包含功能区块、装置和/或装置元件、体现在软件或软硬件组合的步骤或常规。
在一些实施例中,计算机可读存储装置、介质以及存储器可包含位串流等的有线或无线信号。然而,当提及时,非暂态计算机可读存储介质明确地排除如能量、载波信号、电磁波以及信号本身的介质。
根据上述实施例的方法可以使用从计算机可读介质存储或以其他方式获得的计算机可执行指令来执行。这些指令可包含,举例来说,产生或以其他方式配置成通用计算机、专用计算机或专用处理装置,以实施某一功能或一组功能的指令或数据。部分所使用的计算机资源可经由网络存取。计算机可执行指令,举例来说,可为二进位及中间格式指令,如组合语言、固件或是原始码。
根据这些公开的装置执行方法可包含硬件、固件和/或软件,且可采取各种形式因素。这些形式因素的典型例子可包含笔记型计算机、智能型移动电话、小型形式因素个人计算机、个人数字助理、机架式装置、独立装置等等。本文所述的功能也可嵌入至周边设备或附加卡中。经由进一步的实例,这样的功能也可在不同芯片中的电路板上执行,或是在个别装置中执行不同的过程。
不同实施例可在广泛不同的操作环境中进一步实施,其中在一些例中可包含一或多个服务器计算机、使用者计算机或是可用于操作任何多个应用中的计算机装置。使用者或客户装置可包含多种通用计算机的任何一种,如运行标准操作系统的桌上型计算机或是笔记型计算机,以及运行移动软件的蜂窝式、无线或是手持装置,并且能够支持多种网络和信息协议。这样的系统也可包含多种运行任何多种商业可用操作系统的许多工作站,以及包含其他已知用途的应用,如开发以及数据库管理。这些装置也可包含其他电子装置,如虚拟端子、精简型计算机、游戏系统以及其他能够藉由网络通信的装置。
就实例或其部分而言,其在硬件中执行,而本公开可以下述技术一个或多个组合来执行:具有逻辑门以在数据信号上执行逻辑功能的离散逻辑电路;具有适当组合的逻辑门的特定应用集成电路;可编程的硬件,如可编程逻辑门阵列、现场可编程门阵列等等。
大多数实例使用本领域技术人员熟悉的至少一网络,藉由利用多种商业可用协议,如传输控制协议/互联网协议、开放系统连接、文件传输协议、通用型随插即用协议、网络文件系统、网络文件共享系统、AppleTalk等等,来支持通信。举例来说,网络可为局域网络、广域网络、虚拟私人网络、互联网、企业内部网络、企业外部网络、公众交换电话网络、红外线网络、无线网络以及上述任何组合。
根据这些技术的装置执行方法可包含硬件、固件和/或固件,且可采取各种形式因素。这些形式因素的典型例子可包含服务器计算机、笔记型计算机、智能型移动电话、小型形式因素个人计算机、个人数字助理等等。本文所述的功能也可嵌入至周边设备或附加卡中。经由进一步的实例,这样的功能也可在不同芯片中的电路板上执行,或是在个别装置中执行不同的过程。
在使用网页服务器的实例中,网页服务器可运行多种服务器或是中间应用,包含超文件传输协议服务器、文件传输协议服务器、共同网关接口服务器、数据服务器、Java服务器以及商业应用服务器。为响应使用者装置的要求,网页服务器也能够执行程序或是指令码。举例来说,网页服务器可执行一或多个网络应用,这些网络应用可以一或多个以任何编程语言,如C、C#或C++,或任何指令码语言,如Perl、Python或TCL以及上述组合的指令码或是程序来执行。网页服务器也可包含数据库服务器,包括那些在公开市场上为商业可用的数据库服务器。
如上所述,服务器系统可包含多种数据存储以及其他存储器和存储介质。这些可留驻在多个位置,如在一或多个计算机区域(和/或留驻)的存储介质,或是远离网络上的计算机。在一组特别的实例中,信息可留驻在本领域技术人员熟悉的存储局域网络。类似地,任何用以实施归属于计算机、服务器或其他网络装置功能的必要的文件,可视情况存储在区域和/或远端。在系统包含计算机化装置的情形下,每一个这样的装置可包含能够藉由总线电性连接,且利用单元包括如至少一个中央处理器、至少一个输入装置(如鼠标、键盘、控制器、触控显示单元或按键),以及至少一个输出装置(如显示装置、打印机或扬声器)的硬件单元。这样的系统也可包含一或多个存储装置,如磁盘机、光学存储装置、固态存储装置(如随机存取存储器或只读存储器)、移动介质装置、存储卡以及快闪存储卡等等。
用于包含代码或代码的一部分的存储介质和计算机可读介质可包含任何所属领域中已知或已被使用的适当介质,包括存储介质以及计算机介质。存储介质和计算机介质可包含用以存储及/和传送数据或信息的移动和非移动介质,但不意欲限定这些介质。移动和非移动介质包含随机存取存储器、只读存储器、可擦除可编程式只读存储器、电子可擦除可编程式只读存储器、快闪存储器或其他存储器技术、光盘只读存储器、数字多功能光盘或其他光学存储、磁性卡匣、磁带、磁盘存储或其他磁盘存储装置。移动或非移动介质可用以存储系统装置可存取的想要的信息。数据和信息可包含计算机可读指令、数据结构、程序模块或其他数据。基于本文所提供的技术和教示,本领域技术人员可理解可以其他方式和/或方法执行本公开的多种面向。
因此,说明书和图示将被认为是说明性的而非限制性的。然而,在不偏离如权利要求中所阐述的本专利申请的更广泛的精神和范围的情况下,可对其进行各种修饰和改变。
Claims (10)
1.一种编程方法,包含:
取得用于深度学习程序的已训练模型;
转换该已训练模型为设计抽象代码;
根据该设计抽象代码,在系统中编程现场可编程门阵列装置,
其中,该设计抽象代码包含在该现场可编程门阵列装置中用以编程多个逻辑区块电路的代码,这些逻辑区块电路的每一个代表多个模块中的一个,这些模块用于执行于该深度学习程序的不同层间的处理步骤。
2.如权利要求1所述的编程方法,其中转换的操作包含指定通过这些逻辑区块电路的数据流程,且其中设计抽象代码指定该现场可编程门阵列装置中的这些逻辑区块电路的互连以提供该数据流程。
3.如权利要求1所述的编程方法,还包含:
在编程之前,判断该现场可编程门阵列装置不足以用于该设计抽象代码所需的这些逻辑区块电路;
相应于该现场可编程门阵列装置不足以用于该设计抽象代码所需的这些逻辑区块电路的判断,在编程期间,实施用于该现场可编程门阵列装置的替代编程模式。
4.一种计算机系统,包含:
处理器;
现场可编程门阵列装置,通信耦接至该处理器;以及
存储器,用于存储使该处理器执行多个步骤的多个指令,这些步骤包含:
取得用于深度学习程序的已训练模型;
转换该已训练模型为设计抽象代码;以及
根据该设计抽象代码,编程该现场可编程门阵列,
其中,该设计抽象代码包含在该现场可编程门阵列装置中用以编程多个逻辑区块电路的代码,这些逻辑区块电路的每一个代表多个模块中之一的个,这些模块用于执行于该深度学习程序的不同层间的处理步骤。
5.如权利要求4所述的计算机系统,其中该设计抽象代码包含寄存器传输级代码。
6.如权利要求4所述的计算机系统,其中转换的操作包含指定通过这些逻辑区块电路的数据流程,且其中设计抽象代码指定该现场可编程门阵列装置中的这些逻辑区块电路的互连以提供该数据流程。
7.如权利要求4所述的计算机系统,还包含:
在编程之前,判断该现场可编程门阵列装置不足以用于该设计抽象代码所需的这些逻辑区块电路;
相应于该现场可编程门阵列装置不足以用于该设计抽象代码所需的这些逻辑区块电路的判断,在编程期间,实施用于该现场可编程门阵列装置的替代编程模式。
8.一种非暂态计算机可读介质,在其上存储由计算机装置执行的计算机程序,该计算机程序包含用于使该计算机装置执行多个步骤的多个代码段,这些步骤包含:
取得用于深度学习程序的已训练模型;
转换该已训练模型为设计抽象代码;
根据该设计抽象代码,编程现场可编程门阵列装置,
其中,该设计抽象代码包含在该现场可编程门阵列装置中用以编程多个逻辑区块电路的代码,这些逻辑区块电路的每一个代表多个模块中的一个,这些模块用于执行于该深度学习程序的不同层间的处理步骤。
9.如权利要求8所述的非暂态计算机可读介质,其中转换的操作包含指定通过这些逻辑区块电路的数据流程,且其中设计抽象代码指定该现场可编程门阵列装置中的这些逻辑区块电路的互连以提供该数据流程。
10.如权利要求8所述的非暂态计算机可读介质,还包含:
在编程之前,判断该现场可编程门阵列装置不足以用于该设计抽象代码所需的这些逻辑区块电路;
相应于该现场可编程门阵列装置不足以用于该设计抽象代码所需的这些逻辑区块电路的判断,在编程期间,实施用于该现场可编程门阵列装置的替代编程模式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/891,762 US11568232B2 (en) | 2018-02-08 | 2018-02-08 | Deep learning FPGA converter |
US15/891,762 | 2018-02-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110134379A true CN110134379A (zh) | 2019-08-16 |
CN110134379B CN110134379B (zh) | 2022-11-22 |
Family
ID=64184014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810832509.0A Active CN110134379B (zh) | 2018-02-08 | 2018-07-26 | 计算机系统、编程方法及非暂态计算机可读介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11568232B2 (zh) |
EP (1) | EP3525119B1 (zh) |
JP (1) | JP6676126B2 (zh) |
CN (1) | CN110134379B (zh) |
TW (1) | TWI709088B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11537856B2 (en) * | 2018-08-08 | 2022-12-27 | Applied Brain Research Inc. | Digital circuits for evaluating neural engineering framework style neural networks |
US11954573B2 (en) * | 2018-09-06 | 2024-04-09 | Black Sesame Technologies Inc. | Convolutional neural network using adaptive 3D array |
KR102680097B1 (ko) * | 2019-11-01 | 2024-07-02 | 삼성전자주식회사 | 전자 장치 및 그 동작 방법 |
TWI755112B (zh) * | 2020-10-23 | 2022-02-11 | 財團法人工業技術研究院 | 電腦程式碼之優化方法、優化系統及應用其之電子裝置 |
KR102268813B1 (ko) * | 2020-12-14 | 2021-06-25 | 주식회사 모빌린트 | 딥러닝 알고리즘을 위한 fpga 설계 방법 및 시스템 |
JP2023020264A (ja) * | 2021-07-30 | 2023-02-09 | 株式会社Screenホールディングス | スケジュール作成方法、スケジュール作成装置、基板処理装置、基板処理システム、記録媒体、及びスケジュール作成プログラム |
CN115426265B (zh) * | 2022-11-02 | 2023-04-18 | 之江实验室 | 一种多模态网络下交换资源分配优化方法及装置、介质 |
US12056533B2 (en) | 2022-11-02 | 2024-08-06 | Zhejiang Lab | Method, apparatus and medium for optimizing allocation of switching resources in polymorphic network |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100076915A1 (en) * | 2008-09-25 | 2010-03-25 | Microsoft Corporation | Field-Programmable Gate Array Based Accelerator System |
CN104915195A (zh) * | 2015-05-20 | 2015-09-16 | 清华大学 | 一种基于现场可编程门阵列实现神经网络计算的方法 |
CN106228238A (zh) * | 2016-07-27 | 2016-12-14 | 中国科学技术大学苏州研究院 | 现场可编程门阵列平台上加速深度学习算法的方法和系统 |
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104680236B (zh) | 2015-02-13 | 2017-08-01 | 西安交通大学 | 核函数极限学习机分类器的fpga实现方法 |
CN105488565A (zh) | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
US10621486B2 (en) | 2016-08-12 | 2020-04-14 | Beijing Deephi Intelligent Technology Co., Ltd. | Method for optimizing an artificial neural network (ANN) |
US10163197B2 (en) * | 2016-12-02 | 2018-12-25 | Tata Consultancy Services Limited | System and method for layer-wise training of deep neural networks |
US11676004B2 (en) * | 2017-08-15 | 2023-06-13 | Xilinx, Inc. | Architecture optimized training of neural networks |
-
2018
- 2018-02-08 US US15/891,762 patent/US11568232B2/en active Active
- 2018-07-10 TW TW107123892A patent/TWI709088B/zh active
- 2018-07-26 CN CN201810832509.0A patent/CN110134379B/zh active Active
- 2018-10-24 JP JP2018200292A patent/JP6676126B2/ja active Active
- 2018-11-07 EP EP18205023.7A patent/EP3525119B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100076915A1 (en) * | 2008-09-25 | 2010-03-25 | Microsoft Corporation | Field-Programmable Gate Array Based Accelerator System |
CN104915195A (zh) * | 2015-05-20 | 2015-09-16 | 清华大学 | 一种基于现场可编程门阵列实现神经网络计算的方法 |
CN106228238A (zh) * | 2016-07-27 | 2016-12-14 | 中国科学技术大学苏州研究院 | 现场可编程门阵列平台上加速深度学习算法的方法和系统 |
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
Non-Patent Citations (1)
Title |
---|
YUFEI MA等: "An Automatic RTL Compiler for High-Throughput", 《2017 27TH INTERNATIONAL CONFERENCE ON FIELD PROGRAMMABLE LOGIC AND APPLICATIONS (FPL), GHENT UNIVERSITY》 * |
Also Published As
Publication number | Publication date |
---|---|
EP3525119A1 (en) | 2019-08-14 |
CN110134379B (zh) | 2022-11-22 |
EP3525119B1 (en) | 2021-09-29 |
TWI709088B (zh) | 2020-11-01 |
US11568232B2 (en) | 2023-01-31 |
US20190244095A1 (en) | 2019-08-08 |
JP6676126B2 (ja) | 2020-04-08 |
TW201935264A (zh) | 2019-09-01 |
JP2019139742A (ja) | 2019-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110134379A (zh) | 计算机系统、编程方法及非暂态计算机可读介质 | |
Jung et al. | New modularity indices for modularity assessment and clustering of product architecture | |
Wang et al. | An effective estimation of distribution algorithm for the flexible job-shop scheduling problem with fuzzy processing time | |
US11645548B1 (en) | Automated cloud data and technology solution delivery using machine learning and artificial intelligence modeling | |
Shen et al. | A modified teaching–learning-based optimisation algorithm for bi-objective re-entrant hybrid flowshop scheduling | |
CN111950596A (zh) | 一种用于神经网络的训练方法以及相关设备 | |
Nagy et al. | Ten questions concerning reinforcement learning for building energy management | |
Sitte et al. | Demand-compliant design | |
Guo et al. | Multi-objective optimisation of stochastic hybrid production line balancing including assembly and disassembly tasks | |
Wang et al. | An order-based estimation of distribution algorithm for stochastic hybrid flow-shop scheduling problem | |
WO2016207731A2 (en) | Alife machine learning system and method | |
US20240119329A1 (en) | Quantum computer operating system, quantum computer and readable storage medium | |
CN111652282A (zh) | 基于大数据的用户偏好分析方法、装置及电子设备 | |
CN107980146A (zh) | 以职位为中心的人员评估装置和方法 | |
Çakar et al. | Artificial neural networks for design of manufacturing systems and selection of priority rules | |
US20220044136A1 (en) | Automated data table discovery for automated machine learning | |
CN109545292A (zh) | 一种医疗科研随访任务的管理方法、设备和介质 | |
McGeoch et al. | Milestones on the quantum utility highway: Quantum annealing case study | |
CN115438768A (zh) | 模型推理方法、装置、计算机设备及存储介质 | |
CN112633385A (zh) | 一种模型训练的方法、数据生成的方法以及装置 | |
Bee Hua | The state of applications of quantitative analysis techniques to construction economics and management (1983 to 2006) | |
Gao et al. | Discrete electromagnetism-like mechanism algorithm for assembly sequences planning | |
Lin et al. | Meta-heuristic algorithms for wafer sorting scheduling problems | |
Zhang et al. | Gaining knowledge through experience: developing decisional DNA applications in robotics | |
Franco et al. | Genetic algorithms for parameter estimation in modelling of index returns |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |