2024华数杯全国大学生数学建模竞赛B题思路-VLSI电路单元的自动布局-关键路径优化的多层划分算法

news2024/11/23 7:27:21

        在粗化过程中,只考虑了如何匹配以使得后续划分 中有尽可能少的割边数,但没有将关键路径和割边的时延视为划分信息的一部分, 这可能导致关键路径较多地被切割,增加了关键路径时延,影响了并行度。另外, 初始划分结果受到生长所选择初始结点的影响较大,若从内部结点开始生长可能 会导致划分出不连通的子区域。为了解决这些问题,对 Metis 算法的粗化、初始 划分、两个阶段进行了改进和优化,提出了一种关键路径优化的多层划分算法 CPOWPA(Critical Path Optimized Multilevel Partitioning Algorithm)。

1.1 粗化阶段的优化和改进

1.1.1 Metis 粗化阶段存在的问题

        粗化阶段是多层划分算法的关键阶段之一。该阶段旨在通过合并顶点的策略 将原始图压缩成小图,以便进行后续的初始划分,相当于为后续的阶段做了准备。 我们可以发现,对原始图使用不同的粗化策略将产生不同的粗化效果。Metis 算 法中,每个层级的粗化可以分为三个步骤:

(1)随机选择当前层级未粗化的结点;

(2)选择与该结点相连的邻居结点,按照随机匹配或重边匹配的规则进行 匹配;

(3)将匹配到的结点和他们之间相连的边进行点权的相加和边权的相加, 顶点合并形成新的结点。 然而,在大规模电路划分的场景下,这种粗化策略存在一些缺陷,其中最显 著的几点是:

        在对任务图进行划分的过程中,应该考虑关键路径和割边时延,以减少对电 路网表中电路单元时序关系的破坏,这样做可以提高划分结果的调度并行性。然 而,在 Metis 算法中,关键路径信息和割边时延并未融入到划分的过程中,这可 能会导致关键路径被多次切割,从而增加电路整体的调度时间。为了更好地展示 这一点,将电路网表映射为 DAG,假设关键路径为,边权为 1,割边时延为 2。图 3.1 和图 3.2 分别展示了不同的划分方式在调度结果上的差 异。虽然这两种划分方式恰好切割了相同数量的边,但是由于划分方式 2 中较多 的割边破坏了关键路径完整性,引入割边时延后,造成了划分结果的调度时间截 然不同。因此,在进行电路网表的划分时,应该将关键路径信息和割边时延纳入 到划分的过程中,以更好地优化划分结果的调度并行性。

 

        在 VLSI 电路划分中,划分算法需要考虑的不仅是传统图划分问题中的负载 均衡和割边数,还需要考虑划分结果的关键路径时延。在电路运行时,每个逻辑 单元的任务需要基于其源单元的运算结果,如果源单元到目的单元的连接被切断, 就会引入额外的通信时延,甚至会导致处理器空闲。图 3.2 中的划分方式 2 多次 切割了关键路径上的边,频繁地破坏了关键路径上结点之间的时序关系,导致被 分配到关键路径上靠后结点的处理器需要等待前面的处理器完成执行,增加了处 理器的空闲时间。这种由于破坏关键路径上结点之间的时序关系而导致的处理器 空闲情况,在处理器数量越多时越明显,这会显著降低多处理器的并行性,影响 电路整体的效率。因此 VLSI 电路划分的场景下需要特别关注划分结果的关键路 径时延,而不单追求传统图划分问题中的负载均衡或最小化边割数。

        其次,在随机匹配或重边匹配模式中,都是按照某一规则选 择步骤(1) 中结点的邻居结点 进行匹配,那么 一般来说,结点度越大的结点被匹配的概率 越高,结点度越小的结点被匹配的机会更小。当一个结点的度数较大时,它更有 可能与一个度小结点的邻居结点相匹配,这样会增加度小结点被孤立的风险,从 而影响后续的算法流程。

图 3展示了 Metis 随机匹配的结果,其中,度数较大的顶点优先被匹配,导致两个顶点被孤立,并且顶点的权值分布存在明显的不均衡,分别为 4、4、 1 和 1。在初始划分过程中,使用 KL/FM 优化算法进行迁移时,由于顶点权值 差异较大,导致原本处于均衡状态的几个区域,在结点交换后可能会出现不稳定 的情况。

图3随机选点导致度小结点被孤立 

        此外,在粗化过程的重边匹配中,仅考虑了边权,即优先匹配边权较大的结 点,而忽略了对关键路径上结点的保护。当遇到多个相同边权的邻接结点,其中 某个结点合并了关键路径上的结点,而其他结点未包含关键路径上的结点,有可 能无法合理地进行匹配。这些都会影响最终的匹配效果,进而导致划分结果的关 键路径时延增加

1.1.2 设置合理的边权值

试图通过有效地利用关键路径最长的特征和割边时延,借助重边匹配的思路, 将关键路径和割边时延的信息添加至边权当中, 降低其他影响电路单元之间的时序关联,从而大大改善了划分结果的质量, 同时也增强了调度的并行性。因此,有效地整合这些特征,使其与划分的效率相 一致,是实现有效的划分的重要步骤。因此,我们需要确立一个能够准确地捕捉 结构拓扑特征的 𝑚𝑎𝑥𝐷𝑒𝑝𝑡ℎ 值与𝑚𝑎𝑥𝐻𝑒𝑖𝑔ℎ𝑡值,以便更好地理解它们之间的关系。 具体而言,我们可以使用公式(3.1)与(3.2)来确定顶点 p 的 𝑚𝑎𝑥𝐷𝑒𝑝𝑡ℎ ,它 可以用来衡量从该路径结构层次最高的点一直延伸至 p 的最短距离;而 对于 p 的𝑚𝑎𝑥𝐻𝑒𝑖𝑔ℎ𝑡,它可以用来衡量从从结构层次高为 0 的点一直延伸至 p 的最短距 离。

 

其中,𝑖𝑛𝐷𝑔𝑟𝑒𝑒(𝑜𝑢𝑡𝐷𝑒𝑔𝑟𝑒𝑒)表示结点的入(出)度结点集合, 𝑤(𝑝𝑖) 表示 结点 𝑝𝑖 自身的入出引脚的中间时延, 𝑤(𝑝𝑖 , 𝑝) 表示结点 𝑝𝑖 到结点 𝑝 的传输 时延。

然后, 根据公式 ,通过应用拓扑时序信息,我们可以在图中找到拥有 向边 e 的所有路径中,找到最长的路径。

𝑚𝑎𝑥𝑃𝑎𝑡ℎ(𝑒) = 𝑚𝑎𝑥𝐷𝑒𝑝𝑡ℎ(𝑢𝑝𝑁𝑜𝑡𝑒(𝑒)) + 𝑤(𝑒) + 𝑚𝑎𝑥𝐻𝑒𝑖𝑔ℎ𝑡(𝑑𝑜𝑤𝑛𝑁𝑜𝑡𝑒(𝑒)) (3.3) 最后, 我们为了充分利用多层划分过程中的关键路径和割边时延的信息, 重 新定义了新的边权值 𝑐𝑤。𝑐𝑤值通过结合有向边所在的最长路径和割边的时延计 算得到。𝑐𝑤的三种计算方式详见公式 。

 其中, 𝑐𝑢𝑡 值表示割边的时延,通常在划分前统一设置。通过以上公式计 算的结果为小数时选择向上取整。新的边权体现了该边所在的最长路径长度和割 边时延的数学关系,新的边权越大,表示该边越有可能在关键路径上,或者该路 径经过若干次切割,原有的路径长度加上割边时延越有可能形成划分后新的关键 路径,从而更应该保护,尽量不要被切割。通过定义结合了最长路径长度和割边 时延信息的边权可以使后续重边匹配乃至 FM 算法增益计算都能考虑到关键路 径和割边时延的信息,从而使结果更加符合划分目标。

1.1.3 度小结点优先选择策略

        在结点图中,度数大的结点往往有更多的连接,因此更容易被相邻结点匹配, 而度数小的结点则更容易被“孤立”。现有的粗化方法,如随机匹配或重边匹配, 往往在每个粗化级别的点选取过程中采用随机策略,这容易导致度数大的结点 “聚集”,而使度数小的结点孤立。为了解决这个问题,我们采用了优先选择度 数小的未匹配结点的策略。在随机匹配或重边匹配的第一步中,我们按照从小到 大的顺序对结点进行排序,选择度数小且未匹配的结点,然后再进行后续的随机 匹配或重边匹配操作。这样可以避免度数小的结点被忽视,提高整个图粗化过程 的效率。

图4展示了一个采用度小结点优先选择策略进行随机匹配的结果,通过该策略,优先选择顶点度小的顶点,从而减少了孤立点的数量。最终粗化后的顶 点权值为 4、4、3,这基本上实现了负载均衡的效果。

图4 度小结点优先选择的影 响

1.1.4 关键路径优先的重边匹配机制

在粗化算法中,我们需要将图中的结点不断地合并,以便将图缩小到所需的 规模。而 Metis 重边匹配的目的就是在合并结点的同时,尽可能减少被切割边的 权重,从而减少在划分过程中产生的割边数。我们可以利用这一机制,由于此前 将结合了有向边路径和割边时延信息的𝑐𝑤值作为边权这一操作,能够尽可能地 将关键路径上的边隐藏起来,防止被后续的划分所切割,有效地保护关键路径上 的边。并且我们还对重边匹配机制进行了优化,提出了一种关键路径优先的重边 匹配机制:在进行重边匹配的时候,如果存在多个相同边权的邻接结点,就会优 先匹配与融合边数较少的边相连的邻接结点。这是因为在相同边权的情况下,融 合边数较少的边的平均边权更大,含有最长路径的概率更高,这样可以较大可能 地避免切割到关键路径。

1.1.5 低权点融合方法

考虑到最终粗化后的图,可能会存在点权特别小的顶点,从而影响后续划分, 尤其是对负载均衡的损坏。我们提出了一种低权点融合的方法:在粗化结束后, 确定一个结点权重阈值 k,所有权重小于等于 k 的顶点都将被合并成一个超级顶 点。具体实现方法如下: 设置权重阈值 k 的值,遍历所有粗化后的结点,找到所有点权小于 k 的顶 点,将这些顶点称为低权点;创建一个超级顶点,该顶点的点权设置为所有低权 点点权的和;更新超级顶点与其他顶点的连接关系,对于所有与低权点相连的顶 点,需要将它们与超级顶点连接的边权值更新为这些低权点与其相连的边权值之 和,如果一个顶点与超级顶点之间有多条边,则需要将它们的边权值加和;最后,需要将这低权点从图中删除,并将超级顶点添加到图中,成为新的顶点,并保留 低权点和超级顶点的映射关系。在更新后的图中,与低权点相邻的顶点现在将与 超级顶点相邻。

具体粗化算法如下:

(1)计算每条边的最长路径,并选择一种数学计算方法对最长路径和割边 时延进行计算出 𝑐𝑤 值,并将其设定成各条边的边权。

(2)在选择结点的步骤中,首先对所有结点进行度的计算,并按照从小到 大的顺序将它们排序。然后从未匹配过的结点中选择度最小的结点去与其他结点 进行匹配。

(3)在重边匹配阶段,根据步骤 2)的选点,与相邻的未被匹配的结点中按 照边权大小的顺序进行匹配,如果有多个邻接结点具有相同的最大边权,则优先 选择所融合边数较小的边所连接的邻接结点进行匹配,因为所融合边数较小的边 往往具有更大的平均边权,同时也更有可能含有更长的路径。这样做能够减少切 割到较长路径的边,从而提高匹配的效率。

(4)更新匹配后的粗图;

(5)判断 4)中的粗图是否粗化到所设置的结点规模,是则转 6),否则转 2);

(6)经过粗化处理后,若仍有权重特别低的结点,则需要对其进行低权点 融合,以形成一个更大的超级顶点。

与原始的 Metis 粗化算法相比,改进后的粗化策略在硬件加速的功能验证场 景中表现更好,主要表现在以下几个方面:首先,在划分过程中,将各边所在的 最长路径和割边时延信息作为划分的条件考虑,可以有效减少划分后关键路径的 大小。其次,在选点时,优先选择结点度小的顶点,减少了粗化过程中度小的顶 点被孤立的概率。在重边匹配时,根据预处理时设置的边权进行匹配,并且边权 相等时优先匹配最长路径更大的结点,进一步优化了划分后的关键路径。最后, 在粗化结束后,采用低权点融合的方式,将权值特别小的顶点通过创建的虚结点 连接起来,以使得后续划分后的划分结点数更加均衡。 图 3.5 为 CPOWMA 粗化算法的执行流程及所采用的改进策略。 粗化阶段 CPOWMA 算法的伪代码如算法 3.1 所示。

1.1.6 时间复杂度分析

n 代表点数,Metis 的粗化阶段的时间复杂度为 O(n log n),主要包括选择和 匹配的步骤,选择步骤的时间复杂度为 O(n),匹配步骤的时间复杂度为 O(n log n),我们所提出的算法选点步骤时间复杂度也为 O(n),匹配步骤的时间复杂度为 O(n log n),最后低权点融合步骤的时间复杂度为 O(n),因此整体的时间复杂度 为 O(n log n)

3.2 初始化分阶段的优化和改进

3.2.1 Metis 初始化分阶段在的问题

在划分过程中,初始划分结果对后续细化优化方向具有重要影响。Metis 算 法的初始划分阶段通过结合区域生长算法和 FM 启发式优化算法实现。然而,通 过分析 Metis 划分程序和实际调试,发现存在以下问题:区域生长过程中,使用 随机点作为起点进行二分,若初始结点选择不当,会导致较差的划分结果,从而 影响后续 FM 优化。例如,在图中以结点 M 为生长起点划分出来的结果如图 3.6(a) 所示,区域一存在不连通区域和更多的边界,影响后续细化。相反,如果初始点 选择在图的结构层次最高的点 A,则区域生长不会产生不连通的区域,可获得更 小的边界,划分出的图更适合后续优化,如图 3.6(b)所示。此外,这种做法还可 以使同一条路径上的边更多地划分到同一划分,从而在 FM 优化和细化中得到更 小的割边数和关键路径。

1.2.2 深度优先的区域增长策略

        针对在初始划分阶段存在的问题,我们 提出了一种名为深度优先区域生 长算法(Depth-Preority Growing Algorithm)的策略。该算法与区域生长算 法相似,但不是随机选择起点进行区域 生长二分,而是选择具有较高 划分层 次结构的顶点,即 𝑚𝑎𝑥𝐷𝑒𝑝𝑡ℎ 较小的顶点进行生 长划分。通过选择层 次较高 的顶点作为起点,可以避免将同一区域 划分为不连通的两 块,并且可以使同 一路径上的边更多地划分到同一个划 分中。这样做可以在 后续的优化过程中 获得更小的边切数和更低的关键路径。深度优先区域生长 算法的具体伪代码 可见算法 3.2

我们选择找到图结构中层次结构最高的结点作为区域生长的起点,然后使用 区域生长算法对图进行划分,实验证明这种方法比之前随机选择起始点的方法效 果更好。然后,我们使用 FM 优化算法进行微调,该算法通过构建顶点移动优 先队列来确定每个顶点的移动顺序,从而改善划分质量。通过这种方法,我们可 以得到更好的图划分结果,以满足实际应用的需求。 改进后的初始划分策略相较于原始的 Metis 才用的初始划分算法表现更佳, 其中改进的方法包括:引入深度优先区域生长算法,该算法能够减少区域生长算 法的随机性,防止出现不连通的区域,同时减少了初始划分时的边切数,并提高 了同一路径上顶点被划分到同一划分的概率。这为后续的 FM 优化和细化提供 了更好的优化方向。

 

 更多华数杯相关文章参考:
2024年华数杯全国大学生数学建模竞赛A题-考虑动力学和外部干扰的关节角路径优化问题4详细求解过程-CSDN博客

2024年华数杯全国大学生数学建模竞赛A题-在有障碍物的情况下优化机器臂底座移动路径和关节角路径问题3详细求解过程-CSDN博客 2024年华数杯全国大学生数学建模竞赛A题-关节角路径的优化设计以最小化末端误差和能耗问题2详细求解过程-CSDN博客

 2024年华数杯全国大学生数学建模竞赛A题-六自由度机器臂的数学建模及关节角路径优化问题1详细求解过程-CSDN博客

 2024年第五届“华数杯”全国大学生数学建模竞赛C赛题解析-CSDN博客

 2024年第五届“华数杯”全国大学生数学建模竞赛B赛题解析-CSDN博客

2024年第五届“华数杯”全国大学生数学建模竞赛A赛题解析-CSDN博客

2024年第五届“华数杯”全国大学生数学建模竞赛-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1983013.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

卡码网--数组篇(有序数组的平方)

系列文章目录 卡码网–数组篇(二分法) 卡码网–数组篇(移除元素) 文章目录 系列文章目录前言977.有序数组的平方 前言 代码随想录详情链接 977.有序数组的平方 力扣链接:https://leetcode.cn/problems/squares-of-a-sorted-array/description/ Step 1: 读题&…

Xinstall全链路数据统计,助力推广者破解社交分享难题

在数字营销的时代,社交分享推广已成为App运营的重要手段。然而,推广者们在进行社交分享推广时,往往面临着诸多痛点。其中,最关键的问题便是如何准确、高效地统计推广效果。今天,我们就来聊聊Xinstall这一神奇工具&…

【优秀python大屏】基于python flask的广州历史天气数据应用与可视化大屏

摘要 气象数据分析在各行各业中扮演着重要的角色,尤其对于农业、航空、海洋、军事、资源环境等领域。在这些领域中,准确的气象数据可以对预测未来的自然环境变化和采取行动来减轻负面影响的决策起到至关重要的作用。 本系统基于Python Flask框架&#…

五种IO模型(阻塞,非阻塞,多路复用[select, poll, epoll],信号驱动,异步IO)

五种IO模型(阻塞,非阻塞,信号驱动[select, poll, epoll],多路复用,异步IO) 本章节代码:一,五种IO模型阻塞IO非阻塞IO多路复用(也叫多路转接)信号驱动异步IO例…

Solaris10(SPARC/x86)源码编译安装64位Python

Solaris10(SPARC/x86)源码编译安装64位Python 系统自带的Python版本为32位,需要安装64位版本Python。 solariskalami>python Python 3.3.6 (default, Mar 18 2016, 14:34:49) [GCC 5.2.0] on sunos5 Type "help", "copyright", "cred…

redis在Dokcer的安装使用

1 redis 安装和配置 # redis 是什么 开源:基于c编写的,早起版本2w3千行 基于键值对的存储系统:字典形式 多种数据结构:字符串,hash,列表,集合,有序集合 高性能,功能丰富…

ORB-SLAM2运行环境搭建

操作系统:Ubuntu20.04 1.安装Eigen3 推荐大家安装版本 3.2.10 链接:https://eigen.tuxfamily.org/index.php?titleMain_Page mkdir build cd build cmake .. sudo make install2.安装Pangolin 推荐安装0.5版本 链接:https://github.com…

【生成式AI-二-强大的AI下我们可以做什么】

强大的AI下我们可以做什么 人工智能的厉害之处我们可以作什么评估模型好坏的难度prompt engineering微调fine tune 人工智能的厉害之处 人工智能并不是忽然就爆火的,事实上,很久以前就已经有深度学习、机器学习这些概念了,那现在的人工智能和…

MybatisPlus常见注解及配置

什么是MybatisPlus? MybatisPlus(简称MP)是一个基于MyBatis的增强工具,它在MyBatis的基础上进行了扩展,旨在简化MyBatis的操作,提高开发效率。MybatisPlus继承了MyBatis原生的所有特性,并添加了一些额外的…

【C++刷题】优选算法——BFS第三辑

多源BFS问题解决:用 BFS 解决边权为1的多源最短路问题 解法一:把多源最短路问题转化为若干个单源最短路问题 解法二:把所有的源点当成一个“超级源点”,从而转化为单源最短路问题(推荐) 单源最短路问题的解…

Linux进程--进程查询和创建

目录 一、前言二、进程查询三、进程创建1.创建操作2.返回值疑云 一、前言 本篇文章的探讨是基于一定的进程理解的,在此基础上对有关进程的操作进行讲解。 二、进程查询 首先我们来认识一下进程查询的指令 ps ajx |head -1&& ps ajx |grep process |grep…

B1.5 EL0视角下的软件控制功能

快速链接: . 👉👉👉 ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 付费专栏-付费课程 【购买须知】个人博客笔记导读目录(全部) B1.5 EL0视角下的软件控制功能 以下章节描述了软件控制功能的EL0视图: 异常处理 等待中断和等待事件

Dubbo源码深度解析(二)

接着《Dubbo源码深度解析(一)》继续讲,上篇博客主要讲Dubbo提供的三个注解的作用,即:EnableDubbo、DubboComponentScan、EnableDubboConfig。其中后两个注解是在EnableDubbo上的,因此在启动类上加上EnableDubbo注解,等…

Java并发—volatile关键字的作用及使用场景

在这篇文章Java并发—Java内存模型以及线程安全-CSDN博客多次提及volatile关键字,这是一个非常重要的概念,主要用于多线程编程中,它确保了变量的可见性和禁止指令重排序,但不保证原子性,下面详细解释volatile关键字的作…

使用SpringAOP实现公共字段填充

文章目录 概要整体架构流程技术细节小结 概要 在新增员工或者新增菜品分类时需要设置创建时间、创建人、修改时间、修改人等字段,在编辑员工或者编辑菜品分类时需要设置修改时间、修改人等字段。这些字段属于公共字段,也就是也就是在我们的系统中很多表…

Flux:Midjourney的新图像模型挑战者

--->更多内容&#xff0c;请移步“鲁班秘笈”&#xff01;&#xff01;<--- Black Forest Labs是一家由前Stability.ai开发人员创立的AI初创公司&#xff0c;旨在为图像和视频创建尖端的生成式 AI 模型。这家初创公司声称&#xff0c;其第一个模型系列Flux.1为文本到图像…

【FAQ】为啥MultipartFile 的InputStream available会为0

背景 在Spring boot 文件上传案例中可能会存在获取MultipartFile InputStream.available()方法为0的情况&#xff0c;导致在文件上传到Minio后对象大小为0的情况 问题原因 在介绍问题原因前我们先探究下MultipartFile 是怎么实现的 这里只是剖析InputStream&#xff0c;所以…

Linux驱动入门实验班day03-另一种注册cdev的方式

问题&#xff1a;原来的函数/*major register_chrdev(0, "100ask_hello", &hello_drv);*/会将主设备号major对应的所有次设备号&#xff0c;对应的设备节点&#xff0c;总是访问到驱动程序hello_drv。 这个问题&#xff0c;会导致主设备号不够用。 解决方式&am…

c++ - unordered_set与unordered_map模拟实现

文章目录 前言一、unordered_set模拟实现二、unordered_map模拟实现 前言 1、unordered_set与unordered_map的介绍与接口使用可参考&#xff1a;unordered_set 、 unordered_map。 2、unordered_set和 unordered_map 的底层实现都是基于哈希表的。哈希表是一种通过哈希函数组织…

HarmonyOS(48) 挂载卸载事件 UI组件的添加和删除监听

UI组件的添加和删除监听 一级目录示例代码参考资料 一级目录 我们通过if条件添加组件的时候&#xff0c;是可以通过onAttach、onDetach、onAppear、onDisAppear来监听组件的添加和删除。 示例代码 // xxx.ets// xxx.ets import { promptAction } from kit.ArkUIEntry Compo…