Курсовая работа: Основы распараллеливания программ, их динамический анализ

DA_Read(void * addr, long size) – чтение ячейки памяти

DA_LoopDo(), DA_LoopFor(), DA_LoopWhile(), DA_LoopDowhile() – начало соответствующего цикла.

DA_LoopIter() – начало очередной итерации цикла

DA_LoopEnd() – завершение цикла

RegArrId(long id, void * addr, long rank, long size[], long elemsize, const char * name) – регистрация нединамического массива в анализаторе.

RegArr(void * addr, long rank, long size[], long elemsize, const char * name) – регистрация динамического массива.

DA_UnregArrId(long id), DA_UnregArr(void * addr) – соответствующие функции отмены регистрации массивов.

4.2 Формат результатов

В качестве результата анализатор предоставляет дерево контекстов с дополнительной информацией, размещенной в вершинах:

список зависимостей между витками каждого с векторами расстояний, группированные по переменным, обращения к которым создали эти зависимости,

список массивов, используемых оператором, а также, если элементы массива использовались линейным образом, то параметры соответствующей арифметической прогрессии

Также в узлах накапливается профилировочная информация, которая может быть полезной при принятии решений о распараллеливании:

количество выполнений поддерева с корнем в данном узле,

общее время выполнения поддерева с корнем в данном узле,

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

Кроме того, анализатор сохраняет информацию обо всех зарегистрированных переменных. Список массивов, используемых в операторе – это лишь ссылки на элементы списка всех массивов, по которым можно получить дополнительную информацию.

Для работы с этой информацией была реализована специальная библиотека. Анализатор использует эту библиотеку для создания дерева контекстов и наполнения его информацией. Другие модули системы автоматизации распараллеливания могут использовать библиотеку для чтения сохраненных результатов анализа.

Основу библиотеки работы с результатами составляет класс ContextNode, представляющий вершину дерева контекстов. В этом классе предусмотрены методы для:

добавления непосредственных потомков,

навигации по дереву контекстов: переход к родительской вершине, к потомкам, к следующей вершине на том же уровне,

получения и изменения идентификационной информации о вершине: Sage-номер, тип вершины, номер строки исходного файла программы,

получения и изменения информации о зависимостях по данным, сохраненных в данной вершине,

получени?

К-во Просмотров: 387
Бесплатно скачать Курсовая работа: Основы распараллеливания программ, их динамический анализ