Цель: научиться пользоваться средствами профилирования, выполнять анализ программы с помощью профилирования.
Постановка задачи
Для программы, выбранной в соответствии с вариантом задания, выполнить следующие действия:
- Выполнить автоматическую оптимизацию с помощью компилятора, используя информацию от профилировщика. Оценить полученное ускорение.
- Оценить накладные расходы на профилирование программы.
- Построить граф вызовов программы (картинку). С помощью графа вызовов определить «горячие точки» программы с точностью до функций.
- Построить аннотированный листинг программы. Определить «горячие точки» программы с точностью до строк исходного кода и команд ассемблера. Сделать предположение о том, что является основной причиной временных затрат (вычислительные операции, обращения в память, выполнение команд передачи управления, …).
- Собирая информацию о соответствующих событиях, получить с помощью профилирования следующую информацию о «горячих» функциях и о программе в целом:
- среднее число тактов на микрооперацию,
- процент кэш-промахов от всех обращений для кэшей первого и последнего уровней,
- процент неправильно предсказанных переходов.
На основании полученной информации сделать вывод о причинах временных затрат при выполнении программы. Можно собрать информацию и о других событиях, если это требуется для обоснования вывода.
Варианты заданий
- Тест UA из пакета тестов NPB.
- Тест MG из пакета тестов NPB.
- Тест IS из пакета тестов NPB.
- Тест CG из пакета тестов NPB.
- Тест LU из пакета тестов NPB.
- Тест BT из пакета тестов NPB.
- Тест SP из пакета тестов NPB.
- Тест EP из пакета тестов NPB.
- Тест FT из пакета тестов NPB.
- Тест DC из пакета тестов NPB.
Отчёт
Отчёт высылайте преподавателю на почту. В отчет необходимо включить:
- Фамилию И.О.
- Постановка задачи
- Результаты выполнения задания
- Вывод по результатам выполнения задания.