[发明专利]基于数据结构的众核程序重构方法有效
申请号: | 201910910099.1 | 申请日: | 2019-09-25 |
公开(公告)号: | CN112559031B | 公开(公告)日: | 2022-10-04 |
发明(设计)人: | 徐金秀;何香;陈鑫;徐占;刘鑫;李芳;孙唯哲;郭恒;赵朋朋 | 申请(专利权)人: | 无锡江南计算技术研究所 |
主分类号: | G06F8/72 | 分类号: | G06F8/72;G06F8/41;G06F9/30;G06F9/448 |
代理公司: | 苏州创元专利商标事务所有限公司 32103 | 代理人: | 王健 |
地址: | 214083 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 数据结构 程序 方法 | ||
1.一种基于数据结构的众核程序重构方法,其特征在于:包括基于提取基本类型数据结构的重构方法、基于数组降维的空间压缩的重构方法、基于增大传输字长的空间压缩的重构方法;
所述基于提取基本类型数据结构的重构方法包括以下步骤:
S11、利用性能分析工具或打印输出信息,分析程序运行时的多个时间热点函数,找出各个时间热点函数中最耗时程序段;
S12、针对各个时间热点函数中的最耗时循环段,逐一进行分析,首先分析循环段的数据结构,若循环段内存在复杂数据类型声明的数据变量,执行S13;若循环段内只存在基本数据类型声明的数据变量,循环段由从核完成,执行S16;
S13、提取循环段内复杂数据类型声明的数据变量中与循环段任务相关的基本数据类型成员变量,称为原始变量,并进行相应的基本数据类型数据变量别名声明,称为新变量;
S14、在时间热点函数变量声明部分增加S13中提取的新变量的声明,在时间热点函数执行部分的开始位置,将原始变量的内存地址和相对应的新变量内存地址进行地址上下界匹配;
S15、修改循环段中原始变量名为新变量名,循环段任务由从核完成,执行S16;
S16、针对由从核完成的循环段任务,直接使用编译指示进行众核加速并行;
所述基于数组降维的空间压缩的重构方法包括以下步骤:
S21、利用性能分析工具或打印输出信息,分析程序运行时的多个时间热点函数,找出各个时间热点函数中最耗时程序段;
S22、针对各个时间热点函数中的最耗时循环段,逐一进行分析,若循环段中的数据结构存在多维数组,且多维数组不存在数据依赖关系,执行S23;若循环段中没有多维数组,或者多维数组之间存在数据依赖关系,执行S25;
S23、在时间热点函数声明部分对没有依赖关系的多维数组进行相对应的降维数组声明;
S24、搜索没有依赖关系的多维数组相关的执行语句,修改为降维数组相关的执行语句,形成重构数据结构的新循环段,由从核完成;
S25、针对由从核完成的循环段任务,直接使用编译指示进行众核加速并行;
所述基于增大传输字长的空间压缩的重构方法包括以下步骤:
S31、利用性能分析工具或打印输出信息,分析程序运行时的多个时间热点函数,找出各个时间热点函数中最耗时程序段;
S32、针对各个时间热点函数中的最耗时循环段,逐一进行分析,观察循环段内计算任务特点,若多条执行语句存在多次读取一个或者多个相同数组变量,且写入不同数组变量的操作,执行S33;若不存在,循环段由从核完成,执行S35;
S33、优化被读取多次的数组变量的数据结构,并在时间热点函数声明部分声明对应的别名数组,合并被写入的多个不同的数组变量为一个扩维数组,并在时间热点函数声明部分声明对应的扩维数组;
S34、在时间热点函数执行部分,针对重构的数据结构调整别名数组的离散内存访问为连续内存访问,同时修改扩维数组对应的写操作,形成重构数据结构的循环段,由从核完成;
S35、针对由从核完成的循环段任务,直接使用编译指示进行众核加速并行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910910099.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:具有多重条件判别的循环优化方法
- 下一篇:基于循环段的众核程序重构方法