CN109726816A - 一种汇编级染色器程序链接优化方法 - Google Patents
一种汇编级染色器程序链接优化方法 Download PDFInfo
- Publication number
- CN109726816A CN109726816A CN201811523817.1A CN201811523817A CN109726816A CN 109726816 A CN109726816 A CN 109726816A CN 201811523817 A CN201811523817 A CN 201811523817A CN 109726816 A CN109726816 A CN 109726816A
- Authority
- CN
- China
- Prior art keywords
- program
- function
- instruction
- stainer
- code
- 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.)
- Pending
Links
- 241001510071 Pyrrhocoridae Species 0.000 title claims abstract description 34
- 238000000034 method Methods 0.000 title claims abstract description 19
- 238000005457 optimization Methods 0.000 title claims abstract description 18
- 230000006870 function Effects 0.000 claims description 51
- 238000003491 array Methods 0.000 claims description 3
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明属于计算机图形领域,提供一种汇编级染色器程序链接优化方法,包括:(1)获取程序代码,根据驱动开发规定,获取染色器汇编程序代码及其文件地址,并根据文件地址判断染色器汇编代码的类型,将其分为顶点程序、像素程序和内建函数;(2)分析程序函数,扫描获得的汇编代码,分别记录三类代码中包含的函数的名称及其被调用次数,并选择链接优化方式;(6)生成二进制文件,根据指令编码表,依次将指令数组中染色器汇编程序的每条指令翻译为二进制代码并保存。
Description
技术领域
本发明属于计算机图形领域,尤其涉及一种汇编级染色器程序链接优化方法。
背景技术
图形处理器(GPU)是计算机中进行图形处理的核心单元,其性能直接影响着用户的使用体验。可编程染色器作为图形处理器的核心和关键,对处理器性能有直接的影响。然而在其上运行的程序种类多、设计复杂,编译连接难度大,难以充分发挥可编程染色器的全部性能。
发明内容
本发明的目的是:
本发明提供一种汇编级染色器程序链接优化方法,该方法在编译链接染色器程序的过程中,通过去除冗余函数、内建函数展开等方式优化程序链接,提高编译后的程序的运行效率。
本发明的解决方案是:
一种汇编级染色器程序链接优化方法,包括:
(1)获取程序代码,
根据驱动开发规定,获取染色器汇编程序代码及其文件地址,并根据文件地址判断染色器汇编代码的类型,将其分为顶点程序、像素程序和内建函数;
(2)分析程序函数,
扫描获得的汇编代码,分别记录三类代码中包含的函数的名称及其被调用次数,并选择链接优化方式;
(6)生成二进制文件,
根据指令编码表,依次将指令数组中染色器汇编程序的每条指令翻译为二进制代码并保存。
链接优化方式包括:
(3)运行效率最优链接,
建立两个指令数组,将顶点程序和像素程序从其各自的程序入口起,把指令按运行顺序存放到数组中。每当遇到函数跳转指令时,就将函数展开,去掉该条指令,直接将要调用的函数里的指令内容依次从原函数被去掉的指令处向后添加,当该函数里的指令添加完后,继续添加原函数的指令直到染色器程序结束。
链接优化方式包括:
(4)空间优化链接,
根据分析程序函数中的记录,去除掉未调用的冗余函数,将剩余的所有函数放在连续的指令数组里;扫描数组中所有的跳转指令,根据函数名,重定位程序运行时的跳转位置。
链接优化方式包括:
(5)综合优化链接,
根据分析程序函数中的记录,将只调用了一次的函数展开;然后去除掉未调用的冗余函数,将剩余的所有函数放在连续的指令数组里;扫描数组中所有的跳转指令,根据函数名,重定位程序运行时的跳转位置。
本发明的优点是:本发明提供的一种汇编级染色器程序链接优化方法,通过对染色器汇编程序的编译过程中的链接优化,最终生成经过优化的二进制可执行文件。该方法优化了生成的染色器程序结构,提高了程序运行效率。
附图说明
图1为本发明一种汇编级染色器程序链接优化方法的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
下面结合附图和具体实施例对本发明的技术方案做进一步详细描述。
如图1所示,一种汇编级染色器程序链接优化方法,包括(1)获取程序代码、(2)分析程序函数、(3)运行效率最优链接、(4)空间优化链接、(5)综合优化链接和(6)生成二进制文件;
(1)获取程序代码,根据驱动开发规定,获取染色器汇编程序代码及其文件地址,并根据文件地址判断染色器汇编代码的类型,将其分为顶点程序、像素程序和内建函数;
(2)分析程序函数,扫描(1)所获得的汇编代码,分别记录三类代码中包含的函数的名称及其被调用次数,并选择链接优化方式;
(3)运行效率最优链接,建立两个指令数组,将顶点程序和像素程序从其各自的程序入口起,把指令按运行顺序存放到数组中。每当遇到函数跳转时,就将函数展开,即去掉该条指令,直接将要调用的函数里的指令内容依次从原函数被去掉的指令处向后添加,当该函数里的指令添加完后,继续添加原函数的指令直到染色器程序结束;
顶点程序和像素程序将分别由一组没有跳转函数的指令数组表示,程序的入口指令即为指令数组的第一条指令,程序按照数组的指令顺序依次执行;此种链接优化方式所得出的染色器程序不需要跳转,所以运行速度最快,效率最高,但是所占用的内存空间也最大;
(4)空间优化链接,其特征在于,根据(2)分析程序函数中的记录,去除掉未调用的冗余函数,将剩余的所有函数放在连续的指令数组里;扫描数组中所有的跳转指令,根据函数名,重定位程序运行时的跳转位置;
此种链接优化方式所得出的染色器程序入口可以在程序的任何位置,运行时遇到的所有函数都要进行跳转,运行时间较长,运行的效率较低,但比较节省内存空间;
(5)综合优化链接,根据(2)分析程序函数中的记录,将只调用了一次的函数展开。然后去除掉未调用的冗余函数,将剩余的所有函数放在连续的指令数组里;扫描数组中所有的跳转指令,根据函数名,重定位程序运行时的跳转位置;
此种链接优化方式所得出的染色器程序入口可以在程序的任何位置,程序运行的效率比较高,介于(3)(4)之间,并且运行所占用的内存空间甚至比(4)还小,是默认情况下最好的链接优化方式;
(6)生成二进制文件,其特征在于,根据指令编码表,依次将指令数组中染色器汇编程序的每条指令翻译为二进制代码并保存。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细地说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (4)
1.一种汇编级染色器程序链接优化方法,其特征在于,包括:
(1)获取程序代码,
根据驱动开发规定,获取染色器汇编程序代码及其文件地址,并根据文件地址判断染色器汇编代码的类型,将其分为顶点程序、像素程序和内建函数;
(2)分析程序函数,
扫描获得的汇编代码,分别记录三类代码中包含的函数的名称及其被调用次数,并选择链接优化方式;
(6)生成二进制文件,
根据指令编码表,依次将指令数组中染色器汇编程序的每条指令翻译为二进制代码并保存。
2.如权利要求1所述的一种汇编级染色器程序链接优化方法,其特征在于,链接优化方式包括:
(3)运行效率最优链接,
建立两个指令数组,将顶点程序和像素程序从其各自的程序入口起,把指令按运行顺序存放到数组中。每当遇到函数跳转指令时,就将函数展开,去掉该条指令,直接将要调用的函数里的指令内容依次从原函数被去掉的指令处向后添加,当该函数里的指令添加完后,继续添加原函数的指令直到染色器程序结束。
3.如权利要求1所述的一种汇编级染色器程序链接优化方法,其特征在于,链接优化方式包括:
(4)空间优化链接,
根据分析程序函数中的记录,去除掉未调用的冗余函数,将剩余的所有函数放在连续的指令数组里;扫描数组中所有的跳转指令,根据函数名,重定位程序运行时的跳转位置。
4.如权利要求1所述的一种汇编级染色器程序链接优化方法,其特征在于,链接优化方式包括:
(5)综合优化链接,
根据分析程序函数中的记录,将只调用了一次的函数展开;然后去除掉未调用的冗余函数,将剩余的所有函数放在连续的指令数组里;扫描数组中所有的跳转指令,根据函数名,重定位程序运行时的跳转位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811523817.1A CN109726816A (zh) | 2018-12-12 | 2018-12-12 | 一种汇编级染色器程序链接优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811523817.1A CN109726816A (zh) | 2018-12-12 | 2018-12-12 | 一种汇编级染色器程序链接优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109726816A true CN109726816A (zh) | 2019-05-07 |
Family
ID=66295667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811523817.1A Pending CN109726816A (zh) | 2018-12-12 | 2018-12-12 | 一种汇编级染色器程序链接优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109726816A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040205739A1 (en) * | 2001-03-02 | 2004-10-14 | International Business Machines Corporation | Optimizing post-link code |
US20060005178A1 (en) * | 2004-07-02 | 2006-01-05 | Nvidia Corporation | Optimized chaining of vertex and fragment programs |
US20060098018A1 (en) * | 2004-11-05 | 2006-05-11 | Microsoft Corporation | Optimizing automated shader program construction |
CN105279004A (zh) * | 2015-11-24 | 2016-01-27 | 无锡江南计算技术研究所 | 一种基于采样剖析的轻量级程序代码重排方法 |
CN106250204A (zh) * | 2016-07-21 | 2016-12-21 | 北京理工大学 | 一种多学科优化仿真软件的优化器插件开发方法 |
CN106709861A (zh) * | 2016-12-12 | 2017-05-24 | 中国航空工业集团公司西安航空计算技术研究所 | 一种染色器驱动静态重构方法 |
-
2018
- 2018-12-12 CN CN201811523817.1A patent/CN109726816A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040205739A1 (en) * | 2001-03-02 | 2004-10-14 | International Business Machines Corporation | Optimizing post-link code |
US20060005178A1 (en) * | 2004-07-02 | 2006-01-05 | Nvidia Corporation | Optimized chaining of vertex and fragment programs |
US20060098018A1 (en) * | 2004-11-05 | 2006-05-11 | Microsoft Corporation | Optimizing automated shader program construction |
CN105279004A (zh) * | 2015-11-24 | 2016-01-27 | 无锡江南计算技术研究所 | 一种基于采样剖析的轻量级程序代码重排方法 |
CN106250204A (zh) * | 2016-07-21 | 2016-12-21 | 北京理工大学 | 一种多学科优化仿真软件的优化器插件开发方法 |
CN106709861A (zh) * | 2016-12-12 | 2017-05-24 | 中国航空工业集团公司西安航空计算技术研究所 | 一种染色器驱动静态重构方法 |
Non-Patent Citations (2)
Title |
---|
李峥辉: "基于DM642评估板的图像编码优化技术", 《微计算机信息》 * |
王浩: "基于GCC的TMS320C67xx汇编代码的优化", 《国外电子测量技术》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2220442C2 (ru) | Полное устранение избыточной загрузки для архитектур, поддерживающих спекуляцию по управлению и данным | |
CN107239315A (zh) | 面向神经网络异构计算平台的编程模型 | |
EP0932100A2 (en) | Program compile system and its compile method for efficiently compiling a source program including an indirect call for a procedure | |
CN109086215B (zh) | 一种嵌入式软件单元测试用例生成方法及系统 | |
US5946491A (en) | Register allocation method and apparatus for gernerating spill code as a function of register pressure compared to dual thresholds | |
CN1971518A (zh) | 编译系统、调试系统及程序开发系统 | |
CN109784010A (zh) | 一种基于llvm的程序控制流混淆方法及装置 | |
CN102099786A (zh) | 程序优化方法 | |
US20090119652A1 (en) | Computer Program Functional Partitioning System for Heterogeneous Multi-processing Systems | |
EP4258175A1 (en) | Node fusion method for computational graph, and device | |
CN101000556A (zh) | 编译装置 | |
US20060123404A1 (en) | Computer program code size partitioning system and method for multiple memory multi-processing systems | |
CN109726816A (zh) | 一种汇编级染色器程序链接优化方法 | |
CN111767589A (zh) | 基于汽车安装点静刚度的批处理方法、系统、终端及存储介质 | |
CN103838616B (zh) | 基于树型程序分支的计算机程序即时编译方法 | |
CN114676053A (zh) | 一种硬件设备的自动化分析方法及装置 | |
CN112990461B (zh) | 构建神经网络模型的方法、装置、计算机设备和存储介质 | |
US20040205738A1 (en) | Compiler, program prduct, compilation device, communication terminal device, and compilation method | |
EP2063355A1 (en) | Branch prediction method | |
CN104035864B (zh) | 一种基于矛盾片段模式的路径生成方法 | |
CN116596048A (zh) | 一种深度学习模型推理部署的方法和系统 | |
CN116541846A (zh) | 复合式Android平台原生程序动态漏洞挖掘系统 | |
CN107168761A (zh) | 一种选择语句优化编译方法 | |
US6944852B2 (en) | Compiler | |
CN106126311A (zh) | 一种基于代数演算的中间代码优化方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190507 |
|
RJ01 | Rejection of invention patent application after publication |