通过编译器对循环进行矢量化

时间:2013-11-04 17:26:28

标签: c++ compiler-construction vectorization compiler-optimization

我有一个非常基本的问题,关于编译器(在我的情况下是gcc)使用-O标志进行的优化。我想在这里只关注循环的矢量化。假设一个简单的for循环,没有指针别名/竞争条件的危险。是否有可能以一种方式重写此循环,使编译器使用-O0标志生成的代码与编译器对循环进行矢量化时的速度一样快?

1 个答案:

答案 0 :(得分:3)

很可能:不。使用-O0为编译器提供全权委托,使代码尽可能低效。当然,想要惹恼你的并不是一些邪恶的捣蛋,但除非你告诉它,否则它不会努力。

一些优化通常必须由编译器完成。通常,您不能通过源代码中的微优化获得相同的性能,因为您可以使用积极的编译器优化。

关于您的具体示例:是的,您可以在代码中包含向量指令以强制使用向量指令。但是,如果您执行此类操作,您的代码可能无法在所有平台上运行,除非您非常了解非常您正在做什么并始终提供回退。

相关问题