一种针对CUDA程序的反馈式动态优化方法

    公开(公告)号:CN116450209A

    公开(公告)日:2023-07-18

    申请号:CN202310350878.7

    申请日:2023-04-04

    Applicant: 南京大学

    Abstract: 本发明公开了一种针对CUDA程序的反馈式动态优化方法,包括步骤:首先收集CUDA程序动态信息,对待优化CUDA程序静态分析,生成最小生成树和分歧分支信息;插桩收集分支分歧、基本块频率和核函数参数信息,执行插桩过的程序得到持久化的运行时信息;接着实施反馈式优化,按照相同CUDA程序加载运行时信息,计算分支概率;根据运行时信息并做出判断和优化,判断是否有价值核函数参数组合,若有,生成新版本核函数;判断是否存在高频一致热点路径,若存在,生成快速循环或控制路径;判断是否存在高频分歧分支,若存在,控制流线性化来减少分歧分支内指令;最终生成优化过的可执行文件,通过以上技术方案,可以使CUDA程序拥有更好的运行时性能。

    一种程序热点路径确定的方法和装置

    公开(公告)号:CN114817029A

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

    申请号:CN202210435427.9

    申请日:2022-04-24

    Applicant: 南京大学

    Abstract: 本发明公开了一种程序热点路径确定的方法和装置。该方法首先将源程序转换成程序控制流图。然后通过对源程序的第一次插桩执行得到程序控制流图各条边的执行频次,通过这些频次计算封闭子图的离散度,选择离散度高的封闭子图作为优先封闭子图。对于优选的封闭子图,提取其路径作为边简化流图,再进行第二次插桩执行得到简化流图各边的执行频次,再计算确定流集合,根据确定流所确定频次的高低优选确定流,作为输出的程序热点路径。相比于传统热点路径的确定方法,该方法对于测试用例数的要求较低,故此效率高。

    基于GPU的大规模软件高精度静态分析方法

    公开(公告)号:CN109783386A

    公开(公告)日:2019-05-21

    申请号:CN201910042530.5

    申请日:2019-01-17

    Applicant: 南京大学

    Abstract: 本发明公开一种基于GPU的大规模软件高精度静态分析方法。该方法首先将一系列具体的程序分析,如指针分析、数据流分析、程序切片等,转化为一种特殊的图可达性问题——上下文无关语言(CFL)可达性问题;然后将转化后的程序图和相应的语法规则传到图形处理器(GPU)上进行并行CFL可达性计算,即根据语法规则动态地加边,直至不动点;如果图的大小超过显存的限定值,则每次只能调入部分数据参加计算,其余部分保存到硬盘。通过对GPU和外存的利用,本发明方法具有较高的效率和可扩展性,可用以对大规模软件系统进行复杂代码分析。

    基于结构化程序自动合成的代码覆盖率工具测试的方法

    公开(公告)号:CN114780406B

    公开(公告)日:2025-04-25

    申请号:CN202210428792.7

    申请日:2022-04-22

    Applicant: 南京大学

    Abstract: 本发明公开了一种基于结构化程序自动合成的代码覆盖率工具测试方法,包括如下步骤:枚举算法生成多个控制流结构序列;初始化可插入点位置数组;使用去重算法为每个控制流结构选择合理位置信息并保证程序框架的唯一性;为每个控制流结构随机选择条件判断语句;为上述语句中使用到变量在当前程序选择合适的声明位置;消除程序框架中的显性死循环;添加空语句并生成测试源代码;分析程序中控制流结构和语句的执行情况对其打标并结合程序框架结构化信息生成不变式;利用不变式规则对覆盖率报告进行正确性测试。本发明利用结构化程序设计思想,有效降低测试用例程序复杂度,减轻了后续人工分析的工作量,同时保证了程序丰富的结构化信息。

    一种基于硬件的高级程序动态控制流追踪方法和装置

    公开(公告)号:CN112905474B

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

    申请号:CN202110253236.6

    申请日:2021-03-09

    Applicant: 南京大学

    Abstract: 本发明公开了一种基于硬件的高级程序动态控制流追踪方法和装置。该方法对待追踪程序静态分析,生成控制流图、类继承图和调用图,通过虚拟机执行待追踪程序收集字节码指令模版、执行信息和追踪数据。然后按照线程对追踪数据进行解码匹配,对照控制流图生成相应的执行流图,最后判断是否存在执行流数据是否存在缺失,如果是,则尽可能还原出执行流图,恢复其中缺失的部分,最终输出执行流图。本发明实现了利用硬件追踪模块对高级语言程序的控制流追踪,并且通过执行流数据的补缺分析处理,解决硬件输出追踪数据和磁盘存储速度不一致的问题。

    一种基于图计算的代码分析的方法和装置

    公开(公告)号:CN112800425A

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

    申请号:CN202110145882.0

    申请日:2021-02-03

    Applicant: 南京大学

    Abstract: 本发明公开了一种基于图计算的代码分析的方法和装置。该方法首相将程序代码转换成无函数调用节点的全局流程控制图,每个节点的代码语句转换成数据流向信息;然后对全局流程控制图划分分区,每个分区为子控制流程图,分区后初始化每个分区的待分析节点集,然后以分区为单元采用整体同步并行计算的方式对分区进行分析,分区分析时对每个节点调用用户所实现分析的接口通过循环迭代直到用户所实现分析的接口输出稳定时,从待分析节点集中删除节点,直到所有的各个分区的待分析节点集中的节点被清空。分区同步并行计算时以分区为单位进行磁盘数据调度。本发明可在单机上实现大规模系统软件代码的数据流和上下文敏感分析。

    一种针对基于分解的多面体抽象域的并行加速方法

    公开(公告)号:CN116610441A

    公开(公告)日:2023-08-18

    申请号:CN202310354501.9

    申请日:2023-04-06

    Applicant: 南京大学

    Abstract: 本发明公开了一种针对基于分解的多面体抽象域的并行加速方法。具体包括以下技术要点:主要由针对Chernikova算法的并行加速方法与针对基于分解的多面体域操作的并行加速方法两个部分组成,提供了一种并行计算射线的方法来加速Chernikova算法的方法,并且为并行计算产生的读写冲突提供了解决方法。多面体抽象域最主要的域操作有交操作、接合操作、加宽操作、包含测试、条件操作和赋值操作,本发明为这六种基于分解的域操作提供了并行加速方法。静态程序分析中,在基于分解的多面体抽象域表现不佳的某些场景下,本方法达到了显著缩短多面体抽象域的计算时间、且内存仅略微增加的技术效果。

    一种基于硬件的程序动态函数调用序列追踪方法和装置

    公开(公告)号:CN115269393A

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

    申请号:CN202210858974.8

    申请日:2022-07-21

    Applicant: 南京大学

    Abstract: 本发明公开了一种基于硬件的程序动态函数调用序列追踪方法和装置。该方法在执行硬件跟踪前对目标程序进行插桩形成插桩程序,通过插桩构建函数调用跳转跟踪块,使得目标程序的各目标函数的入口和出口跳转至函数调用跳转跟踪块内再返回,然后在执行硬件跟踪时,仅对函数调用跳转跟踪块的程序块进行跟踪,由此,根据硬件跟踪所输出的追踪数据即可分析出目标程序执行的函数调用关系和调用序列。本发明通过将追踪粒度由原始的程序基本块扩大至函数,从而降低处理器硬件追踪所产生的追踪数据的速度,使得所产生的追踪数据能够与追踪数据存储的速度匹配,减少追踪数据的丢失。

    一种基于硬件的高级程序动态控制流追踪方法和装置

    公开(公告)号:CN112905474A

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

    申请号:CN202110253236.6

    申请日:2021-03-09

    Applicant: 南京大学

    Abstract: 本发明公开了一种基于硬件的高级程序动态控制流追踪方法和装置。该方法对待追踪程序静态分析,生成控制流图、类继承图和调用图,通过虚拟机执行待追踪程序收集字节码指令模版、执行信息和追踪数据。然后按照线程对追踪数据进行解码匹配,对照控制流图生成相应的执行流图,最后判断是否存在执行流数据是否存在缺失,如果是,则尽可能还原出执行流图,恢复其中缺失的部分,最终输出执行流图。本发明实现了利用硬件追踪模块对高级语言程序的控制流追踪,并且通过执行流数据的补缺分析处理,解决硬件输出追踪数据和磁盘存储速度不一致的问题。

    一种用于大规模系统中状态相关缺陷的静态检测方法

    公开(公告)号:CN109710538A

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

    申请号:CN201910042564.4

    申请日:2019-01-17

    Applicant: 南京大学

    Abstract: 本发明涉及一种用于大规模系统中状态相关缺陷的静态检测方法,首先将大规模系统中与状态相关的缺陷抽象为有限状态机表示的形式。其次基于符号执行技术产生过程间控制流执行树(ICFET),并提出了一个新的基于区间的路径编码/解码算法来表示路径约束。然后基于ICFET以上下文敏感和路径敏感的方式进行别名分析和数据流分析,跟踪每个指定类型的每个对象的流,以识别可能在对象上发生的事件序列。最后根据ICFET以及别名分析和数据流分析产生的程序图,进行基于约束的图可达性计算,如果可达边能够到达有限状态机中未定义或错误状态,则存在可以将一个对象或一组对象驱动到规范上的未定义或错误状态的事件序列,生成错误报告。

Patent Agency Ranking