一种使用线性规划动态组网的方法、装置及存储介质
文献发布时间:2024-04-18 19:58:26
技术领域
本发明涉及电子设计自动化技术领域,尤其涉及一种使用线性规划动态组网的方法、装置及存储介质。
背景技术
随着用户设计规模急剧增大,一个大的电路必须被分割成几个子电路分别放到FPGA中进行原型验证。组网是指验证系统的硬件组成,包括系统中的FPGA数量,FPGA之间的连接关系,FPGA的容量和类型,以及所用线缆和连接器等。现有技术的流程中要么先进行组网再对用户设计根据组网分割,要么先对用户设计进行分割,再根据分割结果组网,在两种流程中,都会遇到组网和分割结果不能匹配,需要多次调整分割结果或者组网最后才能顺利进行原型验证,因此,亟需一种组网分割方法,将组网和分割过程结合在一起处理,以达到彼此适应,相互匹配的效果。
由于组网分割中需要控制的变量较多,如FPGA的使用数量、FPGA之间的连接方式、FPGA之间的线缆分配,分割结果与FPGA等等,情况比较复杂,难以处理和把握。
发明内容
本发明通过提供一种使用线性规划动态组网的方法、装置及存储介质,解决了现有技术中组网与分割结果不能完全匹配的问题,且计算体量过大时,不能得到计算结果的问题,实现了对客户需求进行分层,将组网和分割结合在一起进行处理,保证了组网和分割完全匹配。
第一方面,本发明提供了一种使用线性规划动态组网的方法,该方法包括:
构建动态组网的目标函数,其中,所述动态组网关于设计分割以及节点分配,所述节点包括驱动节点和负载节点;
将用户需求分为多层,在每一层根据不同的约束条件对所述目标函数构建不同的约束函数,并确定所述约束函数中的多个变量;
利用控制变量法,对每一层的所述多个变量进行求解,进而对所述目标函数进行求解,得到所述目标函数的最大值;
根据所述最大值对每一层的用户需求进行设计,根据设计结果将所述用户需求分配至对应的节点上。
结合第一方面,在一种可能的实现方式中,所述目标函数具体表示为:
其中,f_0表示对用户设计在不进行分割的预估运行频率;mcw表示FPGA之间通信信号与实际物理连线的数量比;mh表示信号传递时的最大距离。
结合第一方面,在一种可能的实现方式中,所述不同的约束条件包括:固定约束条件与优化约束条件;
所述固定约束条件包括:固定分配位置的节点以及FPGA的物理结构及性能;
所述优化约束条件包括:所述驱动节点到所述负载节点之间可能的通信路径。
结合第一方面,在一种可能的实现方式中,所述固定分配位置的节点对应的所述约束函数表示为:
f
其中,m表示FPGA的个数;n表示节点的个数;i表示第i个节点;j表示第j个FPGA;f
结合第一方面,在一种可能的实现方式中,所述FPGA的物理结构和性能对应的约束函数表示为:
其中,w
结合第一方面,在一种可能的实现方式中,所述驱动节点到所述负载节点之间可能的通信路径对应的约束函数表示为:
其中,x
结合第一方面,在一种可能的实现方式中,所述利用控制变量法,对每一层的所述多个变量进行求解,进而对所述目标函数进行求解,得到所述目标函数的最大值,具体包括:
采用控制变量法,每次将所述多个变量中的一个变量作为变量,其余变量作为常量;
采用二分法,对所述变量进行多次赋值,得到所述多个变量对应的解;
选择所述多个变量对应的解的最优解,分别作为所述多个变量的值,确定所述目标函数;
对所述目标函数进行求解,得到所述目标函数的最大值。
第二方面,本发明提供了一种使用线性规划动态组网的装置,该装置包括:
目标函数构建模块,用于构建动态组网的目标函数,其中,所述动态组网关于设计分割以及节点分配,所述节点包括驱动节点和负载节点;
约束函数构建模块,用于将用户需求分为多层,在每一层根据不同的约束条件对所述目标函数构建不同的约束函数,并确定所述约束函数中的多个变量;
最大值求解模块,用于利用控制变量法,对每一层的所述多个变量进行求解,进而对所述目标函数进行求解,得到所述目标函数的最大值;
分配模块,用于根据所述最大值对每一层的用户需求进行设计,根据设计结果将所述用户需求分配至对应的节点上。
结合第二方面,在一种可能的实现方式中,所述目标函数构建模块中所述目标函数具体表示为:
其中,f_0表示对用户设计在不进行分割的预估运行频率;mcw表示FPGA之间通信信号与实际物理连线的数量比;mh表示信号传递时的最大距离。
结合第二方面,在一种可能的实现方式中,所述约束函数构建模块包括:固定约束条件与优化约束条件;
所述固定约束条件包括:固定分配位置的节点以及FPGA的物理结构及性能;
所述优化约束条件包括:所述驱动节点到所述负载节点之间可能的通信路径。
结合第二方面,在一种可能的实现方式中,所述约束函数构建模块中所述固定分配位置的节点对应的所述约束函数表示为:
f
其中,m表示FPGA的个数;n表示节点的个数;i表示第i个节点;j表示第j个FPGA;f
结合第二方面,在一种可能的实现方式中,所述约束函数构建模块中所述FPGA的物理结构和性能对应的约束函数表示为:
其中,w
结合第二方面,在一种可能的实现方式中,所述约束函数构建模块中所述驱动节点到所述负载节点之间可能的通信路径对应的约束函数表示为:
其中,x
结合第二方面,在一种可能的实现方式中,所述最大值求解模块,用于采用控制变量法,每次将所述多个变量中的一个变量作为变量,其余变量作为常量;
采用二分法,对所述变量进行多次赋值,得到所述多个变量对应的解;
选择所述多个变量对应的解的最优解,分别作为所述多个变量的值,确定所述目标函数;
对所述目标函数进行求解,得到所述目标函数的最大值。
第三方面,本发明提供了一种使用线性规划动态组网的服务器,包括存储器和处理器;
所述存储器用于储存计算机可执行指令;
所述处理器用于执行所述计算机可执行指令,以实现一种使用线性规划动态组网的方法。
第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质有可执行指令,计算机执行所述可执行指令时能够实现一种使用线性规划动态组网的方法。
本发明中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本发明通过采用了一种使用线性规划动态组网的方法、装置及存储介质,该方法包括:构建动态组网的目标函数,其中,动态组网关于设计分割以及节点分配,节点包括驱动节点和负载节点,目标函数是关于设计分割和节点分配的目标函数,将组网和分割均作为目标函数的变量,使得在进行目标函数求解时,不对组网和分割进行割裂;将用户需求分为多层,在每一层根据不同的约束条件对目标函数构建不同的约束函数,并确定约束函数中的多个变量,分层求解,大大的解决了组网和分割不匹配的问题,且在每一层的计算量较小,易于实现;利用控制变量法,对每一层的多个变量进行求解,进而对目标函数进行求解,得到目标函数的最大值,多变量的求解,会大大增加计算量,控制变量法,在一定范围内减少了计算量,节约了计算时间;根据最大值对每一层的用户需求进行设计,根据设计结果将用户需求分配至对应的节点上;解决了现有技术中组网与分割结果不能完全匹配的问题,且计算体量过大时,不能得到计算结果的问题,实现了对客户需求进行分层,将组网和分割结合在一起进行处理,保证了组网和分割完全匹配。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对本发明实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种使用线性规划动态组网的方法步骤流程图;
图2为本发明实施例提供的所有可能的物理连接关系;
图3为本发明实施例提供的组网与分割结合的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种使用线性规划动态组网的方法,如图1所示该方法包括以下步骤S101至步骤S104。
S101,构建动态组网的目标函数,其中,动态组网关于设计分割以及节点分配,节点包括驱动节点和负载节点。其中,目标函数具体表示为:
其中,f_0表示对用户设计在不进行分割的预估运行频率;mcw表示FPGA之间通信信号与实际物理连线的数量比,
通过目标函数,发现当mh=0,mcw=0的时,f=f_0,即表示用户的需求不需要被分割,实际运行频率就等于预估频率,对目标函数有影响作用的是mh以及mcw,mcw表示两两FPGA之间的信号时分复用比率最大的一个信号时分复用比率。
S102,将用户需求分为多层,在每一层根据不同的约束条件对目标函数构建不同的约束函数,并确定约束函数中的多个变量。
在步骤S102中,不同的约束条件包括:固定约束条件与优化约束条件。
固定分配位置的节点为每一个节点必须放置在一颗FPGA中,节点是指用户设计被分割后的不同组成部分,即需要被放置在一颗FPGA中的子电路,每个FPGA最多可以放置一个节点或者不放置任何节点。
固定分配位置的节点对应的约束函数表示为:
f
其中,i表示第i个节点;j表示第j个FPGA;f
公式(1.1)表示每个节点必须放置在某个FPGA中,公式(1.2)表示每个FPGA最多放置一个节点,公式(1.3)表示FPGA有两种状态,被放置节点和不放置节点。
物理结构及性能包括:组网必须实在一定约束条件下进行组网,如一颗FPGA对外连接的物理连线数量是有限的,即具有连接关系的FPGA的之间的连线数量是有限的。即组网并不是随心所欲的,受限于硬件的物理结构和性能。
在本发明提供的一个具体的实施例中,假设限制两颗具有直接物理连接关系的FPGA最远距离不能超过2,则对于组网来说,如图2所示的虚线为所有可能的物理连接关系,别的物理连接方式则不被允许。
具体的FPGA的物理结构和性能对应的约束函数表示为:
其中,w
公式(2.1)表示一颗FPGA对外连接所使用的物理连线数量不能超过最大上限w
优化约束条件包括:驱动节点到负载节点之间可能通信路径。在进行优化约束之前,本发明会对节点之间完成通信的可能通信路径进行收集和记录,在具体使用时,根据驱动节点和负载节点所在的FPGA的位置,给出可选的通信路径的集合routing-tree。
驱动节点到负载节点之间可能通信路径对应的约束函数表示为:
其中,x
将节点之间的连线表示为通信信号,即net,信号传递时的通信距离称为routing。
在本发明提供的一个具体的实施例中,如图3所示,黄色的节点代表partition,蓝色的方格代表FPGA,黄色节点之间的红色连线代表通信信号,也即net,蓝色方格之间的黑色连线代表物理连线数量。目标是把每个partition放入到FPGA中,并按照目标函数优化FPGA之间通信与物理联系的比例和两个partition之间通信的最大距离。其中应该注意,节点A和节点C之间的通信需要经由FPGA2转发,这使得FPGA1和FPGA2,FPGA2和FPGA3之间的通信数量平均增加了1.5,同时节点A和节点C之间的通信距离多跨越了一颗FPGA2,即最大通信距离增加了1。
对公式(2.3)中对的routing进行进一步的约束可以表示为:
其中,d
对公式(2.3)中对的经过某两个FPGA之间的所有信号进行进一步的约束可以表示为:
其中,t表示通信路径的集合的大小;a
从步骤S102中的约束可看出,组网和分割以及信号传递时的传递距离都融合到了约束当中,在线性规划的求解过程中,代表各个变量交织起作用,最终才能得到目标函数的最大值。
S103,对每一层的用户需求中利用控制变量法,对目标函数进行求解,得到目标函数的最大值。
在步骤S103中,利用控制变量法,对每一层的多个变量进行求解,进而对目标函数进行求解,得到目标函数的最大值,具体包括以下步骤。
(1)采用控制变量法,每次将多个变量中的一个变量作为变量,其余变量作为常量。
(2)采用二分法,对变量进行多次赋值,得到多个变量对应的解。
(3)选择多个变量对应的解的最优解,分别作为多个变量的值,确定目标函数。
(4)对目标函数进行求解,得到目标函数的最大值。
在本发明提供的一个具体的实施例中,采用控制变量法,当仅仅有一个变量时,假设变量的取值范围为:[1,mid]和[mid+1,r],将小于首次输入值的数值归为左半部分,即[1,mid]归为左半部分,将大于首次输入值的数值归为右半部分,即[mid+1,r]归为右半部分。首次输入的值为mid,得到目标函数求解时间。
二次输入的变量为将左半部分的中间值或者右半部分的中间值,即
根据得到的变量的最优值,进而对目标函数进行求解,得到目标函数的最大值。
再根据目标函数的最大值对当前层的用户需求进行设计,按照设计结果将用户需求分配至对应的节点上。
本发明的实施例,还提供了一个逐级控制变量的思想,当在控制一个变量能够较快的得到目标函数的最大值时,可以尝试对两个变量分别采用二分法对变量进行最优值的求解,二分法的过程求解过程和上述一个变量进行求解时的步骤相同,不过需要综合考虑两个变量可能的组合排列,以得到最优的变量值,
由此,可以得到,使用线性规划动态组网的方法时,首先用该判断用户的需求是不是庞大的;当用户需求庞大时,可以尝试逐个对变量进行控制,采用二分法具体的得到每个变量的最优值,以便得到目标函数的最大值。
当用户需求的体量一般时,可以尝每次对两个或者两个以上的变量进行控制,得到所有变量的最优值,以便得到目标函数的最大值。
当用户需求的体量比较小时,对所有的变量进行控制,一次得到所有变量的最优值,以便得到目标函数的最大值。
S104,根据最大值对每一层的用户需求进行设计,根据设计结果将用户需求分配至对应的节点上。
由上可见,线性规划的变量数量非常大,如果将以上变量直接送入线性规划工具,得到解的时间将会非常长。为了解决这个问题,本方案发现FPGA之间的cw变量是个小数,线性规划工具对它的解的搜索空间非常巨大,也就是非常耗时。因此本方案创新性地对信号与物理连线的比例cw使用二分法得到不同的cw值,在上述约束条件中作为固定输入参数,进行线性规划的求解。也即:
(1)使用如下方法,在每次迭代中得到一个cw新值。
(2)将cw值作为一个固定值的参数写入本发明提供的约束条件中。
(3)将线性规划的优化目标由f改为h,即替换最小化通信距离为线性规划的目标函数。
(4)记录每次迭代cw与h的值,统计最大的cw和h,按照本发明提供的方法步骤中构建的目标函数,算出最终目标f的值,取f最大为最终的组网分割结果。
本发明提供了一种使用线性规划动态组网的装置,该装置包括:目标构建模块、约束函数构建模块、最大值求解模块以及分配模块。
目标函数构建模块,用于构建动态组网的目标函数,其中,动态组网关于设计分割以及节点分配,节点包括驱动节点和负载节点,目标函数具体表示为:
其中,f_0表示对用户设计在不进行分割的预估运行频率;mcw表示FPGA之间通信信号与实际物理连线的数量比;mh表示信号传递时的最大距离。
约束函数构建模块,用于将用户需求分为多层,在每一层根据不同的约束条件对目标函数构建不同的约束函数,并确定约束函数中的多个变量。约束条件包括:固定约束条件与优化约束条件;固定约束条件包括:固定分配位置的节点以及FPGA的物理结构及性能;优化约束条件包括:驱动节点到负载节点之间可能的通信路径。
固定分配位置的节点对应的约束函数表示为:
f
其中,m表示FPGA的个数;n表示节点的个数;i表示第i个节点;j表示第j个FPGA;f
FPGA的物理结构和性能对应的约束函数表示为:
其中,w
驱动节点到负载节点之间可能通信路径对应的约束函数表示为:
其中,x
最大值求解模块,用于利用控制变量法,对每一层的多个变量进行求解,进而对目标函数进行求解,得到目标函数的最大值,具体包括:
(1)采用控制变量法,每次将多个变量中的一个变量作为变量,其余变量作为常量。
(2)采用二分法,对变量进行多次赋值,得到多个变量对应的解。
(3)选择多个变量对应的解的最优解,分别作为多个变量的值,确定目标函数。
(4)对目标函数进行求解,得到目标函数的最大值。
分配模块,用于根据最大值对每一层的用户需求进行设计,根据设计结果将用户需求分配至对应的节点上。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。在实施本发明时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,也可以将实现某功能的模块由多个子模块或子单元组合实现。
本发明中所述的方法、装置或模块可以以计算机可读程序代码方式实现控制器按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(英文:Application Specific Integrated Circuit;简称:ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本发明所述装置中的部分模块可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本发明提供了一种使用线性规划动态组网的服务器,包括存储器和处理器;存储器用于储存计算机可执行指令;处理器用于执行计算机可执行指令,以实现一种使用线性规划动态组网的方法。
上述存储介质包括但不限于随机存取存储器(英文:Random Access Memory;简称:RAM)、只读存储器(英文:Read-Only Memory;简称:ROM)、缓存(英文:Cache)、硬盘(英文:Hard Disk Drive;简称:HDD)或者存储卡(英文:Memory Card)。所述存储器可以用于存储计算机程序指令。
虽然本发明提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。本实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照本实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本发明提供了一种计算机可读存储介质,计算机可读存储介质有可执行指令,计算机执行可执行指令时能够实现一种使用线性规划动态组网的方法。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,也可以通过数据迁移的实施过程中体现出来。该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施方式采用递进的方式描述,各个实施方式之间相同或相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。本发明的全部或者部分可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、移动通信终端、多处理器系统、基于微处理器的系统、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
以上实施例仅用以说明本发明的技术方案,而非对本发明限制;尽管参照前述实施例对本发明进行了详细的说明,本领域普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明技术方案的范围。
- 一种区块链ID生成及使用方法、装置、电子设备以及存储介质
- 一种使用机器人赛车的方法、装置、电子设备及存储介质
- 一种网页的动态更新方法、装置、电子设备及存储介质
- 一种动态调整表格的方法、装置、设备及存储介质
- 一种用户收据动态打印方法、装置、设备及可读存储介质
- 一种微电网群动态组网方法、装置、存储介质及电子设备
- 一种动态时隙组网方法、装置、设备及存储介质