diff --git a/main.pdf b/main.pdf index c822b80..0f145de 100644 Binary files a/main.pdf and b/main.pdf differ diff --git a/src/abstract.tex b/src/abstract.tex index 8d5d0d6..3f55cda 100644 --- a/src/abstract.tex +++ b/src/abstract.tex @@ -1,4 +1,4 @@ -В данной работе рассматривается решение задачи распараллеливания Фортран-программ для случая целевой системы с общей оперативной памятью. Задача решается в рамках доработки системы SAPFOR с использованием модели DVMH в качестве технологии распараллеливания. +В данной работе рассматривается решение задачи автоматизированного распараллеливания Фортран-программ для случая целевой системы с общей оперативной памятью. Задача решается в рамках доработки системы SAPFOR с использованием модели DVMH в качестве технологии распараллеливания. Во введении приводятся некоторые сведения о распараллеливании, как общепринятые, так и те, что относятся только к системам SAPFOR и DVM, приводится описание этих систем. Далее, во второй главе описывается проблема распараллеливания на общую память с точки зрения DVM-системы и с точки зрения системы SAPFOR, рассматриваются подходы к её решению. В этой главе также определяются основные цели работы, описываются основные сценарии использования разрабатываемого функционала. В третьей главе подробно описывается ход решения поставленной задачи, который был разбит на три этапа -- теоретическую подготовку, реализацию и тестирование. В четвёртой главе приведено описание существовавших и добавленных алгоритмов, о которых шла речь в предыдущей главе. В пятой главе приводятся результаты исследования эффективности получаемого распараллеливания на примере программ из пакета NAS Parallel Benchmarks. \ No newline at end of file diff --git a/src/sections/solution/testing.tex b/src/sections/solution/testing.tex index 563591f..c36a3c6 100644 --- a/src/sections/solution/testing.tex +++ b/src/sections/solution/testing.tex @@ -34,7 +34,7 @@ subroutine foo(A) end \end{lstlisting} -В нём нём есть два параллельных цикла (строки 8 и 19). Один из них использует полный массив A (который объявлен на строке 3). Другой же использует секцию массива A, которая содержит его первые 50 элементов (объявление на строке 15). Запуск этого примера приводит к ошибке выполнения. При этом если бы в подпрограмме \texttt{foo} было объявлено, что массив имеет размер 100 (то есть фактически передавался бы массив целиком), то ошибки бы не было. +В нём есть два параллельных цикла (строки 8 и 19). Один из них использует полный массив A (который объявлен на строке 3). Другой же использует секцию массива A, которая содержит его первые 50 элементов (объявление на строке 15). Запуск этого примера приводит к ошибке выполнения. При этом если бы в подпрограмме \texttt{foo} было объявлено, что массив имеет размер 100 (то есть фактически передавался бы массив целиком), то ошибки бы не было. В случае аналогичного распараллеливания с распределением данных ошибок выполнения не возникает. Из-за этого в цепь проходов распараллеливания на общую память был добавлен новый проход, который получил название SELECT\_ARRAY\_DIM\_CONF. Он запускается после анализа циклов и выполняет фильтрацию параллельных циклов так, чтобы в них не было пересечений по памяти используемых массивов.