-
公开(公告)号:CN112558977B
公开(公告)日:2022-11-15
申请号:CN201910910502.0
申请日:2019-09-25
Applicant: 无锡江南计算技术研究所
IPC: G06F8/41
Abstract: 本发明公开一种面向异构众核后端基于代价模型的多面体优化方法,包括以下步骤:S1、编译器解析位于主核和从核上的用户程序的编译标识,生成对应的主核中间表示和从核中间表示;S2、编译器对S1中生成的主核和从核的中间表示层代码进行分析和优化;S3、对是否实施多面体调度与优化方法进行收益评估;S4、对有收益的静态控制单元实施多面体调度与优化,生成新的中间表示;S5、编译器将新的向量中间表示生成可重定向文件;S6、将中的可重定向文件与库文件链接,生成可执行文件。本发明首次提出并实现了片上异构众核的程序多面体优化自动变换方法,并加入了主核和从核独立的代价模型计算框架,保证了在有收益的前提下进行程序变换以节省程序的编译时间。
-
公开(公告)号:CN112445520B
公开(公告)日:2022-11-15
申请号:CN201910794939.2
申请日:2019-08-27
Applicant: 无锡江南计算技术研究所
Abstract: 本发明公开一种针对循环内条件转移指令的转移预测优化方法,包括以下步骤:S11、判断一次循环内的指令条数是否能够满足带条件标记的运算指令在带条件转移标志位的条件转移指令之前至少提前N条的条件;S12、如果满足条件,编译器直接生成汇编代码,如果不满足,编译器根据循环体代码量与条件N计算需要循环展开的次数,进行循环展开,生成汇编代码;S13、带条件标记的运算指令提前改变条件转移指令的转移标志位;S14、条件转移指令根据对应的条件标记位进行判断,如果成立,则处理器根据条件转移标记指示跳转取指,否则顺序取指;S15、不论预测为跳转还是不跳转,条件标记位使用后即作废,转移指令条件标记位清0。本发明能够规避循环最后一次转移带来的性能损失。
-
公开(公告)号:CN112558976B
公开(公告)日:2022-07-12
申请号:CN201910903889.7
申请日:2019-09-24
Applicant: 无锡江南计算技术研究所
Abstract: 本发明公开一种即时编译引擎自适应函数加载方法,面向异构众核平台,包括以下步骤:S1、对于一个函数符号,执行引擎检查其是否为外部函数;S2、对于一个S1中标记的外部函数符号,执行引擎检查其是否为从核函数,并使用对应的动态链接库加载函数加载包含该外部函数符号的动态链接库;S3、从步骤S2中加载的动态链接库中获取外部函数入口地址;S4、使用步骤S3中获取的外部函数入口地址,对用户程序代码段进行GOT表覆写和重定位回填。本发明实现了异构众核程序对核组空间的有效利用,完善了面向异构众核平台的即时编译引擎的功能。
-
公开(公告)号:CN112527303A
公开(公告)日:2021-03-19
申请号:CN201910885728.X
申请日:2019-09-19
Applicant: 无锡江南计算技术研究所
Abstract: 本发明公开一种面向即时编译的基于动态库的GOT表管理方法,包括以下步骤:S1、创建包含GOT表的动态链接库,此GOT表位于动态链接库的数据段;S2、在即时编译引擎解析重定位前,动态载入GOT表到内存空间,并获取GOT表的首地址;S3、即时编译引擎根据程序代码段的重定位类型,进行GOT表覆写和重定位回填;S4、在程序即时编译执行结束后,动态释放包含GOT表的动态链接库;S42、退出即时编译。本发明降低了LLVM即时编译引擎对新增硬件后端中GOT表的支持难度,提高了LLVM即时编译引擎的移植效率,在基于国产处理器的LLVM即时编译引擎中快速实现了基于动态库的GOT表管理。
-
公开(公告)号:CN112446471A
公开(公告)日:2021-03-05
申请号:CN201910799257.0
申请日:2019-08-28
Applicant: 无锡江南计算技术研究所
Abstract: 本发明公开一种基于异构众核处理器的卷积加速方法,包括以下步骤:S1、根据异构众核处理器的核数,确定输入特征图和卷积核的多核划分方法,实现众核并行加速,S2、各计算核心将划分后的数据通过DMA(直接存储器访问)的方式传输至片上存储器,实现片上存储加速,S3、将卷积操作核心计算过程中的标量计算操作优化为向量计算操作,实现SIMD指令加速,S4、结合异构众核处理器流水线特性,对卷积核心计算过程的指令流进行优化,以提高执行效率,实现指令并行加速。本发明对卷积操作进行加速,显著提升了卷积神经网络在异构众核处理器上的训练和推理性能。
-
公开(公告)号:CN112445482A
公开(公告)日:2021-03-05
申请号:CN201910794946.2
申请日:2019-08-27
Applicant: 无锡江南计算技术研究所
IPC: G06F8/41
Abstract: 本发明公开一种面向容量受限的程序栈空间深度追溯方法,包括以下步骤:S1、在链接器中建立函数信息的数据结构,形成函数调用关系流程图;S2、获取所有的函数符号信息,建立相应的函数信息数据结构,并将函数的名称、PC值范围、自身栈空间深度信息安装到对应的函数信息结构中;S3、遍历程序所有的重定位信息,根据重定位信息来确定函数调用关系,根据分析结果更新各个函数信息的链表指针;S4、对建立的函数调用关系图做深度优先遍历,通过累加计算获取根节点函数的栈空间深度,对所有根节点栈空间深度做排序后输出。本发明通过静态分析的方法获取栈空间信息,无需重新编译,无需运行插桩,对于程序分析、错误定位以及程序优化有着很好的指导作用。
-
公开(公告)号:CN112445465A
公开(公告)日:2021-03-05
申请号:CN201910799245.8
申请日:2019-08-28
Applicant: 无锡江南计算技术研究所
Abstract: 本发明公开一种基于C代码生成的神经网络模型推理和训练方法,包括以下步骤:S1、以通过各种AI编程框架开发的模型作为输入,AI框架编译器识别各种模型格式并转化为统一的计算图,将输入的模型转化为底层IR;S2、将S1中生成的计算图输入C代码生成模块,输出总控函数;S3、C代码生成模块针对不同的底层IR,生成对应的C代码;S4、将生成的总控函数、各IR对应的C代码以及C‑基础算子库,输入到支持C语言和相应硬件平台的基础编译器,通过基础编译器的优化过程转化为运行程序,并在对应硬件平台上执行推理过程、训练过程。本发明实现了AI框架编译器在LLVM不支持的硬件平台上的快速移植,能够快速实现神经网络模型在LLVM不支持的特定硬件平台上的训练和推理过程。
-
公开(公告)号:CN114217807B
公开(公告)日:2024-04-30
申请号:CN202110381660.9
申请日:2021-04-09
Applicant: 无锡江南计算技术研究所
Abstract: 本发明公开一种基于异构众核架构的直接内存访问编译优化方法,包括以下步骤:S1、通过调度原语cache_read,将张量数据由主存搬移到局存;S2、通过调度原语pragma,将S11中的数据搬移操作改写为DMA GET操作;S3、通过调度原语double_buffer,将S2中的DMA GET操作优化为双缓冲模式;S4、通过调度原语pragma,在局存副本AA使用位置前插入回答字判断操作;S5、通过调度原语cache_write,将结果张量B的局存副本BB由局存搬移至主存。本发明充分利用硬件资源,最大程度实现算子的计算访存操作的重叠,从而提升深度学习负载在异构众核平台上的性能。
-
公开(公告)号:CN112527300B
公开(公告)日:2023-06-13
申请号:CN201910879803.1
申请日:2019-09-18
Applicant: 无锡江南计算技术研究所
IPC: G06F8/41
Abstract: 本发明公开一种面向多目标的细粒度编译自调优方法,包括以下步骤:S1、根据用户需求,确定编译优化的目标;S2、进行代码核心段标识,即对程序的执行时间进行拆分,并按照程序的执行时间长短对程序内的核心段函数进行排序,根据设定的阈值n,选取程序的执行时间最长的若干核心段函数;S3、对代码进行插桩,根据编译优化的目标,选择对应的插桩接口,用于量化评估编译优化效果;S4、修改配置文件,并启动自调优操作;S5、对调优结果的历史信息进行聚类分析,修改迭代过程的启发式策略。本发明能够挖掘编译优化选项的性能潜力,提高编译器的用户友好性,缩短用户进行应用调优的学习曲线。
-
公开(公告)号:CN112540750B
公开(公告)日:2022-11-15
申请号:CN201910897633.X
申请日:2019-09-23
Applicant: 无锡江南计算技术研究所
Abstract: 本发明公开一种自适应内建函数与指令操作选择翻译方法,基于编译器实现,包括以下步骤:S1、编译器使用最高优化等级编译该内建函数,当汇编指令少于或等于3条时,将SDNode一对一的降级为汇编指令;S2、当汇编指令大于3条时,判断该内建函数预设的使用频率,若使用频率不高,则以内建函数可拆分的伪指令节点和定义的虚拟寄存器为参数,通过BuildMI函数将内建函数降级为汇编指令;S3、若使用频率较高,则以内建函数的输入和输出作为源寄存器和目的寄存器,使用BuildMI函数创建一条伪指令,使用BuildMI函数扩展上述伪指令,并将扩展后的伪指令降级为汇编指令。本发明可以根据内建函数实现的复杂度选择内建函数节点降级的途径,以使程序的编译运行达到最优化的效果。
-
-
-
-
-
-
-
-
-