我目前正在通过自动矢量化熟悉 C++ 代码优化。由于我们在一个大型存储库中工作,我喜欢为特定功能激活优化,而不是全局设置它们。
我怎样才能做到这一点?
我在同一版本中使用 GCC 5.4.0 以及随附的 ARM GCC 交叉编译器。我尝试使用该__attribute__((optimize("flags")))
语句设置多个参数,但它不起作用。我知道我可以将这些函数导出到单独的源文件中并使用编译器编译指示,但将其直接附加到相关函数会更容易。
我尝试了不同的组合
__attribute__((optimize("tree-vectorize", "fast-math")))
或者
__attribute__((optimize("tree-vectorize")))
__attribute__((optimize("fast-math")))
但似乎没有一个工作。
这是完整的功能:
__attribute__((optimize("tree-vectorize", "fast-math"))) //Enable auto-vectorization
inline void
vecSqrt(const float32_t* const input, float32_t* const res, const size_t N)
{
for (size_t i = 0; i < N; ++i)
{
res[i] = sqrtf(input[i]);
}
}
希望有人可以帮助我。谢谢!