一种面向国产异构众核处理器的TensorFlow框架核心计算加速引擎

    公开(公告)号:CN114217941A

    公开(公告)日:2022-03-22

    申请号:CN202110381665.1

    申请日:2021-04-09

    Abstract: 本发明公开一种面向国产异构众核处理器的TensorFlow框架核心计算加速引擎,独立设置于TensorFlow框架与多个众核计算加速库之间,包括以下功能模块:算子接口模块,用于将运行流程转入核心计算加速引擎;分析调度模块,用于分析算子类型和算子参数特性,将算子参数封装为各个众核计算加速库的参数结构,并根据算子类型调用不同的众核计算加速库,当同种算子类型有多种算子实现时,根据算子参数特点自动选择最优的实现方式并进行调用;调试模块,用于记录各个算子的运行时间,从算子层面分析模型推理或训练过程的性能表现。本发明可充分发挥国产异构众核强大的强大计算能力,提供自动化的深度学习任务核心加速能力。

    一种基于国产异构平台的C++向量编程方法

    公开(公告)号:CN114217771A

    公开(公告)日:2022-03-22

    申请号:CN202110452548.X

    申请日:2021-04-26

    Abstract: 本发明公开一种基于国产异构平台的C++向量编程方法,所述编程方法包括以下步骤:S1、通过引入头文件simd.h的形式获得向量数据类型和向量编程接口的支持;S2、编译器对C++向量程序进行前端处理,生成中间表示代码;S3、编译器中端对S25中生成的中间表示代码进行优化,生成新的中间表示;S4、编译器中端对步骤S3中优化后的中间代码进行指令生成,形成向量汇编代码;S5、生成机器码;S6、链接器将上述生成的所有主核和从核机器码混合链接成一个可执行码;S7、将可执行码运行在异构众核平台上。本发明为国产异构众核架构的应用开发提供了一种新型的编程方式,有利于最大限度的发挥架构优势,提升应用性能。

    条件转移预测方向变换的编译优化方法

    公开(公告)号:CN112540764A

    公开(公告)日:2021-03-23

    申请号:CN201910897632.5

    申请日:2019-09-23

    Abstract: 本发明公开一种条件转移预测方向变换的编译优化方法,当发现因为频繁的分支预测失败带来了严重的性能损失时,执行以下步骤:S1、对源程序重新进行编译,并在编译时添加转移预测方向变换的编译优化选项;S2、对源程序进行控制流分析,并将源程序划分为若干个基本块,同时识别出包含在源程序的最内层循环的条件分支语句,并将其划分为几个独立的基本块,将第一个基本块打上分支预测失败的特殊属性;S3、在具有分支预测失败特殊属性的基本块的起始位置插入一条转移预测器方向切换指令;S4、编译器继续进行剩余的编译过程,产生目标代码。本发明可以避免嵌汇编方式带来的性能损失和潜在的错误问题,还可以提高条件转移预测准确率,达到降低性能损失的目的。

    针对片上存储器重用的链接时地址分配方法

    公开(公告)号:CN112445724A

    公开(公告)日:2021-03-05

    申请号:CN201910805599.9

    申请日:2019-08-29

    Abstract: 本发明公开一种针对片上存储器重用的链接时地址分配方法,包括以下步骤:S1、在编译器上构建片上存储器的重用段类型,生成片上存储器的访存模式;S2、在执行S1中操作的同时,对链接脚本进行配置;S31、链接器对S2中所述的链接脚本进行信息扫描,进入链接器的重用处理函数;S32、从二进制文件格式描述符文件中获取段信息;S33、循环处理S32中获取的段信息,识别并找出重用段;S34、解析出S12中所述的重用段属性的数据结构中所带的重用段名字,对满足同一个重用段名字的段分配相同的虚拟内存地址;S35、从S32中获取的段信息中找出最大的段,用作该重用段空间分配时的空间大小。本发明通过链接时地址分配方法实现空间重用,有效提高片上存储器的空间利用率、提升程序性能。

    针对异构众核的快速线程启动方法

    公开(公告)号:CN112445581A

    公开(公告)日:2021-03-05

    申请号:CN201910799253.2

    申请日:2019-08-28

    Abstract: 本发明公开一种针对异构众核的快速线程启动方法,包括以下步骤:S1、控制核心进行线程信息初始化的工作;S2、控制核心获取加速核心上将要运行的线程函数的PC值、参数等信息;S3、控制核心根据异构众核的结构特征选择传输方式;S4、控制核心写入线程信息并置传输标志;S5、控制核心进入等待线程结束的状态;S6、加速核心进入等待传输标志的状态;S7、加速核心启动传输操作;S8、启动线程函数执行;S9、各加速核心的线程函数执行完毕后,进行加速核心间的同步操作;S10、通知控制核心线程函数已执行结束;S11、控制核心进行线程回收操作。本发明实现了快速的线程启动与回收,减少了控制核心和加速核心在线程启动交互过程中的访存和控制开销,为应用程序的高效执行奠定了基础。

    低功耗的寄存器分配编译优化方法

    公开(公告)号:CN112445481A

    公开(公告)日:2021-03-05

    申请号:CN201910794940.5

    申请日:2019-08-27

    Abstract: 本发明公开一种低功耗的寄存器分配编译优化方法,包括以下步骤:S1、分析程序的热点函数和循环段;S2、统计热点代码段中依赖关系语句执行频率;S3、登记存在依赖关系语句中临时变量的生存周期;S4、关闭针对该依赖关系语句性能相关的指令调度优化,防止因为考虑流水线性能而进行的指令调度;S5、对每个依赖关系的临时变量进行基本块内的生存周期分析;S6、对每个依赖关系的临时变量进行跨基本块的生存周期分析;S7、遍历所有基本块,对标记为可低功耗优化的临时变量追踪其定义和使用点(define&use);S8、进行W_set指令循环外提优化。本发明在一定程度上优化系统运行功耗,且软硬件开发成本低,对降低功耗的方法简单直接,在考虑性能的前提下,最大限度的挖掘寄存器低功耗潜力。

    基于异构平台的常量数据访问优化方法

    公开(公告)号:CN112527264B

    公开(公告)日:2022-10-04

    申请号:CN201910886036.7

    申请日:2019-09-19

    Abstract: 本发明公开一种基于异构平台的常量数据访问优化方法,包括以下步骤:S1、进行中间表示降级,即结合目标后端信息对中间表示进行降级处理,将常量节点降级为目标相关的节点;S2、分析中间表示,寻找常量节点,即进行常量数据分析,对常量数据的类型、大小及范围进行计算,且根据不同的架构后端采用不用的算法进行代价评估,生成降级节点;S3、生成汇编代码,即将生成的降级中间表示翻译为指令,并建立相应的数据段。本发明实现了精细化、自动化的常量数据访问优化选择,保证程序能最大限度的利用内存,优化常量数据内存使用,使常量数据访问的性能得到进一步的提升,从而提升国产异构从核平台的性能。

    即时编译引擎自适应函数加载方法

    公开(公告)号:CN112558976B

    公开(公告)日:2022-07-12

    申请号:CN201910903889.7

    申请日:2019-09-24

    Abstract: 本发明公开一种即时编译引擎自适应函数加载方法,面向异构众核平台,包括以下步骤:S1、对于一个函数符号,执行引擎检查其是否为外部函数;S2、对于一个S1中标记的外部函数符号,执行引擎检查其是否为从核函数,并使用对应的动态链接库加载函数加载包含该外部函数符号的动态链接库;S3、从步骤S2中加载的动态链接库中获取外部函数入口地址;S4、使用步骤S3中获取的外部函数入口地址,对用户程序代码段进行GOT表覆写和重定位回填。本发明实现了异构众核程序对核组空间的有效利用,完善了面向异构众核平台的即时编译引擎的功能。

    面向即时编译的基于动态库的GOT表管理方法

    公开(公告)号:CN112527303A

    公开(公告)日:2021-03-19

    申请号:CN201910885728.X

    申请日:2019-09-19

    Abstract: 本发明公开一种面向即时编译的基于动态库的GOT表管理方法,包括以下步骤:S1、创建包含GOT表的动态链接库,此GOT表位于动态链接库的数据段;S2、在即时编译引擎解析重定位前,动态载入GOT表到内存空间,并获取GOT表的首地址;S3、即时编译引擎根据程序代码段的重定位类型,进行GOT表覆写和重定位回填;S4、在程序即时编译执行结束后,动态释放包含GOT表的动态链接库;S42、退出即时编译。本发明降低了LLVM即时编译引擎对新增硬件后端中GOT表的支持难度,提高了LLVM即时编译引擎的移植效率,在基于国产处理器的LLVM即时编译引擎中快速实现了基于动态库的GOT表管理。

    基于C代码生成的神经网络模型推理和训练方法

    公开(公告)号:CN112445465A

    公开(公告)日:2021-03-05

    申请号:CN201910799245.8

    申请日:2019-08-28

    Abstract: 本发明公开一种基于C代码生成的神经网络模型推理和训练方法,包括以下步骤:S1、以通过各种AI编程框架开发的模型作为输入,AI框架编译器识别各种模型格式并转化为统一的计算图,将输入的模型转化为底层IR;S2、将S1中生成的计算图输入C代码生成模块,输出总控函数;S3、C代码生成模块针对不同的底层IR,生成对应的C代码;S4、将生成的总控函数、各IR对应的C代码以及C‑基础算子库,输入到支持C语言和相应硬件平台的基础编译器,通过基础编译器的优化过程转化为运行程序,并在对应硬件平台上执行推理过程、训练过程。本发明实现了AI框架编译器在LLVM不支持的硬件平台上的快速移植,能够快速实现神经网络模型在LLVM不支持的特定硬件平台上的训练和推理过程。

Patent Agency Ranking