干货|智能编译优化框架TACT

点击上方“中兴开发者社区”,关注我们

每天读一篇一线开发者原创好文


编译链接,是软件开发中必不可少的环节,由于技术较底层而不被一般用户知悉。操作系统产品部推出智能编译优化框架TACT(Tool for Automatic Compiler Tuning),从编译和自动化测试角度为优化程序性能提供了一个很好的解决方案,致力于软件质量内建。

 

 

智能编译优化框架TACT,源于开源项目,是一套用于程序编译和在异构环境中运行的工具,使用遗传算法自动调整编译器参数来优化程序。简单的说,TACT通过使用遗传算法,在编译链接的时候排列组合所有的编译参数,编译完成后对程序进行一系列性能相关的自动化测试,通过测试对比自动找到性能最优的编译参数组合。


TACT使用场景

通过自动获得编译链接参数的最优组合来实现性能提升,也可以减小二进制文件的体积及占用内存的大小。

 

l 对程序的运行参数进行智能组合测试,获得其运行参数的最优组合。

例如大型计算任务的多线程并行处理中,可利用该框架自动对并行的线程数目自动进行调整,达到计算性能提升的最大化。

 

使用TACT无须修改源代码,对源程序所使用的语言及编译器无限制,Java/C/C++等语言编译的程序都可使用该框架来进行调优,可以加入项目的自动化测试中。

 

TACT安装环境

TACT主要由Ruby语言编写,所以需要Ruby翻译器v1.9.1及以上,以及rubygems、rubytree程序。框架依赖simple-xlsx库产生测试结果,其依赖fast_xs、rubyzip库文件。若还需要对结果进行二维分析图像绘制,则还需要安装gnuplot程序(sudo apt-get install gnuplot)。


TACT使用模式

TACT可以通过Host machine连接多个测试板执行并行运行,在这种模式下,TACT将在主机上执行并行编译,在目标板上执行运行测试(编译和运行可以并行进行)。如图所示:

通过测试板使用TACT原理图

 

TACT主要通过一系列配置文件来控制其编译、参数组合以及优化效果。配置中可以选择对程序性能或者程序体积进行优化;也可以预设部分编译参数,只针对这部分参数进行自动调整优化;在对遗传算法了解比较深入的情况下,还可以对遗传算法的部分参数进行调优,加速自动调优的过程。



TACT使用实例

实例:TACT应用于嵌入式操作系统的SSL/TLS 库,对其加密解密算法的运行性能优化


库名:mbed。

源代码文件:mbedtls-developmen.zip。

交叉编译器:arm_eabi_gcc4.8.2_glibc2.18.0/bin/arm-unknown-linux-gnueabi-gcc

下载库:library/libmbed*.so*

测试程序:programs/test/benchmark

 

执行./benchmark aes_gcm。

测试程序提升之前的AES-GCM加密算法的速度:

  AES-GCM-128:       5064 Kb/s,          0 cycles/byte

 

通过TACT测试运行之后,得到xlsx格式的报告

   

报告中有多个编译参数组合测试结果,此处为显示方便,只截取了一种编译参数组合测试结果。可以看到速率提升至6873 Kb/s,提升约37%。

该框架可以同时执行多个测试用例,mean(第3行)是取多个测试用例的均值,此例子中只有一个测试用例(第2行)。

从实例可以看到TACT优化效果明显,但目前TACT的配置还稍复杂,操作系统产品部正在对其进行大幅度的改进和调整,后续将推出用户体验更好功能更强大的版本。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值