Практическое задание 4 (2018 и раньше)

Цель: научиться пользоваться средствами профилирования, выполнять анализ программы с помощью профилирования.

Постановка задачи

Для программы, выбранной в соответствии с вариантом задания, выполнить следующие действия:

  1. Выполнить автоматическую оптимизацию с помощью компилятора, используя информацию от профилировщика. Оценить полученное ускорение.
  2. Оценить накладные расходы на профилирование программы.
  3. Построить граф вызовов программы (картинку). С помощью графа вызовов определить «горячие точки» программы с точностью до функций.
  4. Построить аннотированный листинг программы. Определить «горячие точки» программы с точностью до строк исходного кода и команд ассемблера. Сделать предположение о том, что является основной причиной временных затрат (вычислительные операции, обращения в память, выполнение команд передачи управления, …).
  5. Собирая информацию о соответствующих событиях, получить с помощью профилирования следующую информацию о «горячих» функциях и о программе в целом:
    • среднее число тактов на микрооперацию,
    • процент кэш-промахов от всех обращений для кэшей первого и последнего уровней,
    • процент неправильно предсказанных переходов.

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

Варианты заданий

  1. Тест UA из пакета тестов NPB.
  2. Тест MG из пакета тестов NPB.
  3. Тест IS из пакета тестов NPB.
  4. Тест CG из пакета тестов NPB.
  5. Тест LU из пакета тестов NPB.
  6. Тест BT из пакета тестов NPB.
  7. Тест SP из пакета тестов NPB.
  8. Тест EP из пакета тестов NPB.
  9. Тест FT из пакета тестов NPB.
  10. Тест DC из пакета тестов NPB.

Отчёт

Отчёт высылайте преподавателю на почту. В отчет необходимо включить:

  • Фамилию И.О.
  • Постановка задачи
  • Результаты выполнения задания
  • Вывод по результатам выполнения задания.