CN116483319A - 用于软件定义芯片的算子处理方法、装置、设备及介质 - Google Patents
用于软件定义芯片的算子处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116483319A CN116483319A CN202211690406.8A CN202211690406A CN116483319A CN 116483319 A CN116483319 A CN 116483319A CN 202211690406 A CN202211690406 A CN 202211690406A CN 116483319 A CN116483319 A CN 116483319A
- Authority
- CN
- China
- Prior art keywords
- data flow
- operator
- graph
- basic
- aggregation
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 230000002776 aggregation Effects 0.000 claims abstract description 119
- 238000004220 aggregation Methods 0.000 claims abstract description 119
- 238000000034 method Methods 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims abstract description 14
- 238000010586 diagram Methods 0.000 claims description 48
- 238000004590 computer program Methods 0.000 claims description 16
- 230000015654 memory Effects 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 8
- 230000006854 communication Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出了一种用于软件定义芯片的算子处理方法、装置、电子设备及存储介质,应用于计算机技术领域,该方法包括:获取待处理逻辑表达式对应的原始数据流图、软件定义芯片支持的基本算子模板库和聚合算子模板库,使用该基本算子模板库对该原始数据流图进行第一图匹配操作,生成中间数据流图,使用该聚合算子模板库对该中间数据流图进行第二图匹配操作,生成目标数据流图。本发明以通用编译器针对高级语言程序编译生成的原始数据流图为输入,输出为软件定义芯片支持的逻辑算子构成的目标数据流图,目标数据流图可被高效映射到软件定义芯片上,显著提高软件定义芯片的易用性和计算效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种用于软件定义芯片的算子处理方法、装置、电子设备及存储介质。
背景技术
随着现代社会向数字化、自动化、智能化的方向转型发展,人们对计算服务的需求与日俱增。效率、灵活性和易用性已成为新硬件架构设计中最关键的三个评价指标。软件定义芯片是一种芯片架构设计的新范式,达成软件直接定义硬件运行时功能和规则的目的,使硬件随着软件变化而进行动态、实时的功能重构,以此敏捷且高效的实现多领域应用。
因此,如何实现用纯软件思维就能对软件定义芯片进行高效编程,以降低使用门槛、拓展使用范围、加快应用的迭代与部署速度,即提高软件定义芯片的易用性是一个艰巨的挑战且是一个亟待解决的问题。
发明内容
本发明的主要目的在于提供一种用于软件定义芯片的算子处理方法、装置、电子设备及存储介质。
为实现上述目的,本发明实施例第一方面提供一种用于软件定义芯片的算子处理方法,包括:
获取待处理逻辑表达式对应的原始数据流图、软件定义芯片支持的基本算子模板库和聚合算子模板库,所述基本算子模板库包括至少一个基本算子对应的数据流图,所述聚合算子模板库包括至少一个聚合算子对应的数据流图,所述聚合算子由至少一个所述基本算子聚合而成;
使用所述基本算子模板库对所述原始数据流图进行第一图匹配操作,生成中间数据流图,所述中间数据流图的逻辑算子为所述基本算子;
使用所述聚合算子模板库对所述中间数据流图进行第二图匹配操作,生成目标数据流图,所述目标数据流图的逻辑算子为所述聚合算子。
在本发明一实施例中,所述使用所述基本算子模板库对所述原始数据流图进行第一图匹配操作,生成中间数据流图包括:
遍历所述原始数据流图中的每一节点;
针对所述每一节点,从所述基本算子模板库中依次取出所述基本算子对应的数据流图与所述原始数据流图进行图匹配操作,直至所述图匹配操作成功或取出所有所述基本算子对应的数据流图,生成所述中间数据流图。
在本发明一实施例中,针对每一所述基本算子对应的数据流图,所述方法还包括:
获取所述基本算子对应的数据流图的输入节点集合;
遍历所述输入节点集合中的节点与所述原始数据流图中的节点配对为起始节点而进行所述图匹配操作。
在本发明一实施例中,所述从所述基本算子模板库中依次取出所述基本算子对应的数据流图与所述原始数据流图进行所述图匹配操作包括:
从所述基本算子模板库中按随机次序取出每一所述基本算子对应的数据流图;或者,
从所述基本算子模板库中按预先设定的图匹配优先级序列依次取出每一所述基本算子对应的数据流图。
在本发明一实施例中,所述图匹配优先级序列中优先级高的基本算子对应的数据流图中的逻辑算子的数量大于优先级低的基本算子对应的数据流图中的逻辑算子的数量。
在本发明一实施例中,所述使用所述聚合算子模板库对所述中间数据流图进行第二图匹配操作,生成目标数据流图包括:
遍历所述中间数据流图中的每一节点;
针对所述每一节点,从所述聚合算子模板库中依次取出所述聚合算子对应的数据流图与所述中间数据流图进行图匹配操作,直至取出所有所述聚合算子对应的数据流图,并记录所述图匹配操作成功情况下取出的聚合算子集合;
根据所述聚合算子集合,生成所述目标数据流图。
在本发明一实施例中,所述根据所述聚合算子集合,生成所述目标数据流图包括:
利用整数线性规划,从所述聚合算子集合中确定目标聚合算子;
基于所述目标聚合算种子,生成所述目标数据流图。
本发明实施例第二方面提供一种用于软件定义芯片的算子处理装置,包括:
获取模块,用于获取待处理逻辑表达式对应的原始数据流图、软件定义芯片支持的基本算子模板库和聚合算子模板库,所述基本算子模板库包括至少一个基本算子对应的数据流图,所述聚合算子模板库包括至少一个聚合算子对应的数据流图,所述聚合算子由至少一个所述基本算子聚合而成。
第一图匹配模块,用于使用所述基本算子模板库对所述原始数据流图进行第一图匹配操作,生成中间数据流图,所述中间数据流图的逻辑算子为所述基本算子。
第二图匹配模块,用于使用所述聚合算子模板库对所述中间数据流图进行第二图匹配操作,生成目标数据流图,所述目标数据流图的逻辑算子为所述聚合算子。
在本发明一实施例中,所述第一图匹配模块包括:
第一遍历模块,用于遍历所述原始数据流图中的每一节点;
第一取出模块,用于针对所述每一节点,从所述基本算子模板库中依次取出所述基本算子对应的数据流图与所述原始数据流图进行图匹配操作,直至所述图匹配操作成功或取出所有所述基本算子对应的数据流图,生成所述中间数据流图。
在本发明一实施例中,针对每一所述基本算子对应的数据流图,所述装置还包括:
节点集合获取模块,用于获取所述基本算子对应的数据流图的输入节点集合;
配对模块,用于遍历所述输入节点集合中的节点与所述原始数据流图中的节点配对为起始节点而进行所述图匹配操作。
在本发明一实施例中,所述从所述基本算子模板库中依次取出所述基本算子对应的数据流图与所述原始数据流图进行所述图匹配操作包括:
从所述基本算子模板库中按随机次序取出每一所述基本算子对应的数据流图;或者,
从所述基本算子模板库中按预先设定的图匹配优先级序列依次取出每一所述基本算子对应的数据流图。
在本发明一实施例中,所述图匹配优先级序列中优先级高的基本算子对应的数据流图中的逻辑算子的数量大于优先级低的基本算子对应的数据流图中的逻辑算子的数量。
在本发明一实施例中,所述第二图匹配模块包括:
第二遍历模块,用于遍历所述中间数据流图中的每一节点;
第二取出模块,用于针对所述每一节点,从所述聚合算子模板库中依次取出所述聚合算子对应的数据流图与所述中间数据流图进行图匹配操作,直至取出所有所述聚合算子对应的数据流图,并记录所述图匹配操作成功情况下取出的聚合算子集合。
生成模块,用于根据所述聚合算子集合,生成所述目标数据流图。
在本发明一实施例中,所述生成模块包括:
确定子模块,用于利用整数线性规划,从所述聚合算子集合中确定目标聚合算子;
生成子模块,用于基于所述目标聚合算种子,生成所述目标数据流图。
本发明实施例第三方面提供了一种电子设备,包括:
存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现本发明实施例第一方面提供的用于粗粒度可重构架构的映射方法。
本发明实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例第一方面提供的用于粗粒度可重构架构的映射方法。
根据本发明实施例,本发明提供了一种用于软件定义芯片的算子处理方法、装置、电子设备及存储介质,该方法包括:获取待处理逻辑表达式对应的原始数据流图、软件定义芯片支持的基本算子模板库和聚合算子模板库,该基本算子模板库包括至少一个基本算子对应的数据流图,该聚合算子模板库包括至少一个聚合算子对应的数据流图,该聚合算子由至少一个该基本算子聚合而成,使用该基本算子模板库对该原始数据流图进行第一图匹配操作,生成中间数据流图,该中间数据流图的逻辑算子为该基本算子,使用该聚合算子模板库对该中间数据流图进行第二图匹配操作,生成目标数据流图,该目标数据流图的逻辑算子为该聚合算子。本发明以通用编译器针对高级语言程序编译生成的原始数据流图为输入,输出为软件定义芯片支持的逻辑算子构成的目标数据流图,目标数据流图可被高效映射到软件定义芯片上,显著提高软件定义芯片的易用性和计算效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的用于软件定义芯片的算子处理方法的流程示意图;
图2为本发明一实施例提供的基本算子模板库中基本算子对应的数据流图的示意图;
图3为本发明一实施例提供的软件定义芯片支持的硬件结构的示意图;
图4为本发明一实施例提供的部分聚合算子对应的数据流图的示意图;
图5为本发明一实施例提供的操作S102的流程示意图;
图6为本发明一实施例提供的图匹配优先级序列的示意图;
图7为本发明一实施例提供的原始数据流图的示意图;
图8为本发明一实施例提供的中间数据流图的示意图;
图9为本发明一实施例提供的操作S103的流程示意图;
图10为本发明一实施例提供的算子集合Svg的示意图;
图11为本发明一实施例提供的中间数据流图转化为目标数据流图的示意图;
图12为本发明一实施例提供的用于粗粒度可重构架构的映射装置的结构示意图;
图13示出了一种电子设备的硬件结构示意图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种用于软件定义芯片的算子处理方法、装置、电子设备及存储介质,该方法包括:获取待处理逻辑表达式对应的原始数据流图、软件定义芯片支持的基本算子模板库和聚合算子模板库,该基本算子模板库包括至少一个基本算子对应的数据流图,该聚合算子模板库包括至少一个聚合算子对应的数据流图,该聚合算子由至少一个该基本算子聚合而成,使用该基本算子模板库对该原始数据流图进行第一图匹配操作,生成中间数据流图,该中间数据流图的逻辑算子为该基本算子,使用该聚合算子模板库对该中间数据流图进行第二图匹配操作,生成目标数据流图,该目标数据流图的逻辑算子为该聚合算子。本发明以通用编译器针对高级语言程序编译生成的原始数据流图为输入,输出为软件定义芯片支持的逻辑算子构成的目标数据流图,目标数据流图可被高效映射到软件定义芯片上,显著提高软件定义芯片的易用性和计算效率。
下面结合附图,对本发明的一些实施方式作详细说明。在各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互结合。本发明的各附图中,每一节点最后的数字表示该节点在该数据流图中的序号,例如图2中的(d)图all0节点,数字0表示第0个节点,该序号可采用任意方式进行编号,图中仅为其中一个示意性示例,本发明对此不做限制。
请参阅图1,图1为本发明一实施例提供的用于软件定义芯片的算子处理方法的流程示意图,该方法主要包括以下操作S101~S103:
S101、获取待处理逻辑表达式对应的原始数据流图、软件定义芯片支持的基本算子模板库和聚合算子模板库。
S102、使用该基本算子模板库对该原始数据流图进行第一图匹配操作,生成中间数据流图,该中间数据流图的逻辑算子为该基本算子。
S103、使用该聚合算子模板库对该中间数据流图进行第二图匹配操作,生成目标数据流图,该目标数据流图的逻辑算子为该聚合算子。
在本发明中,原始数据流图可以由通用编译器编译而得。该基本算子模板库包括至少一个基本算子对应的数据流图,该聚合算子模板库包括至少一个聚合算子对应的数据流图,该聚合算子由至少一个该基本算子聚合而成。
软件定义芯片通常包含多个算子,算子可分为简单算子和复杂算子。基本算子是指用于单一逻辑操作的简单算子,例如,or、xor、add、const、mul、shift等。聚合算子是指用于组合逻辑操作的复杂算子,也即多个简单算子的组合。
在一示例中,以A和B代表输入数据,X为逻辑表达式运算结果的输出为例,软件定义芯片的LBC运算器件支持的单一逻辑操作包括:~A、AXOR B、A AND B、A OR B、~A XORB、~A AND B、~A OR B这七种,将LBC运算器件支持的这七种单一逻辑操作作为基本算子,其对应的数据流图如图2所示,图2中(a)对应的基本算子为~,(b)对应的基本算子为xor,(c)对应的基本算子为and,(d)对应的基本算子为or,(e)对应的基本算子为~xor,(f)对应的基本算子为~and,(g)对应的基本算子为~or。
在本发明一实施例中,根据软件定义芯片硬件结构以及所支持的基本算子的不同,基本算子所能聚合而成的聚合算子的种类也会有所不同。如图3所示,软件定义芯片支持三层叠形结构,可实现三输入的逻辑表达式。上述七种基本算子在软件定义芯片的最大支持三层叠形结构运算的前提下可聚合为多种聚合算子。
在本发明一实施例中,除了根据软件定义芯片硬件结构以及所支持的基本算子的不同之外,还可以根据聚合方式的不同,基本算子所能聚合而成的聚合算子的种类也会有所不同。可实施的,在满足三层叠形结构运算的前提下,为了降低算子聚合的复杂程度,可以按照数据流图的输入节点的数量将基本算子进行抽象表示。在一示例中,将图2中(a)对应的基本算子的数据流图表示为LU 001,(b)对应的基本算子的数据流图表示为LU 010,(c)对应的基本算子的数据流图表示为为LU 011,(d)对应的基本算子的数据流图表示为LU100,(e)对应的基本算子的数据流图表示为LU 101,(f)对应的基本算子的数据流图表示为LU_110,(g)对应的基本算子的数据流图表示为LU 111,则例如可以将基本算子对应的数据流图LU 001抽象为LU 1(输入节点的数量为1),将LU 010、LU 011、LU 100、LU 101、LU 110和LU 111抽象为LU 2(输入节点的数量为2),可生成63个聚合算子,其中生成的部分聚合算子对应的数据流图如图4所示。
在本发明中,最后生成的目标数据流图可被高效映射到软件定义芯片上,可以用功能单元(如算术逻辑单元,加载/存储单元等)和连接单元(如多路选择器、寄存器等)以及他们的连接关系描述目标数据流图。其中,功能单元负责执行目标数据流图中的算子所描述的运算,连接单元作为功能单元之间通信的媒介,负责保持目标数据流图中的数据依赖。
请参阅图5,图5为图1所示的操作S102中使用该基本算子模板库对该原始数据流图进行第一图匹配操作,生成中间数据流图的流程示意图。在上述图1所示实施例的基础上,结合图1至图4继续参考图5所示,本实施例所示的用于软件定义芯片的算子处理方法还包括以下操作S501至S502:
S501、遍历该原始数据流图中的每一节点。
S502、针对该每一节点,从该基本算子模板库中依次取出该基本算子对应的数据流图与该原始数据流图进行图匹配操作,直至该图匹配操作成功或取出所有该基本算子对应的数据流图,生成该中间数据流图。
在本发明一实施例中,针对每一该基本算子对应的数据流图,图5所示方法还包括:获取该基本算子对应的数据流图的输入节点集合,遍历该输入节点集合中的节点与该原始数据流图中的节点配对为起始节点而进行该图匹配操作。
具体的,遍历处理原始数据流图中的每个节点,如果匹配成功则根据匹配的结果调整原始数据流图并转入对下一个节点的处理,如果匹配失败则直接进行下一个节点的处理。针对原始数据流图中某节点V的匹配过程为:1)依次取出基本算子对应的数据流图进行匹配操作;2)获取基本算子对应的数据流图的输入节点集合Sv;3)遍历输入节点集合Sv中的节点与节点V配对为起始点而进行图匹配,如匹配成功则结束对节点V的图匹配过程。
在本发明一实施例中,上述从该基本算子模板库中依次取出该基本算子对应的数据流图与该原始数据流图进行该图匹配操作包括:从该基本算子模板库中按随机次序取出每一该基本算子对应的数据流图,或者,从该基本算子模板库中按预先设定的图匹配优先级序列依次取出每一该基本算子对应的数据流图。
在本发明一实施例中,该图匹配优先级序列中优先级高的基本算子对应的数据流图中的逻辑算子的数量大于优先级低的基本算子对应的数据流图中的逻辑算子的数量。依照图2中基本算子模板库所示的七种基本算子对应的数据流图进行上述图匹配优先级排序,其中一种排序结果可以如图6所示,LU_101>LU_110>LU_111>LU_001>LU_010>LU_011>LU_100。
可以理解的,对于逻辑算子的数量相同的数据流图对应的基本算子的优先级可以任意排序,因此图2中基本算子模板库所示的七种基本算子对应的数据流图进行上述图匹配优先级排序还可以是LU_110>LU_101>LU_111>LU_001>LU_010>LU_100>LU_011。
在一示例中,待处理逻辑表达式包含的逻辑操作为((A^B)^(T&A))|(B|T),则待处理逻辑表达式对应的原始数据流图如图7所示,根据图6所示图匹配优先级序列,使用图2所示基本算子模板库对图7所示原始数据流图实施第一图匹配操作生成的中间数据流图可如图8所示。
请参阅图9,图9为图1所示的操作S103中使用该聚合算子模板库对该中间数据流图进行第二图匹配操作,生成目标数据流图的流程示意图。在上述图1所示实施例的基础上,结合图1至图8继续参考图9所示,本实施例所示的用于软件定义芯片的算子处理方法还包括以下操作S901至S903:
S901、遍历该中间数据流图中的每一节点。
S902、针对该每一节点,从该聚合算子模板库中依次取出该聚合算子对应的数据流图与该中间数据流图进行图匹配操作,直至取出所有该聚合算子对应的数据流图,并记录该图匹配操作成功情况下取出的聚合算子集合。
S903、根据该聚合算子集合,生成该目标数据流图。
本实施例的第二图匹配操作与图5所示的实施例的第一图匹配操作的区别之处在于,针对中间数据流图中的每个节点V,遍历聚合算子模板库中的聚合算子对应的数据流图进行图匹配时不论成功与否都不结束对节点V的匹配操作直到遍历结束,并在遍历过程中记录图匹配操作成功时取出的聚合算子集合Svg。聚合算子集合Svg可以包括:中间数据流图中的每个节点V;节点V对应的聚合算子列表,列表元素包含对应的基本算子的数据流图表示及匹配区域对应的节点和边表示。以图4对应生成的聚合算子模板库,也即63个聚合算子对应的数据流图,对图8所示中间数据流图实施第二图匹配操作生成的算子集合Svg如图10所示。
在图10所示的聚合算子集合Svg的算子聚合列表集中,可用于生成目标数据流图的方案有三种,第一种:1)+7)+17)+29)+36),第二种:2)+28),第三种:6)。可采取上述三种中的任意一种生成目标数据流图。
在本发明一实施例中,上述根据该聚合算子集合,生成该目标数据流图包括:利用整数线性规划,从该聚合算子集合中确定目标聚合算子,基于该目标聚合算种子,生成该目标数据流图。
具体的,使用最优化原理方法从聚合算子集合Svg的算子聚合列表集中挑选出适合的聚合算子完成对中间数据流图的最优完全覆盖,选中部分组成最优方案S-select。使用整数线性规划(ILP,integer linear programming)技术生成组成最优方案S-select=6),也即最优方案为第三种,目标聚合算子为LU 1005+LU 1007+LU 0106+LU 0114+LU0103,如图11所示。
请参阅图12,图12是本发明一实施例提供的用于粗粒度可重构架构的映射装置的结构示意图,该装置主要包括:获取模块1210、第一图匹配模块1220和第二图匹配模块1230。
获取模块1210,用于获取待处理逻辑表达式对应的原始数据流图、软件定义芯片支持的基本算子模板库和聚合算子模板库,该基本算子模板库包括至少一个基本算子对应的数据流图,该聚合算子模板库包括至少一个聚合算子对应的数据流图,该聚合算子由至少一个该基本算子聚合而成。
第一图匹配模块1220,用于使用该基本算子模板库对该原始数据流图进行第一图匹配操作,生成中间数据流图,该中间数据流图的逻辑算子为该基本算子。
第二图匹配模块1230,用于使用该聚合算子模板库对该中间数据流图进行第二图匹配操作,生成目标数据流图,该目标数据流图的逻辑算子为该聚合算子。
在本发明一实施例中,该第一图匹配模块1220包括:
第一遍历模块,用于遍历该原始数据流图中的每一节点;
第一取出模块,用于针对该每一节点,从该基本算子模板库中依次取出该基本算子对应的数据流图与该原始数据流图进行图匹配操作,直至该图匹配操作成功或取出所有该基本算子对应的数据流图,生成该中间数据流图。
在本发明一实施例中,针对每一该基本算子对应的数据流图,该装置还包括:
节点集合获取模块,用于获取该基本算子对应的数据流图的输入节点集合;
配对模块,用于遍历该输入节点集合中的节点与该原始数据流图中的节点配对为起始节点而进行该图匹配操作。
在本发明一实施例中,该从该基本算子模板库中依次取出该基本算子对应的数据流图与该原始数据流图进行该图匹配操作包括:
从该基本算子模板库中按随机次序取出每一该基本算子对应的数据流图;或者,
从该基本算子模板库中按预先设定的图匹配优先级序列依次取出每一该基本算子对应的数据流图。
在本发明一实施例中,该图匹配优先级序列中优先级高的基本算子对应的数据流图中的逻辑算子的数量大于优先级低的基本算子对应的数据流图中的逻辑算子的数量。
在本发明一实施例中,该第二图匹配模块1230包括:
第二遍历模块,用于遍历该中间数据流图中的每一节点;
第二取出模块,用于针对该每一节点,从该聚合算子模板库中依次取出该聚合算子对应的数据流图与该中间数据流图进行图匹配操作,直至取出所有该聚合算子对应的数据流图,并记录该图匹配操作成功情况下取出的聚合算子集合。
生成模块,用于根据该聚合算子集合,生成该目标数据流图。
在本发明一实施例中,该生成模块包括:
确定子模块,用于利用整数线性规划,从该聚合算子集合中确定目标聚合算子;
生成子模块,用于基于该目标聚合算种子,生成该目标数据流图。
根据本发明的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本发明实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本发明实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上***、基板上的***、封装上的***、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本发明实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,获取模块1210、第一图匹配模块1220和第二图匹配模块1230中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本发明的实施例,获取模块1210、第一图匹配模块1220和第二图匹配模块1230中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上***、基板上的***、封装上的***、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块1310、第一图匹配模块1320和第二图匹配模块1330中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图13示意性示出了根据本发明实施例的适于实现上文描述的方法的电子设备的框图。图13示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图13所示,根据本发明实施例的电子设备1300包括处理器1301,其可以根据存储在只读存储器(ROM)1302中的程序或者从存储部分1308加载到随机访问存储器(RAM)1303中的程序而执行各种适当的动作和处理。处理器1301例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1301还可以包括用于缓存用途的板载存储器。处理器1301可以包括用于执行根据本发明实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1303中,存储有***1300操作所需的各种程序和数据。处理器1301、ROM1302以及RAM 1303通过总线1304彼此相连。处理器1301通过执行ROM 1302和/或RAM 1303中的程序来执行根据本发明实施例的方法流程的各种操作。需要注意,该程序也可以存储在除ROM 1302和RAM 1303以外的一个或多个存储器中。处理器1301也可以通过执行存储在该一个或多个存储器中的程序来执行根据本发明实施例的方法流程的各种操作。
根据本发明的实施例,***1300还可以包括输入/输出(I/O)接口1305,输入/输出(I/O)接口1305也连接至总线1304。***1300还可以包括连接至I/O接口1305的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至I/O接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
根据本发明的实施例,根据本发明实施例的方法流程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被处理器1301执行时,执行本发明实施例的***中限定的上述功能。根据本发明的实施例,上文描述的***、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/***中所包含的;也可以是单独存在,而未装配入该设备/装置/***中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本发明实施例的方法。
根据本发明的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
例如,根据本发明的实施例,计算机可读存储介质可以包括上文描述的ROM 1302和/或RAM 1303和/或ROM 1302和RAM 1303以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本发明的范围。
以上对本发明的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本发明的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本发明的范围由所附权利要求及其等同物限定。不脱离本发明的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本发明的范围之内。
Claims (10)
1.一种用于软件定义芯片的算子处理方法,其特征在于,包括:
获取待处理逻辑表达式对应的原始数据流图、软件定义芯片支持的基本算子模板库和聚合算子模板库,所述基本算子模板库包括至少一个基本算子对应的数据流图,所述聚合算子模板库包括至少一个聚合算子对应的数据流图,所述聚合算子由至少一个所述基本算子聚合而成;
使用所述基本算子模板库对所述原始数据流图进行第一图匹配操作,生成中间数据流图,所述中间数据流图的逻辑算子为所述基本算子;
使用所述聚合算子模板库对所述中间数据流图进行第二图匹配操作,生成目标数据流图,所述目标数据流图的逻辑算子为所述聚合算子。
2.根据权利要求1所述的用于软件定义芯片的算子处理方法,其特征在于,所述使用所述基本算子模板库对所述原始数据流图进行第一图匹配操作,生成中间数据流图包括:
遍历所述原始数据流图中的每一节点;
针对所述每一节点,从所述基本算子模板库中依次取出所述基本算子对应的数据流图与所述原始数据流图进行图匹配操作,直至所述图匹配操作成功或取出所有所述基本算子对应的数据流图,生成所述中间数据流图。
3.根据权利要求2所述的用于软件定义芯片的算子处理方法,其特征在于,针对每一所述基本算子对应的数据流图,所述方法还包括:
获取所述基本算子对应的数据流图的输入节点集合;
遍历所述输入节点集合中的节点与所述原始数据流图中的节点配对为起始节点而进行所述图匹配操作。
4.根据权利要求2或3所述的用于软件定义芯片的算子处理方法,其特征在于,所述从所述基本算子模板库中依次取出所述基本算子对应的数据流图与所述原始数据流图进行所述图匹配操作包括:
从所述基本算子模板库中按随机次序取出每一所述基本算子对应的数据流图;或者,
从所述基本算子模板库中按预先设定的图匹配优先级序列依次取出每一所述基本算子对应的数据流图。
5.根据权利要求4所述的用于软件定义芯片的算子处理方法,其特征在于,所述图匹配优先级序列中优先级高的基本算子对应的数据流图中的逻辑算子的数量大于优先级低的基本算子对应的数据流图中的逻辑算子的数量。
6.根据权利要求1所述的用于软件定义芯片的算子处理方法,其特征在于,所述使用所述聚合算子模板库对所述中间数据流图进行第二图匹配操作,生成目标数据流图包括:
遍历所述中间数据流图中的每一节点;
针对所述每一节点,从所述聚合算子模板库中依次取出所述聚合算子对应的数据流图与所述中间数据流图进行图匹配操作,直至取出所有所述聚合算子对应的数据流图,并记录所述图匹配操作成功情况下取出的聚合算子集合;
根据所述聚合算子集合,生成所述目标数据流图。
7.根据权利要求6所述的用于软件定义芯片的算子处理方法,其特征在于,所述根据所述聚合算子集合,生成所述目标数据流图包括:
利用整数线性规划,从所述聚合算子集合中确定目标聚合算子;
基于所述目标聚合算种子,生成所述目标数据流图。
8.一种用于软件定义芯片的算子处理装置,其特征在于,包括:
获取模块,用于获取待处理逻辑表达式对应的原始数据流图、软件定义芯片支持的基本算子模板库和聚合算子模板库,所述基本算子模板库包括至少一个基本算子对应的数据流图,所述聚合算子模板库包括至少一个聚合算子对应的数据流图,所述聚合算子由至少一个所述基本算子聚合而成;
第一图匹配模块,用于使用所述基本算子模板库对所述原始数据流图进行第一图匹配操作,生成中间数据流图,所述中间数据流图的逻辑算子为所述基本算子;
第二图匹配模块,用于使用所述聚合算子模板库对所述中间数据流图进行第二图匹配操作,生成目标数据流图,所述目标数据流图的逻辑算子为所述聚合算子。
9.一种电子设备,包括存储器,处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现权利要求1至7中的任一项所述的用于软件定义芯片的算子处理方法中的各个步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1至7中的任一项所述的用于软件定义芯片的算子处理方法中的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211690406.8A CN116483319A (zh) | 2022-12-27 | 2022-12-27 | 用于软件定义芯片的算子处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211690406.8A CN116483319A (zh) | 2022-12-27 | 2022-12-27 | 用于软件定义芯片的算子处理方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116483319A true CN116483319A (zh) | 2023-07-25 |
Family
ID=87220163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211690406.8A Pending CN116483319A (zh) | 2022-12-27 | 2022-12-27 | 用于软件定义芯片的算子处理方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116483319A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116841752A (zh) * | 2023-08-31 | 2023-10-03 | 杭州瞬安信息科技有限公司 | 一种基于分布式实时计算框架的数据分析计算*** |
CN117725863A (zh) * | 2023-12-11 | 2024-03-19 | 上海合芯数字科技有限公司 | 芯片信号分析硬件模块、***、处理器芯片及电子设备 |
-
2022
- 2022-12-27 CN CN202211690406.8A patent/CN116483319A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116841752A (zh) * | 2023-08-31 | 2023-10-03 | 杭州瞬安信息科技有限公司 | 一种基于分布式实时计算框架的数据分析计算*** |
CN116841752B (zh) * | 2023-08-31 | 2023-11-07 | 杭州瞬安信息科技有限公司 | 一种基于分布式实时计算框架的数据分析计算*** |
CN117725863A (zh) * | 2023-12-11 | 2024-03-19 | 上海合芯数字科技有限公司 | 芯片信号分析硬件模块、***、处理器芯片及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110058883B (zh) | 一种基于opu的cnn加速方法及*** | |
CN116483319A (zh) | 用于软件定义芯片的算子处理方法、装置、设备及介质 | |
WO2018098018A1 (en) | Compilation, memory management, and fault localization with ancillas in an unknown state | |
Rupnow et al. | A study of high-level synthesis: Promises and challenges | |
US10545739B2 (en) | LLVM-based system C compiler for architecture synthesis | |
CN111145076A (zh) | 数据并行化处理方法、***、设备及存储介质 | |
CN104252472A (zh) | 用于并行化数据处理的方法和装置 | |
Xu et al. | FCLNN: A flexible framework for fast CNN prototyping on FPGA with OpenCL and caffe | |
CN114443559A (zh) | 可重构算子单元、处理器、计算方法、装置、设备及介质 | |
Fishbain et al. | A competitive study of the pseudoflow algorithm for the minimum s–t cut problem in vision applications | |
US10268798B2 (en) | Condition analysis | |
CN116467061A (zh) | 一种任务执行的方法、装置、存储介质及电子设备 | |
US20210173641A1 (en) | Generation of knowledge graphs based on repositories of code | |
US20160055207A1 (en) | Processing Multi-Way Theta Join Queries Involving Arithmetic Operators on Mapreduce | |
Jeon et al. | Loop pipelining in hardware-software partitioning | |
Ali et al. | Exploring HLS optimizations for efficient stereo matching hardware implementation | |
US11748622B1 (en) | Saving intermediate outputs of a neural network | |
CN109977985A (zh) | 快速激光雷达数据分类 | |
CN103617033A (zh) | 基于MapReduce的数据处理方法、客户端和*** | |
CN116933841A (zh) | 算子融合方法及装置、电子设备、计算机可读介质 | |
CN114329058A (zh) | 图像聚档方法、装置和电子设备 | |
CN113051080A (zh) | 一种计算图执行方法、装置及异构平台 | |
CN114880273B (zh) | 用于粗粒度可重构架构的映射方法、装置、设备及介质 | |
US20070250803A1 (en) | High-level synthesis method and high-level synthesis system | |
Liang et al. | Equivalence analysis and its application in improving the efficiency of program slicing |
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 |