是否有任何应用机器学习来提高代码性能的例子?

时间:2013-12-03 00:10:59

标签: performance machine-learning performance-testing

我看到Facebook的Keith Adams将talk比较机器学习技术与调整代码以提高现实世界中的性能。是否有这种自动化技术应用于实际项目的例子?我

我知道某些编译器中的配置文件引导优化以及JIT编译器用于提高性能的一些技术,但我正在考虑提高代码性能的更基本方法,这些方法可能需要更改代码本身而不是代码生成。比如:

  1. 在特定网络应用程序中选择最佳缓冲区大小,或为特定应用程序选择正确的堆栈大小。
  2. 在多线程应用程序中选择结构布局,以提高本地缓存性能,同时减少错误共享。
  3. 为特定算法选择不同的数据结构。
  4. 我在Halide上阅读paper,这是一个图像处理框架,它使用遗传算法自动调整图像处理流水线以提高性能。像这样的例子或任何研究指针都是有用的。

2 个答案:

答案 0 :(得分:2)

看看雷米http://web.mit.edu/remy/ 它采用一种遗传优化方法生成网络拥塞控制算法,显着提高网络性能。一个指定关于正在使用的网络的假设,并且Remy生成控制算法以在该网络的数据节点上运行。结果令人惊讶,Remy优于所有人类开发的迄今为止的优化技术。

答案 1 :(得分:1)

FFTW是一种广泛使用的软件包,它使用OCaml生成优化的C代码。本文详细介绍了该流程:http://vuduc.org/pubs/vuduc2000-fftw-dct.pdf

您还可以查看Acovea,一种优化编译器标志的遗传算法:http://stderr.org/doc/acovea/html/index.html