Как сравнить векторизованные и не векторизованные коды

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

1

Решение

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

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

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru