邮件列表显示,明年的 GCC 12 编译器在使用默认的 “-O2” 优化级别时可能会默认启用矢量化选项。
GCC 当前默认情况下在达到 “-O3” 优化级别之前不会启用其循环和 SLP 矢量化选项,但这是许多 Linux 发行版和其他软件包常用的优化选项。因此从 8 月份开始,GCC 的开发人员正就在考虑在 -O2 级别启用他们的矢量化选项,该功能可以在树上执行基本的块矢量化,提高编译性能。
讨论中,开发人员倾向于使用 “相对便宜” 的成本模型(-fvect-cost-model=very-cheap)来启用矢量化选项。如果标量迭代计数是四的倍数,那么就能以非常低的代价实现矢量化,这也是是这些模型中成本最低的。同时,-O3 处矢量化的默认成本模型是“动态的”,以便进行更多检查以确定矢量化代码路径是否更快。
关于在明年的 GCC 12 版本中默认为 -O2 启用矢量化器的讨论现在正在进行中,感兴趣的开发者可以查看其 GCC 文档或邮件列表。
暂无回复。