GCC -O2与-march / -ftree-vectorize

时间:2011-02-15 18:37:59

标签: compiler-optimization gcc4

我正在针对在两个图像(2000Hx3000W和6800Hx8500W)上执行sobel内核卷积的程序尝试几个编译器开关。有些观察结果我无法解释,以下是数据 - 编译器标志和以秒为单位的时间(请关注最后一列,因为它表示在Y轴上卷积较大的图像):

O2-march=barcelona                  0.1483326   0.833264    1.6018882   28.6711242
O2-ftree-vectorize                  0.1462104   0.847973    1.506708    26.628592
O2                                  0.1468406   0.8368156   1.5999718   20.61377564
O2-ftree-vectorize-march=barcelona  0.1441898   0.827366    1.4687354   15.2572644

我预计-O2-march = barcelona要好一些,考虑到我运行的机器是AMD巴塞罗那。关于为什么-O2比-O2 -march更好的想法?

关于-ftree-vectorize,它应该能够并行运行指令,因为我的循环是无依赖的。但是,-02-ftree-vectorize-march = barcelona是最好的,当单独时间有合理的差异时。

如果我能理解这种行为,那将会很棒。

的问候,
萨扬

0 个答案:

没有答案