一种编译自调优方法
    1.
    发明授权

    公开(公告)号:CN114217805B

    公开(公告)日:2025-05-16

    申请号:CN202110330631.X

    申请日:2021-03-26

    Abstract: 本发明公开一种编译自调优方法,包括以下步骤:S1、对代码进行插桩;S2、收集代码运行时的信息数据;S3、根据访存密集程度和计算密集程度,将目标代码分为四类;S4、将S3中的分类信息传递给S11;S5、对系统环境参数进行配置;S6、对通用编译优化选项进行配置;S7、对定制编译优化选项进行配置;S8、对通用编译优化选项与定制编译优化选项进行分析分类;S9、对自调优过程的环境参数进行配置;S10、将S9中环境参数的配置信息传递给S11;S11、对使能概率进行调整;S12、进行编译选项的自动调优;S13、获得一组编译优化选项组合能。本发明能够充分发挥出处理器及系统软件环境某些定制化设计带来的性能红利,提高编译自调优过程效率。

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

    公开(公告)号:CN112445724B

    公开(公告)日:2022-09-13

    申请号:CN201910805599.9

    申请日:2019-08-29

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

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

    公开(公告)号:CN112445465B

    公开(公告)日:2022-09-13

    申请号: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不支持的特定硬件平台上的训练和推理过程。

    一种无横向一致性的众核精简Cache协议实现方法

    公开(公告)号:CN114217809A

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

    申请号:CN202110398338.7

    申请日:2021-04-14

    Abstract: 本发明公开一种无横向一致性的众核精简Cache协议实现方法,包括以下步骤:S1、对Cache行内数据更新情况进行分析,标记出被更新的数据;S2、如果Cache行内所有数据都没有被更新,或者Cache行内所有数据都被更新,跳转至S5,如果Cache行内只有部分数据被更新,跳转至S3;S3、当一个Cache行内的数据只有部分内容需要写回时,其他位掩码置0;S4、根据掩码粒度大小与置位情况,更新主存中对应掩码位为1的数据;S5、直接对Cache行进行写回操作。本发明有效解决共享主存Cache结构的假共享问题,还可以提高写回效率、有效降低处理器在Cache数据管理方面的硬件开销。

    基于cache写暗示机制的编译优化方法

    公开(公告)号:CN114217806A

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

    申请号:CN202110347315.3

    申请日:2021-03-31

    Abstract: 本发明公开一种基于cache写暗示机制的编译优化方法,自动识别对连续主存进行写操作的指令序列,并通过指令插桩,对这些指令序列的访存行为进行优化,包括以下步骤:S1:对代码中所有写操作进行识别,并通过插桩的方式进行标记;S2:对S1中识别的写操作的数据单元访问连续性进行判定,如果满足连续性要求,则更新cachesc指令参数;S3:写操作边界处理。本发明可减少因繁琐的存储管理对代码生产过程的干扰,进一步降低访存延迟,提高存储系统性能。

    支持多格式半精度浮点的编译方法

    公开(公告)号:CN114217804A

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

    申请号:CN202110324723.7

    申请日:2021-03-26

    Abstract: 本发明公开一种支持多格式半精度浮点的编译方法,包括以下步骤:S1、用户代码使用编译器提供的float16关键字来申明半精度浮点数据类型;S2、用户代码根据需要调用半精度浮点数据格式切换接口进行格式切换;S3、用户代码在切换半精度浮点数据格式后,调用编译器提供的半精度浮点数据转换接口进行数据格式转换;S4、在完成半精度浮点数据格式切换与数据转换后,用户程序在当前半精度浮点格式下进行后续的计算,需要再次切换半精度浮点格式时重复S2、S3。本发明可以在不增加代码编写复杂度的前提下发挥FP16和BF16两种半精度浮点格式的优势,满足应用场景使用半精度浮点加速计算的需求。

    面向异构众核处理器的动态链接运行支撑方法

    公开(公告)号:CN112650539A

    公开(公告)日:2021-04-13

    申请号:CN201910918622.5

    申请日:2019-09-26

    Abstract: 本发明公开一种面向异构众核处理器的动态链接运行支撑方法,包括以下步骤:S1、将用户的控制核心程序、加速核心程序及加速核心静态库链接到可执行程序中,获得异构混合动态链接的可执行程序;S2、运行异构混合动态链接的可执行程序;S3、提供一动态混合链接选项,实现异构程序的混合链接;S4、程序加载器分析异构混合动态链接的可执行程序的各个段,通过interp段解析标准动态链接器的地址;S5、向操作系统申请页氏空间,用于加载控制核心动态库;S6、实现基于众核空间的动态分配策略;S7、新增接口dlopen_hybrid,支持异构混合动态库中控制核心代码和加速核心代码正确运行。本发明既能保证控制核心代码兼容动态链接功能和动态运行模式,也能通过充分发挥加速核心的加载和运行效率。

    面向异构平台的多层次存储结构内存检测方法

    公开(公告)号:CN112631893A

    公开(公告)日:2021-04-09

    申请号:CN201910903842.0

    申请日:2019-09-24

    Abstract: 本发明公开一种面向异构平台的多层次存储结构内存检测方法,基于异构众核处理器的编译器和运行时库,包括以下步骤:S1、实现自定义动态运行时库;S2、在自定义动态运行时库中,当从核程序发生段为例异常或终止异常时,从核向主核发送异常中断信号,主核代理从核进行异常处理;S3、主核、从核分别对源程序进行编译分析,将源程序处理为中间代码,并在中间代码上对需要插桩的位置进行插桩处理;S4、编译器将S3中处理过的中间代码,编译、汇编、链接,生成可执行代码,进而生成可执行文件并运行。本发明在拥有多指令集、多层次存储结构的异构众核处理器上实现内存错误的动态检测,检测的错误类型多,且错误信息描述详尽,定位精准,检测效果较好。

    面向处理器指令cache的低功耗编译方法

    公开(公告)号:CN112445480A

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

    申请号:CN201910794737.8

    申请日:2019-08-27

    Abstract: 本发明公开一种面向处理器指令cache的低功耗编译方法,包括以下步骤:S1、寻找最内层循环;S2、判断寻找到的最内层循环是否可以展开;S3、结合L0 cache计算展开次数:即根据循环体的最大伪指令条数MAX_UNROLLED_INSNS、循环体的最大平均伪指令条MAX_AVERAGE_UNROLLED_INSNS和最大展开次数MAX_UNROLL_TIMES,计算展开次数;S4、根据展开次数实现代码展开;S5、在编译器中端,对循环中语句建立依赖关系图,并把循环中每一条语句设为一个区域;S6、遍历所有区域,检查是否有生产者消费者的依赖关系;S7、根据L0 cache容量大小确定最优分区大小;S8、有选择的进行合并语句;S9、将剩余的每一个分区都生成一个循环树,实现循环剥离。本发明实现了循环优化的精细控制策略,保证L0 cache的高命中率,有效降低取指和译码功耗,以提高性能减少功耗。

    面向异构平台的多层次存储结构内存检测方法

    公开(公告)号:CN112631893B

    公开(公告)日:2022-11-15

    申请号:CN201910903842.0

    申请日:2019-09-24

    Abstract: 本发明公开一种面向异构平台的多层次存储结构内存检测方法,基于异构众核处理器的编译器和运行时库,包括以下步骤:S1、实现自定义动态运行时库;S2、在自定义动态运行时库中,当从核程序发生段为例异常或终止异常时,从核向主核发送异常中断信号,主核代理从核进行异常处理;S3、主核、从核分别对源程序进行编译分析,将源程序处理为中间代码,并在中间代码上对需要插桩的位置进行插桩处理;S4、编译器将S3中处理过的中间代码,编译、汇编、链接,生成可执行代码,进而生成可执行文件并运行。本发明在拥有多指令集、多层次存储结构的异构众核处理器上实现内存错误的动态检测,检测的错误类型多,且错误信息描述详尽,定位精准,检测效果较好。

Patent Agency Ranking