1.一种迭代感知的MPI通信踪迹数据压缩方法,其特征在于,包括下述步骤:S101,运行目标并行程序的插桩后的二进制文件,插桩所插入的插桩代码用于提取目标并行程序的循环体中用于控制迭代的迭代变量;S102,在目标并行程序的二进制文件进行MPI通信时,根据插桩代码被运行所提取的迭代变量划分迭代区间;S103,收集本次迭代区间的通信踪迹数据;S104,根据当前迭代的顺序编号确定当前迭代是否为首次选代,如果是首次选代则不压缩跳转步骤S108,否则跳转步骤S105;S105,判断当前迭代的迭代区间内各条通信踪迹数据的全局调用栈ID的顺序序列是否同前一次迭代的迭代区间一致,如果是不一致则不压缩跳转步骤S108,否则跳转步骤S106;S106,计算当前迭代和前一次迭代两者的迭代持续时间差比例;S107,判断迭代持续时间差比例是否超过阈值,如果超过阈值则不压缩跳转步骤S108;否则压缩跳转步骤S109;S108,保存该迭代区间完整踪迹数据;S109,保存迭代上下文;S110,根据MPI通信的MPI函数判断是否是末次送代,如果不是末次送代,则跳转步骤S103;否则,将保存的通信踪迹数据和迭代上下文写入文件,结束并退出。
2.根据权利要求1所述的迭代感知的MPI通信踪迹数据压缩方法,其特征在于,步骤S101之前包括为目标并行程序生成插桩后的二进制文件:在目标并行程序的源代码中插入插桩代码,所述插桩代码用于初始化最大嵌套深度、上下文数组、当前的上下文嵌套深度以及全局计数器,以及定义进入新上下文函数和退出上下文函数;所述进入新上下文函数用于在当前的上下文嵌套深度未超出最大嵌套深度时,将新的上下文标识符存储到上下文数组中,将当前的上下文嵌套深度加1,将全局计数器更新为指向上下文数组中的新的上下文标识符;所述退出上下文函数用于在当前的上下文嵌套深度大于0时,将当前的上下文嵌套深度减1,将全局计数器更新为指向上下文数组中的上一个上下文标识符;识别目标并行程序的循环体及其用于控制迭代的迭代变量,将迭代变量作为新上下文函数和退出上下文函数的上下文标识符,在每一个循环体前插入进入新上下文函数,在每一个循环体后插入退出上下文函数;将目标并行程序的源代码及其插入的插桩代码通过编译生成插桩后的二进制文件。
3.根据权利要求1所述的迭代感知的MPI通信踪迹数据压缩方法,其特征在于,步骤S101之前包括为目标并行程序生成插桩后的二进制文件:提取目标并行程序的二进制文件的控制流图,所述控制流图中的节点为目标并行程序的二进制文件中的结构元素,所述结构元素包括基本块、函数和循环,所述控制流图中的边为结构元素之间的数据依赖关系;根据控制流图定位目标并行程序的二进制文件的函数入口点和各个循环体以作为插桩点,在函数入口点的插桩点插入插桩代码,所述插桩代码用于初始化最大嵌套深度、上下文数组、当前的上下文嵌套深度以及全局计数器,以及定义进入新上下文函数和退出上下文函数;所述进入新上下文函数用于在当前的上下文嵌套深度未超出最大嵌套深度时,将新的上下文标识符存储到上下文数组中,将当前的上下文嵌套深度加1,将全局计数器更新为指向上下文数组中的新的上下文标识符;所述退出上下文函数用于在当前的上下文嵌套深度大于0时,将当前的上下文嵌套深度减1,将全局计数器更新为指向上下文数组中的上一个上下文标识符;识别循环体中用于控制迭代的迭代变量,将迭代变量作为新上下文函数和退出上下文函数的上下文标识符,在每一个循环体前的插桩点插入进入新上下文函数,在每一个循环体后的插桩点插入退出上下文函数;将目标并行程序的二进制文件及其插入的插桩代码组合生成插桩后的二进制文件。
4.根据权利要求1所述的迭代感知的MPI通信踪迹数据压缩方法,其特征在于,步骤S102中根据插桩代码被运行所提取的迭代变量划分迭代区间之前,包括预先通过dlsym函数在初始化时动态地查找并获取环境变量MPIP_ITER_NAME设置的迭代变量内存地址,将这个地址强制转换为一个整数类型指针;步骤S102中根据插桩代码被运行所提取的迭代变量划分迭代区间时,包括将插桩代码被运行所提取的当前的迭代变量、环境变量MPIP_ITER_NAME中存储的上一次的提取的迭代变量是否一致,如果两者一致则表示本次迭代仍然在原有的迭代区间内;否则表示本次迭代进入了一个新的迭代区间。
5.根据权利要求1所述的迭代感知的MPI通信踪迹数据压缩方法,其特征在于,步骤S106中计算当前迭代和前一次迭代两者的迭代持续时间差比例的函数表达式为: ;其中, 为当前迭代和前一次迭代两者的迭代持续时间差比例, 为绝对值函数, 和 分别为当前迭代和前一次迭代两者的迭代持续时间。
6.根据权利要求1所述的迭代感知的MPI通信踪迹数据压缩方法,其特征在于,步骤S107中判断迭代持续时间差比例是否超过阈值包括读取系统中环境变量MPIP_ITER_THRES的值,如果环境变量MPIP_ITER_THRES的值被配置,则判断迭代持续时间差比例是否超过环境变量MPIP_ITER_THRES的值;否则迭代持续时间差比例是否超过默认阈值。
7.根据权利要求1所述的迭代感知的MPI通信踪迹数据压缩方法,其特征在于,所述通信踪迹数据中的字段包括:全局调用ID、全局调用栈ID、本次MPI调用开始时间、本次MPI调用持续时间、与上一个MPI调用间计算时间、本次MPI函数调用标签号和本次MPI调用是否为调用者函数中的最末一次的标志;步骤S109中保存迭代上下文时,迭代上下文的字段包括:迭代计数器、迭代变量值、迭代区间起始时间和迭代区间持续时间,其中迭代计数器为一个单调递增的整数,用于唯一标识每一个通信追踪迭代的顺序,直接作为访问偏移量列表的关键索引;迭代变量值用于与迭代计数器结合,形成一个复合标识符以确定循环体内部对应的步骤;所述迭代区间起始时间和迭代区间持续时间用于作为辅助索引的维度来实现基于时间属性来定位通信踪迹数据。
8.一种迭代感知的MPI通信踪迹数据压缩系统,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~7中任意一项所述迭代感知的MPI通信踪迹数据压缩方法。
9.一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序或指令,其特征在于,该计算机程序或指令被编程或配置以通过处理器执行权利要求1~7中任意一项所述迭代感知的MPI通信踪迹数据压缩方法。
10.一种计算机程序产品,包括计算机程序或指令,其特征在于,该计算机程序或指令被编程或配置以通过处理器执行权利要求1~7中任意一项所述迭代感知的MPI通信踪迹数据压缩方法。