optimization - 使用Logistic回归模型自动选择gcc编译器优化

标签 optimization gcc compiler-construction automation machine-learning

我正在做一个基于 gcc 编译器优化选项选择的项目,使用基于本文的 LRM(逻辑回归模型)算法... http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5066672

在此算法中,第一步是通过编译并执行每个组合的程序,从所有可用优化选项组合(现在大约 65 个)中创建训练数据。然后稍后使用这些数据更快地找到其他代码的最佳优化选项集。

有人可以帮我理解应该如何存储所有这些数据吗?我计划创建一个二维数组,然后将该数组存储在二进制文件中。有一个更好的方法吗?请帮忙。以及如何继续使用 LRM 从训练数据中找到最佳集合。任何建议也将受到欢迎。

谢谢。

最佳答案

它是一个二维数组,每个选项一列,结果(标准测试用例的运行时间)一列。由于有 65 列,选项要么打开,要么关闭,有 2^65 种可能的组合,等于 36893488147419103232。按结果列排序,这就是最佳选项集!

我想我会选择 CSV 文件......

可能的组合数量是不切实际的。测试以确定是否有任何单个标志使您的程序更快或更慢,然后是否任何两个标志组合的效果比其单独改进的总和更好(协同效应),然后对三个标志执行相同的操作,依此类推。然后可以在这些协同组中使用这些选项,以减少可能组合的数量。

但是选项组合的数量多得离谱!

关于optimization - 使用Logistic回归模型自动选择gcc编译器优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9252342/

相关文章:

C++ OpenMP 并行比串行慢

mysql - Drupal MySQL 查询优化

gcc - 运行时错误 : Segmentation fault with libtommath and libtomcrypt

c++ - 从 Foo** 到 void** 的转换无效 - 为什么允许隐式类型转换为 void* 但不允许为 void**?

c++ - 在硬件级别使用 ForwardIterator 与 BidirectionalIterator 相比有何作用?

python - 线程化快速创建大量图表

c++ - cout 是同步的/线程安全的吗?

compiler-construction - FogBugz 是用什么编程语言编写的?

c++ - C++函数参数表中有String类型的情况下,是否可以使用C程序函数调用C++函数?

c - 结构的两个 malloc 定义之间的区别