Скачиваний:
24
Добавлен:
01.05.2014
Размер:
627.71 Кб
Скачать

Санкт-Петербургский государственный электротехнический университет

Кафедра МОЭВМ

Отчет по лабораторной работе №2.

Измерение характеристик динамической сложности программ с помощью профилировщика VTune

Выполнил:

Студент гр.3351

Сергеев М.В.

Санкт-Петербург

2007г.

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

1. Ознакомиться с документацией на VTune и выполнить

для программы prost0.c следующее задание:

- компиляция с использованием автономного отладчика;

- профилирование по времени;

- профилирование по частоте;

- профилирование по средним временам на 1 вызов;

- запись результатов профилирования в файл для печати.

2. Выполнить тестовые программs test_cy1.c, test_cyc.c,

test_sub.c c анализом параметров повторения циклов и проверкой

их влияния на точность и чувствительность профилирования.

3. Скомпилировать и выполнить под управлением профилировщика VTune

программы на Паскале и С, разработанные в 1-ой лабораторной работе.

Снять все виды профилей, выявить "узкие места", ввести в

программы усовершенствования и получить новые профили. Если

времена выполнения рассматриваемых при профилировании фрагментов

программы малы для учета VTun'ом, ввести вспомогательное зацикливание

программы.

  1. Выполнение работы

В качестве используемого профилировщика был использован пакет Intel Vtune 7.0. Программa на Pascal откомпилирована в среде Borland Delphi 7, на C – в MS VisualStudio 2003.

Для всех программ в данной работе проводились 2 вида профилирования:

TBS (Time Based Sampling) - произведение измерений через регулярные промежутки времени с использованием обычного таймера;

EBS (Event Based Sampling) - в данном режиме моменты измерений определяются событиями, которые генерируются процессором. По умолчанию профилировщик реагирует только на событие Clockticks.

Те программы, в которых это было необходимо, модифицировались:

  • Удалены все операции ввода/вывода, т.к. они будут занимать несравнимо большее время, нежели операции, относящиеся непосредственно к вычислительному алгоритму программы;

  • Введено дополнительное зацикливание, если времени работы программы было не достаточно для профилирования.

  1. Профилирование программы porost0.C

Line

Source

Clockticks (EBS)

Timer (TBS)

1

#include "stdio.h";

 

 

2

 

 

3

int primes[1000];

 

 

4

#define MAXPRIMES 1000

 

 

5

 

 

6

main()

 

 

7

{

 

 

8

int j;

 

 

9

int lastprime, curprime;

 

 

10

 

 

11

primes[0] = 2;

 

 

12

primes[1] = 3;

 

 

13

lastprime = 1;

 

 

14

curprime = 3;

 

 

15

 

 

16

printf("prime %d = %d\n", 0, primes[0]);

 

 

17

printf("prime %d = %d\n", 1, primes[1]);

 

 

18

 

 

19

while(curprime < MAXPRIMES)

 

 

20

{

 

 

21

for(j = 0; j <= lastprime; j++)

2

1

22

if((curprime % primes[j]) == 0)

45

23

23

{

 

 

24

curprime += 2;

 

 

25

 

 

26

break;

 

 

27

}

 

 

28

if(j <= lastprime)

 

1

29

continue;

 

 

30

lastprime++;

 

 

31

printf("prime %d = %d\n", lastprime, curprime);

 

 

32

primes[lastprime] = curprime;

 

 

33

curprime += 2;

 

 

34

}

 

 

35

}

 

 

36

 

 

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

Соседние файлы в папке Лабораторная работа №2
  • #
    01.05.201470.66 Кб24Lab2_sempl_results.xls
  • #
    01.05.2014627.71 Кб24LAB_2.doc