v4 edited

This commit is contained in:
2024-05-09 21:02:45 +03:00
parent b918cad647
commit 45abce05e5
3 changed files with 2 additions and 2 deletions

BIN
main.pdf

Binary file not shown.

View File

@@ -1,4 +1,4 @@
В данной работе рассматривается решение задачи распараллеливания Фортран-программ для случая целевой системы с общей оперативной памятью. Задача решается в рамках доработки системы SAPFOR с использованием модели DVMH в качестве технологии распараллеливания. В данной работе рассматривается решение задачи автоматизированного распараллеливания Фортран-программ для случая целевой системы с общей оперативной памятью. Задача решается в рамках доработки системы SAPFOR с использованием модели DVMH в качестве технологии распараллеливания.
Во введении приводятся некоторые сведения о распараллеливании, как общепринятые, так и те, что относятся только к системам SAPFOR и DVM, приводится описание этих систем. Далее, во второй главе описывается проблема распараллеливания на общую память с точки зрения DVM-системы и с точки зрения системы SAPFOR, рассматриваются подходы к её решению. В этой главе также определяются основные цели работы, описываются основные сценарии использования разрабатываемого функционала. В третьей главе подробно описывается ход решения поставленной задачи, который был разбит на три этапа -- теоретическую подготовку, реализацию и тестирование. В четвёртой главе приведено описание существовавших и добавленных алгоритмов, о которых шла речь в предыдущей главе. В пятой главе приводятся результаты исследования эффективности получаемого распараллеливания на примере программ из пакета NAS Parallel Benchmarks. Во введении приводятся некоторые сведения о распараллеливании, как общепринятые, так и те, что относятся только к системам SAPFOR и DVM, приводится описание этих систем. Далее, во второй главе описывается проблема распараллеливания на общую память с точки зрения DVM-системы и с точки зрения системы SAPFOR, рассматриваются подходы к её решению. В этой главе также определяются основные цели работы, описываются основные сценарии использования разрабатываемого функционала. В третьей главе подробно описывается ход решения поставленной задачи, который был разбит на три этапа -- теоретическую подготовку, реализацию и тестирование. В четвёртой главе приведено описание существовавших и добавленных алгоритмов, о которых шла речь в предыдущей главе. В пятой главе приводятся результаты исследования эффективности получаемого распараллеливания на примере программ из пакета NAS Parallel Benchmarks.

View File

@@ -34,7 +34,7 @@ subroutine foo(A)
end end
\end{lstlisting} \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. Он запускается после анализа циклов и выполняет фильтрацию параллельных циклов так, чтобы в них не было пересечений по памяти используемых массивов. В случае аналогичного распараллеливания с распределением данных ошибок выполнения не возникает. Из-за этого в цепь проходов распараллеливания на общую память был добавлен новый проход, который получил название SELECT\_ARRAY\_DIM\_CONF. Он запускается после анализа циклов и выполняет фильтрацию параллельных циклов так, чтобы в них не было пересечений по памяти используемых массивов.