GCC -O2 с -march / -ftree-vectorize - PullRequest
       20

GCC -O2 с -march / -ftree-vectorize

2 голосов
/ 15 февраля 2011

Я пробую несколько переключателей компилятора для программы, которая выполняет свёртку ядра sobel на двух изображениях (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

Я ожидал, что -O2-март = барселона будет умеренно лучше, учитывая, что машина, на которой я работаю, является AMD в Барселоне.Любые идеи о том, почему -O2 лучше, чем -O2 -march?

О -ftree-vectorize, он должен иметь возможность выполнять инструкции параллельно, поскольку мой цикл не зависит от зависимостей.Но тогда, -O2-ftree-vectorize-march = barcelona является лучшим из лота, когда индивидуально есть разумные различия во времени.

Было бы замечательно, если бы я мог понять это поведение.

С уважением,
Саян

...