2

2 つのイメージ ( 2000Hx3000W と 6800Hx8500W ) でソーベル カーネル畳み込みを実行するプログラムに対して、いくつかのコンパイラ スイッチを試しています。私が解釈できない観察結果がいくつかあります。データは次のとおりです - コンパイラ フラグと秒単位の所要時間 (最後の列に注目してください。大きな画像の 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

私が実行しているマシンが AMD barcelona であることを考えると、-O2-march=barcelona が適度に優れていると予想しました。-O2 が -O2 -march よりも優れている理由について何か考えはありますか?

-ftree-vectorize については、私のループは依存関係がないので、命令を並列に実行できるはずです。しかし、 -O2-ftree-vectorize-march=barcelona は、個々にタイミングに合理的な違いがある場合に最適です。

この振る舞いを理解できれば素晴らしいことです。

よろしく、
サヤン

4

0 に答える 0