Курсовая работа: Основы распараллеливания программ, их динамический анализ
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-номер, тип вершины, номер строки исходного файла программы,
получения и изменения информации о зависимостях по данным, сохраненных в данной вершине,
получени?