pppaDDr (1158441), страница 2
Текст из файла (страница 2)
Эти функции-члены добавляют к ранее посчитанным или записывают новые значения временных характеристик. Первая функция AddTime и WriteTime предназначены для работы с массивом mgen, первый параметр - это номер индекса, а второй само значение. Вторая функция AddTime предназначена для работы с остальными массивами, параметр t1 служит для выбора массива, параметр t2 – значение индекса массива, а val - значение.
3.1.4Функции чтения
void ReadTime(typegrp t1,typecom t2,double &val);
void ReadTime(typetime t2,double &val);
Эти функции-члены читают значения временных характеристик, значения их параметров такие же, как и для записи, только последний параметр передается ссылкой.
3.1.5Чтение информации, идентифицирующей интервал
void ReadIdent(ident **p);
Устанавливает указатель равным адресу идентификатора интервала.
3.1.6Сравнение идентифицирующей информации
int CompIdent(ident *p);
Сравнивает идентификатор интервала с другого процессора с идентификатором текущего интервала, параметр р - указатель на идентификатор интервала. В случае совпадения идентификаторов по всем элементам структуры возвращает 1, в противном случае – 0.
3.1.7Суммирование временных характеристик
void SumInter(CInter *p);
Эта функция-член суммирует значения временных характеристик интервала со значениями интервала более высокого уровня. Параметр р – указатель на интервал более высокого уровня.
3.2Класс CtreeInter, модуль treeinter.cpp
Этот класс предназначен для работы с интервалами, собранными на одном процессоре. Он содержит элементы данных: номер процессора - nproc, количество интервалов – qinter, номер текущего интервала – curninter, максимальный номер уровня вложенности maxnlev, а также указатель на динамический массив структур, содержащий номера интервалов более низкого, высокого или этого же уровня.
| typedef struct ttree{ | unsigned long | up, |
| up, next, down | - номера интервалов, |
3.2.1Конструктор
| CtreeInter( | FILE | *stream, |
| stream | - указатель на дескриптор файла, |
Конструктор читает из файла, записанного в конце выполнения DVM-программы, информацию об интервалах, собранных на процессоре.
Эта функция-член запрашивает память под массив структур данного дерева интервалов, заполняет его и обращается к конструктору класса Cinter с прочитанными из файла характеристиками интервала.
3.2.2Деструктор
~CTreeInter(); - Деструктор освобождает память, запрошенную под массив структур.
3.2.3Получение результата работы конструктора
bool Valid();
Функция-член Valid() предназначена для получения результата работы конструктора. Возвращает TRUE в том случае, если работа конструктора завершилась успешно и FALSE в противном случае.
3.2.4Сообщение об ошибке
void TextErr(char *t);
Предназначена для получения сообщения об ошибке, если Valid() возвратила код ответа FALSE.
3.2.5Функции обхода интервалов
void BeginInter(void);
void NextInter(ident **id);
CInter *FindInter(ident *id);
Предназначены для обхода интервалов. Параметр *id – указатель на идентификатор интервала. Обход интервалов осуществляется в том же порядке, что и заполнение интервалов на этапе сбора. Функция FindInter осуществляет поиск интервала с такими идентификационными значениями, что и параметр, в случае, когда соответствующий интервал не найден возвращает NULL.
3.2.6Суммирование характеристик по дереву интервалов
void SumLevel(void);
Эта функция-член служит для суммирования значений временных характеристик интервалов более низкого уровня с интервалами более высокого уровня для всего дерева интервалов.
3.3Класс Csynchro, модуль synchro.cpp
Этот класс предназначен для хранения значений времен рассинхронизации и разброса времен.
| typedef struct tsyn { | short | nitem, |
| nitem | - номер коллективной операции, установленный в модуле statevnt.c, |
Функции-члены:
3.3.1Конструктор
| CSynchro( | FILE | *stream, |
Чтение из файла времен рассинхронизации.
| stream | - указатель на файл, полученный при выполнении DVM-программы. |
3.3.2Деструктор
~CSynchro();
Освобождение запрошенной памяти.
3.3.3Результат работы конструктора
bool Valid();
Служит для получения признака о работе конструктора, TRUE- работа конструктора завершилась успешно, FALSE – в противном случае.
3.3.4Сообщение об ошибке
void TextErr(char *t);
Выдает сообщение об ошибке.
3.3.5Подсчет числа рассинхронизаций и разброса времен интервала
| void Count( | unsigned long | Nint, |
| nint | – номер интервала, |
Подсчет числа рассинхронизаций и разброса времен по типам коллективных операций для интервала с заданным номером. Устанавливает значение заданного номера интервала текущим, следующие функции-члены возвращают значения для текущего интервала.
3.3.6Количество рассинхронизаций в интервале
int GetCount(typecollect nitem);
Возвращает число рассинхронизаций для заданного типа коллективной операции.
3.3.7Чтение значения времени рассинхронизации
double Find(typecollect nitem);
double GetCurr(void);
Служат для получения значения времени рассинхронизации и разброса времен для коллективной операции. Функция Find() осуществляет поиск нового значения времени для текущего интервала, а функция GetCurr() только читает это текущее значение.
nitem – тип коллективной операции.
3.3.8Чтение значения времени рассинхронизации, поступившего вслед за текущим
double FindNearest(typecollect nitem);
Эта функция осуществляет поиск ближайшего от текущего значения, установленного функцией Find(), времени коллективной операции с номером, заданным параметром nitem, Используется для вычисления времен перекрытия операций.
3.4Класс CstatRead, модуль statread.cpp
Служит для чтения из файла информации о работе системы поддержки, вызывает все вышеперечисленные конструкторы классов, обеспечивает проход по всем интервалам, собранным на всех процессорах, вычисляет некоторые временные характеристики и записывает их в соответствующие интервалы и находит максимальные, минимальные и суммарные значения характеристик.
Функции-члены:
3.4.1Конструктор
CStatRead(const char *name);
name – имя файла.
Конструктор служит для чтения из файла информации о системе поддержки и для вызова конструкторов других классов для записи информации из файла в свои структуры.
3.4.2Деструктор
~CStatRead(void);
Деструктор обеспечивает вызов деструкторов других классов и освобождает память, запрошенную под свои динамические массивы, запрошенные для хранения указателей на эти классы.
3.4.3Количество процессоров
unsigned long QProc(void);
Возвращает количество процессоров, на которых считалась задача.
3.4.4Номер процессора ввода/вывода
unsigned long IOProc(void);
Возвращает номер процессора ввода/вывода.
3.4.5Тип передачи сообщений
tmps MPSType(void);
Возвращает тип передачи сообщений.
3.4.6Обход деревьев интервалов
int BeginTreeWalk(void);
int TreeWalk(void);
Эти функции-члены служат для обхода по деревьям интервалов и возвращают количество интервалов, идентификационные значения которых совпадают.
3.4.7Результат работы конструктора
bool Valid(void);
Возвращает TRUE в том случае, когда работа конструктора завершена успешно, FALSE в противном случае.
3.4.8Сообщение об ошибке
void TextErr(char* t);
Записывает сообщение об ошибке по указателю t.
3.4.9Чтение идентифицирующей информации интервала
void ReadTitle(char* p);
p – указатель на строку символов, в которую записывается информация о заголовке, идентифицирующем интервал.
3.4.10Чтение временных характеристик по заданным процессорам
| bool ReadProc( | typeprint | t, |
| t | - тип информации о характеристиках по процессорам, |
| pnumb | - указатель на массив номеров процессоров, для которых следует вывести характеристики по процессорам, |
| qnumb | - число элементов массива номеров процессоров, |
| sum | - суммарное значение характеристики по процессорам, |
| str | - строка, в которую записывается название характеристики и значения времен. |
Эта функция-член служит для выдачи характеристик выполнения программы на каждом процессоре, возвращает TRUE, когда характеристики данного типа закончились.
3.4.11Минимальные, максимальные и суммарные значения временных характеристик
| void MinMaxSum( | typeprint | t, |
| t | - тип характеристики, |
| min | - указатель на массив минимальных значений характеристик, |
| nprocmin | - указатель на массив номеров процессоров, где достигаются минимальные значения, |
| max | - указатель на массив максимальных значений характеристик, |
| nprocmax | - указатель на массив номеров процессоров, где достигаются максимальные значения, |
| sum | - указатель на массив суммарных значений характеристик. |
Эта функция-член предназначена для подсчета минимальных, максимальных и суммарных значений характеристик, используется для выдачи сравнительных характеристик.
3.4.12Размерность матрицы решения задачи
void VMSSize(char *p);
p – указатель на строку, в которую записывается размерность матрицы, на которой считалась задача.
3.4.13Количество коллективных операций в интервале
long ReadCall(typecom t);
t – тип коллективной операции.
Возвращает количество вызовов коллективной операции данного типа.
3.5Модуль statfile.cpp функция main.
Чтение и разбор параметров, обращение к конструктору CstatRead(…) для чтения из файла накопленных времен и интервалов и вывод в файл заказанных характеристик. Характеристики, имеющие нулевые значения не печатаются.















