Цель: научиться выполнять векторизацию программ.
Постановка задачи
Векторизовать заданную программу автоматически или полуавтоматически с помощью компилятора, а также вручную с помощью intrinsics. Сравнить времена работы следующих вариантов программы:
- исходная программа, оптимизированная только с помощью ключей компилятора,
- программа, векторизованная полуавтоматически (с помощью директив и ключей компилятора и незначительной правки кода),
- программа, векторизованная вручную (с помощью intrinsics) - указать время работы программы для каждого этапа оптимизации.
Во всех случаях использовать ключи оптимизации, дающие наименьшее время работы программы, и наиболее позднее из доступных векторное расширение. По возможности обеспечить использование команд выровненного чтения и записи векторов. В программе с ручной векторизацией минимизировать количество обращений к памяти. На каждом этапе ручной оптимизации проверить, что время работы программы уменьшилось.
Отчёт
Отчёт высылайте преподавателю на почту. В отчет необходимо включить:
- Фамилию И.О.
- Постановка задачи
- Описание используемой вычислительной системы и компилятора
- Результаты выполнения задания: описание выполненных опимизаций и полученное время работы для указанных выше вариантов. Для варианта с ручной векторизацией желательно привести времена расчёта, полученные на разных этапах оптимизации.
- Вывод по результатам выполнения задания
- Тексты программ в приложении