Как сравнить векторизованные и не векторизованные коды - PullRequest
0 голосов
/ 05 декабря 2018

Мне интересно, как можно сравнивать векторизованный код с его не векторизованной версией?Например, у меня есть простой код на языке Fortran, и я компилирую его с -O2, чтобы включить автоматическую векторизацию.После этого я вижу из отчета по оптимизации, что цикл был векторизован.Теперь, если я хочу сравнить этот векторизованный код с его не векторизованной версией, должен ли я скомпилировать тот же код с -O2 -no-vec или -O1 или даже -O0?Ну, исходя из моего опыта, и -O2 -no-vec, и -O1 не дают существенных различий, хотя первое всегда немного лучше.Однако, если я сравниваю -O2 и -O0, результаты значительно отличаются, что больше, чем число векторной ширины;поэтому я уверен, что не стоит сравнивать их, чтобы подчеркнуть преимущества векторизации.Итак, я хотел бы только знать, должен ли я сравнивать -O2 с -O2 -no-vec или -O1, так как я читал много журналов, которые никогда не объясняли этот вопрос подробно, а только указывали, например, "... по сравнению с его векторизованной версией, векторизованный код достигает ... "

1 Ответ

0 голосов
/ 05 декабря 2018

Уровень оптимизации компилятора охватывает множество отдельных оптимизаций, а не только векторизацию.Это может быть математическая модель, развертывание цикла ...

Результаты будут различны для всех из них, так что да, деактивируйте подпрограммы векторизации вашего компилятора (не указано ...), чтобы увидеть различия, сделанные только векторизацией.,

Вы не должны идти на более низкую оптимизацию из-за этих других оптимизаций, которые могут добавить числовые различия самостоятельно.

...