[发明专利]一种多阵列粗粒度可重构架构的多层级并行性开发方法在审
申请号: | 202310003557.X | 申请日: | 2023-01-03 |
公开(公告)号: | CN116048521A | 公开(公告)日: | 2023-05-02 |
发明(设计)人: | 绳伟光;俞嘉力;杨伟东;蒋剑飞;景乃锋;王琴;毛志刚 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 上海旭诚知识产权代理有限公司 31220 | 代理人: | 郑立 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 阵列 粒度 构架 多层 并行 开发 方法 | ||
1.一种多阵列粗粒度可重构架构的多层级并行性开发方法,其特征在于,包括以下步骤:
步骤1、编译器输入的C++文件经过Polygeist处理变成由MLIR中Affine方言和SCF方言组成的中间表达式;
步骤2、对任务进行循环级的优化,并使用并行性分析和阵列间映射算法来开发高层次的任务级并行性和数据级并行性;
步骤3、将并行信息通过CGRA方言形式进行存储,MLIR的方言会被翻译回带有并行信息的编辑后的C++文件;
步骤4、编辑后的C++文件经过Clang生成低级别的中间表达式,并通过阵列内的映射算法开发循环级并行性和指令级并行性;在整合阵列间信息后,最终生成配置文件,完成整个流程。
2.如权利要求1所述的多阵列粗粒度可重构架构的多层级并行性开发方法,其特征在于,所述步骤2,在循环级优化的过程中,遍历每个任务,并根据每个任务包含算子个数对任务的数据流图大小进行分析;如果数据流图大小小于单个阵列的节点个数,则采用循环展开的方式来增加最内层循环的算子个数以提升利用率。
3.如权利要求1所述的多阵列粗粒度可重构架构的多层级并行性开发方法,其特征在于,所述步骤2,对于输入程序中的每一个任务,选择进行并行执行或流水线执行,以及选择不同的分割份数,对每个分割后的子任务进行映射。
4.如权利要求1所述的多阵列粗粒度可重构架构的多层级并行性开发方法,其特征在于,所述步骤2,对于所有的任务,计算能够分割成的子任务的份数以及采用并行执行还是流水线执行,并根据分割后的依赖关系构建子任务依赖关系图;采用整数二次规划算法进行映射关系的建模和求解并选取最优值。
5.如权利要求4所述的多阵列粗粒度可重构架构的多层级并行性开发方法,其特征在于,所述整数二次规划需要满足的约束包括任务放置约束、阵列放置约束、分割约束、路由约束、流水线时间约束。
6.如权利要求4所述的多阵列粗粒度可重构架构的多层级并行性开发方法,其特征在于,所述整数二次规划的目标为最小化整个多阵列CGRA的执行时间。
7.如权利要求1所述的多阵列粗粒度可重构架构的多层级并行性开发方法,其特征在于,所述步骤3,在MLIR中引入CGRA方言来表示每个任务的执行模式作为阵列间映射的关键信息。
8.如权利要求1所述的多阵列粗粒度可重构架构的多层级并行性开发方法,其特征在于,所述步骤3,CGRA方言中的mode标识表示任务被加速执行的模式为并行模式还是流水线模式,factor标识规定了以mode执行下的分割份数,即任务对应的子任务的个数;mode和factor两个标识共同决定了任务的执行模式。
9.如权利要求1所述的多阵列粗粒度可重构架构的多层级并行性开发方法,其特征在于,所述步骤3,CGRA方言经过翻译后以#pragma开头的预处理形式标识在任务开头处。
10.如权利要求1所述的多阵列粗粒度可重构架构的多层级并行性开发方法,其特征在于,所述步骤4,子任务在对应的阵列中进行映射,映射时考虑硬件资源的约束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310003557.X/1.html,转载请声明来源钻瓜专利网。