CN114969446A - 一种基于敏感度模型的分组混合精度配置方案搜索方法 - Google Patents

一种基于敏感度模型的分组混合精度配置方案搜索方法 Download PDF

Info

Publication number
CN114969446A
CN114969446A CN202210621393.2A CN202210621393A CN114969446A CN 114969446 A CN114969446 A CN 114969446A CN 202210621393 A CN202210621393 A CN 202210621393A CN 114969446 A CN114969446 A CN 114969446A
Authority
CN
China
Prior art keywords
floating point
instruction
variable
variables
relation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210621393.2A
Other languages
English (en)
Other versions
CN114969446B (zh
Inventor
许瑾晨
侯明
周蓓
王攀杰
刘洋笑
弋宗江
李飞
何昊天
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Information Engineering University of PLA Strategic Support Force
Original Assignee
Information Engineering University of PLA Strategic Support Force
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Information Engineering University of PLA Strategic Support Force filed Critical Information Engineering University of PLA Strategic Support Force
Priority to CN202210621393.2A priority Critical patent/CN114969446B/zh
Publication of CN114969446A publication Critical patent/CN114969446A/zh
Application granted granted Critical
Publication of CN114969446B publication Critical patent/CN114969446B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/906Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开一种基于敏感度模型的分组混合精度配置方案搜索方法,包括:利用程序插桩完成浮点变量关系提取,量化变量之间的计算次数和计算关系,并将该关系抽象为图表示,得到浮点变量关系图;采用社区划分算法对得到的浮点变量关系图进行子图划分,将具有强关联的浮点变量分入同一组内;计算得出浮点变量的条件数,将其定义为敏感度,并将每一组的敏感度设置为该组中对结果影响最大的浮点变量的敏感度大小,然后采取每一组敏感度从小到大的排序方法进行组间排序;进行精度调整,优先降低敏感度最小的变量组内浮点变量的精度。本发明可以快速的找到有效的混合精度配置方案。

Description

一种基于敏感度模型的分组混合精度配置方案搜索方法
技术领域
本发明涉及浮点程序的性能优化技术领域,尤其涉及一种基于敏感度模型的分组混合精度配置方案搜索方法。
背景技术
涉及混合精度的技术中,主要使用基于差异化调试的算法搜索不同的精度配置方案,此类方法暴力搜索可能的精度配置方案,未考虑程序中浮点变量之间存在的关系,所以存在以下问题:
1、搜索精度配置方案方法在最坏情况下需要较长的搜索时间,无法快速找到有效的精度配置方案。
2、未考虑浮点变量间相互关系,生成的混合精度程序中有较多的精度转换开销,存在进一步的性能提升空间。
发明内容
本发明针对搜索精度配置方案方法在最坏情况下需要较长的搜索时间,无法快速找到有效的精度配置方案;未考虑浮点变量间相互关系,生成的混合精度程序中有较多的精度转换开销,存在进一步的性能提升空间的问题,提出一种基于敏感度模型的分组混合精度配置方案搜索方法。
为了实现上述目的,本发明采用以下技术方案:
一种基于敏感度模型的分组混合精度配置方案搜索方法,包括:
步骤1,利用程序插桩完成浮点变量关系提取,量化变量之间的计算次数和计算关系,并将该关系抽象为图表示,得到浮点变量关系图,图中顶点对应各个浮点变量,边代表两个浮点变量有直接的运算关系,边的权值代表两个浮点变量计算了多少次;
步骤2,采用社区划分算法对得到的浮点变量关系图进行子图划分,从而将具有强关联的浮点变量分入同一组内;
步骤3,计算得出浮点变量的条件数,将其定义为敏感度,并将每一组的敏感度设置为该组中对结果影响最大的浮点变量的敏感度大小,然后采取每一组敏感度从小到大的排序方法进行组间排序;
步骤4,进行精度调整,优先降低敏感度最小的变量组内浮点变量的精度,从而在保证精度转换开销尽可能低的同时,获取更高的性能提升。
进一步地,所述步骤1包括:
步骤1.1,提取浮点计算程序中的函数名称,包括:在提取变量时同时将其所在的函数名称给予标识,对于浮点计算程序中模块M的任一函数,如果该函数不是外部声明函数,则存储该函数名称为后续提取关系使用;
步骤1.2,利用基于SSA的def-use链获取浮点计算程序中的数值依赖关系;
步骤1.3,提取浮点计算程序中的数值计算关系;
步骤1.4,基于步骤1.1至步骤1.3,得到含有函数名称的变量关系表;
步骤1.5,将非浮点运算的变量从变量关系表中删除,得到程序中浮点变量之间的运算关系;
步骤1.6,采用针对基本块的插桩方法实现对指令执行次数的追踪,得到变量之间的运算次数;
步骤1.7,将该关系抽象为图表示,得到浮点变量关系图,图中顶点对应各个浮点变量,边代表两个浮点变量有直接的运算关系,边的权值代表两个浮点变量计算了多少次。
进一步地,所述步骤1.2包括:
步骤1.2.1,遍历当前函数F的指令,将其中的store指令存储至storequeue队列;
步骤1.2.2,若storequeue非空,将队首元素instruction出队列,并将其存储至队列dqueue,进行下一步的指令流分析;若storequeue为空,则流程结束;
步骤1.2.3,将dqueue队首元素出队列,并分析该指令对应的def-use链,若对应的指令vi的操作码为load,则vi和instruction对应一组数值关系依赖;若对应的指令vi的操作码不是load,则将vi存储至队列dqueue的队尾;
步骤1.2.4,若dqueue不为空,则继续进行步骤1.2.3;若dqueue为空,则进行步骤1.2.2。
进一步地,所述步骤1.3包括:
限制参与运算的的变量数目不能超过两个,找到store指令中存储的操作数,然后找出对应的运算指令中的虚拟寄存器,最后根据虚拟寄存器找到两条load指令即可得出数值计算关系。
进一步地,所述步骤1.5包括:
将store指令与load指令成对存储,在进行浮点变量类型判定时,当从load指令和store指令中获取的操作数都属于浮点类型时不过滤该指令对,否则过滤该指令对。
进一步地,所述步骤1.6包括:
使用LLVM IR生成器实现对基本块的指令插桩,通过IRBuilder在步骤1.5处理后的每个基本块的第一条load指令前插桩调用函数CalculateEdge指令,通过插桩调用该函数的指令完成运算次数的记录,重新编译IR为可执行文件,然后执行该文件获取插桩后的程序运行结果,统计程序中数值依赖关系和数值计算关系的变量对数。
进一步地,所述步骤2包括:
通过Louvain算法对浮点变量关系图中节点进行分类。
与现有技术相比,本发明具有的有益效果:
1、本发明通过计算得出浮点变量的条件数,并将其定义为敏感度,以此来量化程序中浮点变量精度改变后对结果的影响大小,通过降低对结果影响最小的浮点变量精度的方法,使精度搜索空间大大减少,从而快速的找到有效的混合精度配置方案。
2、本发明将程序中浮点变量以及变量之间的运算次数抽象为图,而后利用子图划分算法将运算次数较多的浮点变量分入同一组,在精度调整时保证同组内浮点变量精度保持一致,从而减少精度转换开销,提升程序性能。
附图说明
图1为本发明实施例一种基于敏感度模型的分组混合精度配置方案搜索方法的流程示意图;
图2为本发明实施例以基本块为单位的程序控制流图分析示例图;
图3为本发明实施例sin(pi*x)在区间[0,1]的微分计算;
图4为本发明实施例浮点变量关系图示例。
具体实施方式
下面结合附图和具体的实施例对本发明做进一步的解释说明:
如图1所示,一种基于敏感度模型的分组混合精度配置方案搜索方法,包括:
步骤1,利用程序插桩完成浮点变量关系提取,量化变量之间的计算次数和计算关系,并将该关系抽象为图表示,得到浮点变量关系图,图中顶点对应各个浮点变量,边代表两个浮点变量有直接的运算关系,边的权值代表两个浮点变量计算了多少次;
步骤2,采用社区划分算法对得到的浮点变量关系图进行子图划分,从而将具有强关联的浮点变量分入同一组内;
步骤3,计算得出浮点变量的条件数,将其定义为敏感度,并将每一组的敏感度设置为该组中对结果影响最大的浮点变量的敏感度大小,然后采取每一组敏感度从小到大的排序方法进行组间排序;
步骤4,进行精度调整,优先降低条件数最小的变量组内浮点变量的精度,从而在保证精度转换开销尽可能低的同时,获取更高的性能提升。
进一步地,所述步骤1包括:
步骤1.1,提取浮点计算程序中的函数名称,包括:在提取变量时同时将其所在的函数名称给予标识,对于浮点计算程序中模块M的任一函数,如果该函数不是外部声明函数,则存储该函数名称为后续提取关系使用;
步骤1.2,利用基于SSA的def-use链获取浮点计算程序中的数值依赖关系;
步骤1.3,提取浮点计算程序中的数值计算关系;
步骤1.4,基于步骤1.1至步骤1.3,得到含有函数名称的变量关系表;
步骤1.5,将非浮点运算的变量从变量关系表中删除,得到程序中浮点变量之间的运算关系;
步骤1.6,采用针对基本块的插桩方法实现对指令执行次数的追踪,得到变量之间的运算次数;
步骤1.7,将该关系抽象为图表示,得到浮点变量关系图,图中顶点对应各个浮点变量,边代表两个浮点变量有直接的运算关系,边的权值代表两个浮点变量计算了多少次。
具体地,所述步骤1.1包括:
对于给定浮点计算程序,不同函数之间的变量名称可能出现重复,若忽略函数名称,分析变量间关系时容易产生混淆,无法分辨浮点变量具体属于哪一个函数。因此在提取变量时应同时将其所在的函数名称给予标识,首先设计实现提取程序名称算法,方便联系函数内的浮点变量与函数名称。算法1给出提取程序中函数的具体描述。
Figure BDA0003676896570000051
进一步地,获取函数后,需要分析每个函数中的浮点变量关系,首先利用基于SSA的def-use链获取数值计算依赖关系。
Figure BDA0003676896570000052
Figure BDA0003676896570000061
具体地,所述步骤1.2(即算法2)包括:
步骤1.2.1,遍历当前函数F的指令,将其中的store指令存储至storequeue队列;
步骤1.2.2,若storequeue非空,将队首元素instruction出队列,并将其存储至队列dqueue,进行下一步的指令流分析;若storequeue为空,则流程结束;
步骤1.2.3,将dqueue队首元素出队列,并分析该指令对应的def-use链,若对应的指令vi的操作码为load,则vi和instruction对应一组数值关系依赖;若对应的指令vi的操作码不是load,则将vi存储至队列dqueue的队尾;
步骤1.2.4,若dqueue不为空,则继续进行步骤1.2.3;若dqueue为空,则进行步骤1.2.2。
进一步地,所述步骤1.3包括:
限制参与运算的的变量数目不能超过两个,找到store指令中存储的操作数,然后找出对应的运算指令中的虚拟寄存器,最后根据虚拟寄存器找到两条load指令即可得出数值计算关系。
具体地,除数值依赖关系外,程序中还存在着数值计算关系,如double c=a+b,若变量a和变量b精度不一致同样会产生精度转换开销,因此需要分析提取程序中存在的数值计算关系。算法3给出提取计算关系的算法,主要修改算法2中17行if结构内的代码,因此算法3中只给出修改部分的算法示例。
Figure BDA0003676896570000062
算法3限制参与运算的变量数目不能超过两个,即若有a=b+c+d,则需要改写为a0=b+c,a=a0+d。根据指令流分析,只需找到store指令中存储的操作数,然后找出对应的运算指令如add指令中的虚拟寄存器,最后根据虚拟寄存器找到两条load指令即可找出数值计算关系。对于c=a+b,可得出数值计算关系<a,b>。
进一步地,所述步骤1.5包括:
将store指令与load指令成对存储,在进行浮点变量类型判定时,当从load指令和store指令中获取的操作数都属于浮点类型时不过滤该指令对,否则过滤该指令对。
具体地,在完成函数名称提取和浮变量数值分析之后,可以得到含有函数名称的变量关系表,但由于浮点计算程序中不仅仅有浮点变量,还有整型以及其他数据类型的运算,因此需要将非浮点运算的变量如整型数据从变量关系表中删除,因此需要对上述pass收集到的指令中的操作数类型进行分析。由于存在部分浮点计算程序将浮点计算的结果存储为整型数据,因此在计算数值依赖关系时需要将load指令中的操作数和store指令中的操作数类型全部考虑在内。
算法4过滤非浮点类型变量的算法示例。数值分析算法中将store指令与load指令成对存储,在进行浮点变量类型判定时load和store中获取的操作数都是浮点类型时不过滤数值关系对,否则过滤该指令对。
Figure BDA0003676896570000071
至此就完成了浮点变量的数值分析全过程,得出程序中存在数值依赖的浮点变量对以及存在数值计算的浮点变量对。
进一步地,所述步骤1.6包括:
使用LLVM IR生成器实现对基本块的指令插桩,通过IRBuilder在步骤1.5处理后的每个基本块的第一条load指令前插桩调用函数CalculateEdge指令,通过插桩调用该函数的指令完成运算次数的记录,重新编译IR为可执行文件,然后执行该文件获取插桩后的程序运行结果,统计程序中数值依赖关系和数值计算关系的变量对数。
具体地,程序执行时,发生浮点变量精度不匹配时会产生精度转换开销,当产生精度转换开销的语句多次执行时,会对应用程序的性能产生很大的影响。因此进行变量分组时不仅仅需要考虑程序内浮点变量的数值关系,运算次数也是非常重要的参考量。
绝大多数浮点计算程序中循环结构和分支结构是必不可少的部分,因此只计算数值分析提取的指令对数不能够正确的反映变量间的运算次数,因此可以通过插桩实现对指令执行次数的追踪。IR在内存中是以多条顺序执行的指令序列构成的基本块(BasicBlock)为单位组成的,一个函数则有一个或多个基本块构成。由于基本块中不存在条件结构和循环结构,一次执行过程中基本块内的指令执行次数不大于一次,因此选用针对基本块的插桩方法,图2给出示例程序以及其基本块的划分示意,根据该示例阐述提取变量运算次数流程的实现方法。
以示例程序中for循环内z=x+y为例,该语句位于该图2中右图for.body基本块内,该基本块内共有两对浮点依赖关系以及一对浮点计算关系。通过图中可以看出在基本块的末尾出现跳转指令,同一基本块内的指令执行次数是相同的,因此在以基本块为基本分析单位时可以减少插桩量,每个模块中只需插桩一条计算运行次数的指令即可。本方法使用LLVM IR生成器(IRBuilder<>)实现对基本块的指令插桩,默认情况下指令插入位置为初始化IRBuilder的指令的上方,处理算法如下表所示。通过IRBuilder在数值分析pass筛选后的每个基本块的第一条load指令前插桩调用函数CalculateEdge指令,该基本块每执行一次,函数就同样执行一次,函数内记录该基本块的所有具有依赖关系和计算关系的浮点变量对的运算次数就加1,通过插桩调用该函数的指令完成运算次数的记录。完成插桩pass的执行后需要重新编译IR为可执行文件,然后执行该文件获取插桩后的程序运行结果,统计程序中数值依赖关系和数值计算关系的变量对数。
Figure BDA0003676896570000081
Figure BDA0003676896570000091
进一步地,得出变量之间的运算关系和运算次数之后,将该关系抽象为图表示,得到浮点变量关系图,图中顶点对应各个浮点变量,边代表两个浮点变量有直接的运算关系,边的权值代表两个浮点变量计算了多少次。图3、图4给出了具体的分组示例程序以及浮点变量关系图。
进一步地,所述步骤2包括:
通过Louvain算法对浮点变量关系图中节点进行分类。
具体地,通过Louvain算法对图4中节点进行分类,选择顶点s1时,将其划入邻居节点x的社区内,此时ΔQ>0,随后判断将s1分别加入h,b,pi所在的社区内,相比较顶点x而言模块度增长都较小,因此应将浮点变量s1和x分入同一个社区,运算若干次以后,产生了三个稳定的社区,顶点x,s1,h为一个社区,顶点pi,xarg,result一个社区,顶点a,b一个社区,后续的精度调整将在一个社区内的浮点变量统一考虑,从而减少精度搜索空间。
具体地,所述步骤3中,条件数通过自动微分(可采用LibTorch工具)计算导数后带入条件数公式完成计算,条件数公式具体参见https://damingz.github.io/papers/popl20.pdf。
进一步地,本发明方法可描述如下:
Figure BDA0003676896570000092
Figure BDA0003676896570000101
给定一个源程序,算法6首先判断较低的精度能否满足误差阈值需求,若能够满足误差需求,则后续步骤无需执行,直接输出低精度版本的即可,在降低所有浮点变量精度不能够满足误差阈值需求时,则需要使用分组方法进行精度调整。通过基于LLVM的数值分析得出浮点变量关系图G(V,E,W),其中,V表示浮点变量关系图的顶点集合,图中顶点对应各个浮点变量;E表示浮点变量关系图的边集合,边代表两个浮点变量有直接的运算关系;W表示浮点变量关系图的边的权值集合,边的权值代表两个浮点变量计算了多少次。通过调用community包对图G进行社区划分,将分配好的社区方案存入comList[][]数组中,随后计算得出浮点变量的条件数,将其定义为敏感度,并将每个分组的敏感度设置为当前分组中浮点变量的最大敏感度,并依据该大小对分组进行排序。最后按照条件数(敏感度)从小到大的方式挨个对分组内的变量调整精度,首先降低敏感度最低的分组,而后判断分组方案能否满足误差阈值需求,若能够满足误差阈值需求,则继续修改下一个分组的精度,若不能够满足阈值需求,证明后续再进行调整也不能够满足误差阈值需求,则将本次修改的变量精度复原,结束本次精度调整。
若浮点变量精度从长双精度起始,需要长双精度,双精度,单精度三种精度混合,则需要按照该算法先将部分变长双精度降低至双精度完成一次精度调整过程,而后在此使用该算法调整部分已经是双精度的浮点变量至单精度,共需使用两次该算法进行精度调整。
综上,本发明通过计算得出浮点变量的条件数,并将其定义为敏感度,以此来量化程序中浮点变量精度改变后对结果的影响大小,通过降低对结果影响最小的浮点变量精度的方法,使精度搜索空间大大减少,从而快速的找到有效的混合精度配置方案。本发明将程序中浮点变量以及变量之间的运算次数抽象为图,而后利用子图划分算法将运算次数较多的浮点变量分入同一组,在精度调整时保证同组内浮点变量精度保持一致,从而减少精度转换开销,提升程序性能。
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (7)

1.一种基于敏感度模型的分组混合精度配置方案搜索方法,其特征在于,包括:
步骤1,利用程序插桩完成浮点变量关系提取,量化变量之间的计算次数和计算关系,并将该关系抽象为图表示,得到浮点变量关系图,图中顶点对应各个浮点变量,边代表两个浮点变量有直接的运算关系,边的权值代表两个浮点变量计算了多少次;
步骤2,采用社区划分算法对得到的浮点变量关系图进行子图划分,从而将具有强关联的浮点变量分入同一组内;
步骤3,计算得出浮点变量的条件数,将其定义为敏感度,并将每一组的敏感度设置为该组中对结果影响最大的浮点变量的敏感度大小,然后采取每一组敏感度从小到大的排序方法进行组间排序;
步骤4,进行精度调整,优先降低敏感度最小的变量组内浮点变量的精度,从而在保证精度转换开销尽可能低的同时,获取更高的性能提升。
2.根据权利要求1所述的一种基于敏感度模型的分组混合精度配置方案搜索方法,其特征在于,所述步骤1包括:
步骤1.1,提取浮点计算程序中的函数名称,包括:在提取变量时同时将其所在的函数名称给予标识,对于浮点计算程序中模块M的任一函数,如果该函数不是外部声明函数,则存储该函数名称为后续提取关系使用;
步骤1.2,利用基于SSA的def-use链获取浮点计算程序中的数值依赖关系;
步骤1.3,提取浮点计算程序中的数值计算关系;
步骤1.4,基于步骤1.1至步骤1.3,得到含有函数名称的变量关系表;
步骤1.5,将非浮点运算的变量从变量关系表中删除,得到程序中浮点变量之间的运算关系;
步骤1.6,采用针对基本块的插桩方法实现对指令执行次数的追踪,得到变量之间的运算次数;
步骤1.7,将该关系抽象为图表示,得到浮点变量关系图,图中顶点对应各个浮点变量,边代表两个浮点变量有直接的运算关系,边的权值代表两个浮点变量计算了多少次。
3.根据权利要求2所述的一种基于敏感度模型的分组混合精度配置方案搜索方法,其特征在于,所述步骤1.2包括:
步骤1.2.1,遍历当前函数F的指令,将其中的store指令存储至storequeue队列;
步骤1.2.2,若storequeue非空,将队首元素instruction出队列,并将其存储至队列dqueue,进行下一步的指令流分析;若storequeue为空,则流程结束;
步骤1.2.3,将dqueue队首元素出队列,并分析该指令对应的def-use链,若对应的指令vi的操作码为load,则vi和instruction对应一组数值关系依赖;若对应的指令vi的操作码不是load,则将vi存储至队列dqueue的队尾;
步骤1.2.4,若dqueue不为空,则继续进行步骤1.2.3;若dqueue为空,则进行步骤1.2.2。
4.根据权利要求2所述的一种基于敏感度模型的分组混合精度配置方案搜索方法,其特征在于,所述步骤1.3包括:
限制参与运算的的变量数目不能超过两个,找到store指令中存储的操作数,然后找出对应的运算指令中的虚拟寄存器,最后根据虚拟寄存器找到两条load指令即可得出数值计算关系。
5.根据权利要求2所述的一种基于敏感度模型的分组混合精度配置方案搜索方法,其特征在于,所述步骤1.5包括:
将store指令与load指令成对存储,在进行浮点变量类型判定时,当从load指令和store指令中获取的操作数都属于浮点类型时不过滤该指令对,否则过滤该指令对。
6.根据权利要求1所述的一种基于敏感度模型的分组混合精度配置方案搜索方法,其特征在于,所述步骤1.6包括:
使用LLVM IR生成器实现对基本块的指令插桩,通过IRBuilder在步骤1.5处理后的每个基本块的第一条load指令前插桩调用函数CalculateEdge指令,通过插桩调用该函数的指令完成运算次数的记录,重新编译IR为可执行文件,然后执行该文件获取插桩后的程序运行结果,统计程序中数值依赖关系和数值计算关系的变量对数。
7.根据权利要求1所述的一种基于敏感度模型的分组混合精度配置方案搜索方法,其特征在于,所述步骤2包括:
通过Louvain算法对浮点变量关系图中节点进行分类。
CN202210621393.2A 2022-06-02 2022-06-02 一种基于敏感度模型的分组混合精度配置方案搜索方法 Active CN114969446B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210621393.2A CN114969446B (zh) 2022-06-02 2022-06-02 一种基于敏感度模型的分组混合精度配置方案搜索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210621393.2A CN114969446B (zh) 2022-06-02 2022-06-02 一种基于敏感度模型的分组混合精度配置方案搜索方法

Publications (2)

Publication Number Publication Date
CN114969446A true CN114969446A (zh) 2022-08-30
CN114969446B CN114969446B (zh) 2023-05-05

Family

ID=82960143

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210621393.2A Active CN114969446B (zh) 2022-06-02 2022-06-02 一种基于敏感度模型的分组混合精度配置方案搜索方法

Country Status (1)

Country Link
CN (1) CN114969446B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116822253A (zh) * 2023-08-29 2023-09-29 山东省计算中心(国家超级计算济南中心) 适用于masnum海浪模式的混合精度实现方法及系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108772A (en) * 1996-06-28 2000-08-22 Intel Corporation Method and apparatus for supporting multiple floating point processing models
US6286135B1 (en) * 1997-03-26 2001-09-04 Hewlett-Packard Company Cost-sensitive SSA-based strength reduction algorithm for a machine with predication support and segmented addresses
US20040093319A1 (en) * 2002-07-31 2004-05-13 Takeshi Ogasawara Method and apparatus for precision optimization in compiled programs
US7448026B1 (en) * 2004-02-23 2008-11-04 Sun Microsystems, Inc. Method and apparatus for accuracy-aware analysis
US20100293530A1 (en) * 2009-05-12 2010-11-18 Nec Laboratories America, Inc. Systems and methods for model checking the precision of programs employing floating-point operations
WO2020224516A1 (zh) * 2019-05-09 2020-11-12 深圳大普微电子科技有限公司 一种神经网络硬件加速器
CN114118358A (zh) * 2021-10-15 2022-03-01 阿里巴巴(中国)有限公司 图像处理方法、装置、电子设备、介质及程序产品

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108772A (en) * 1996-06-28 2000-08-22 Intel Corporation Method and apparatus for supporting multiple floating point processing models
US6286135B1 (en) * 1997-03-26 2001-09-04 Hewlett-Packard Company Cost-sensitive SSA-based strength reduction algorithm for a machine with predication support and segmented addresses
US20040093319A1 (en) * 2002-07-31 2004-05-13 Takeshi Ogasawara Method and apparatus for precision optimization in compiled programs
US7448026B1 (en) * 2004-02-23 2008-11-04 Sun Microsystems, Inc. Method and apparatus for accuracy-aware analysis
US20100293530A1 (en) * 2009-05-12 2010-11-18 Nec Laboratories America, Inc. Systems and methods for model checking the precision of programs employing floating-point operations
WO2020224516A1 (zh) * 2019-05-09 2020-11-12 深圳大普微电子科技有限公司 一种神经网络硬件加速器
CN114118358A (zh) * 2021-10-15 2022-03-01 阿里巴巴(中国)有限公司 图像处理方法、装置、电子设备、介质及程序产品

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
唐武海等: "《深度神经网络模型压缩方法综述》", 《智能物联技术》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116822253A (zh) * 2023-08-29 2023-09-29 山东省计算中心(国家超级计算济南中心) 适用于masnum海浪模式的混合精度实现方法及系统
CN116822253B (zh) * 2023-08-29 2023-12-08 山东省计算中心(国家超级计算济南中心) 适用于masnum海浪模式的混合精度实现方法及系统

Also Published As

Publication number Publication date
CN114969446B (zh) 2023-05-05

Similar Documents

Publication Publication Date Title
US6381739B1 (en) Method and apparatus for hierarchical restructuring of computer code
US10394694B2 (en) Unexplored branch search in hybrid fuzz testing of software binaries
US7178134B2 (en) Method and apparatus for resolving memory allocation trace data in a computer system
Bentley et al. Engineering a sort function
US5966539A (en) Link time optimization with translation to intermediate program and following optimization techniques including program analysis code motion live variable set generation order analysis, dead code elimination and load invariant analysis
JP3311462B2 (ja) コンパイル処理装置
Blume et al. Polaris: The next generation in parallelizing compilers
EP0533813B1 (en) Method for representing scalar data dependencies for an optimizing compiler
US7571427B2 (en) Methods for comparing versions of a program
US5889999A (en) Method and apparatus for sequencing computer instruction execution in a data processing system
US5146594A (en) Method of producing object program based on interprocedural dataflow analysis of a source program
CN100414504C (zh) 用于在动态运行时系统中恢复数据值的方法和装置
US5517629A (en) Methods for analyzing computer program performance
JP2500079B2 (ja) プログラムの最適化方法及びコンパイラ・システム
EP0373361A2 (en) Generating efficient code for a computer with dissimilar register spaces
US6425124B1 (en) Resource allocation device for reducing the size and run time of a machine language program
US5396627A (en) Method of producing object program based on interprocedural dataflow analysis of a source program
Ball et al. Using paths to measure, explain, and enhance program behavior
CN114969446A (zh) 一种基于敏感度模型的分组混合精度配置方案搜索方法
CN110399182B (zh) 一种cuda线程放置优化方法
US8458671B1 (en) Method and system for stack back-tracing in computer programs
US20040181562A1 (en) System and method for determining deallocatable memory in a heap
US7100155B1 (en) Software set-value profiling and code reuse
CN112948828A (zh) 一种二进制程序恶意代码检测方法、终端设备及存储介质
US7210128B2 (en) Event-driven observability enhanced coverage analysis

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant