diff --git a/main.pdf b/main.pdf index 0f49efa..d15a1e9 100644 Binary files a/main.pdf and b/main.pdf differ diff --git a/src/sections/impl/impl.tex b/src/sections/impl/impl.tex index 381fca5..5c8f1b8 100644 --- a/src/sections/impl/impl.tex +++ b/src/sections/impl/impl.tex @@ -13,7 +13,7 @@ \item \texttt{LoopGraph} -- отражает цикл. Имеет информацию о месте расположения, вложенных циклах, вызовах функций внутри цикла, операциях над массивами внутри цикла. Если цикл находится в канонической форме, дополнительно содержит название итерационной переменной, границах и шаге итерирования, глубину гнезда тесновложенных циклов. Кроме этого структура содержит набор флагов, отмечающих интересующие с точки зрения распараллеливания свойства; - \item \texttt{ParallelDirective} -- структура, отражающая созданную директиву распараллеливания. Содержит информацию о размере распараллеливаемого гнезда, о клаузах \texttt{SHADOW\_RENEW}, \texttt{ACROSS}, \texttt{REMOTE\_ACCESS}, \texttt{REDUCTION}, \texttt{PRIVATE} и используемых в них массивах; + \item \texttt{ParallelDirective} -- структура, отражающая созданную директиву распараллеливания. Содержит информацию о размере распараллеливаемого гнезда, о клаузах \texttt{SHADOW\_RENEW}, \texttt{ACROSS}, \texttt{REMOTE\_ACCESS}, \texttt{REDUCTION}, \texttt{PRIVATE} и используемых в них массивах. \end{itemize} \input{src/sections/impl/distr} diff --git a/src/sections/solution/prep.tex b/src/sections/solution/prep.tex index 6a88996..87517cf 100644 --- a/src/sections/solution/prep.tex +++ b/src/sections/solution/prep.tex @@ -29,7 +29,7 @@ \item LOOP\_ANALYZER\_DATA\_DIST\_S1; - \item LOOP\_ANALYZER\_DATA\_DIST\_S0; + \item LOOP\_ANALYZER\_DATA\_DIST\_S0. \end{itemize} Они заполняют структуры, описывающие циклы, анализируют обращения к массивам внутри циклов, отображают обращения к массивам на циклы. Также они создают и заполняют структуру данных, позволяющую строить распределение данных -- \textit{граф измерений массивов}. Вместе с этим происходит вызов прохода CREATE\_TEMPLATE\_LINKS, который по построенному графу создаёт схему распределения данных. До них работает ещё множество других проходов (всего порядка семидесяти), которые не относятся к распараллеливанию напрямую. Эти проходы не касаются распределения данных, поэтому они детально не рассматривались. Часть дерева зависимостей прохода вставки параллельных директив изображена на Рис. \ref{fig:distr-alg}: diff --git a/src/sections/solution/solution.tex b/src/sections/solution/solution.tex index 5f9886e..3d8a2f0 100644 --- a/src/sections/solution/solution.tex +++ b/src/sections/solution/solution.tex @@ -7,7 +7,7 @@ \item c учетом свойств, найденных системой SAPFOR, алгоритм определяет циклы, витки которых могут выполняться параллельно. Для таких циклов генерируется DVMH-директива \texttt{PARALLEL}; - \item среди циклов программы, отмеченных директивой \texttt{PARALLEL}, алгоритм определяет те, которые могут выполняться на ускорителях. Генерируются директивы \texttt{REGION} и \texttt{END\_REGION}, клаузы \texttt{TIE}. Определяются входные и выходные переменные, которые должны быть скопированы на ускорители. В программу добавляются директивы \texttt{ACTUAL} и \texttt{GET\_ACTUAL}, которые обеспечивают необходимые копирования данных в процессе выполнения программы на центральном процессоре или ускорителе; + \item среди циклов программы, отмеченных директивой \texttt{PARALLEL}, алгоритм определяет те, которые могут выполняться на ускорителях. Генерируются директивы \texttt{REGION} и \texttt{END\_REGION}, клаузы \texttt{TIE}. Определяются входные и выходные переменные, которые должны быть скопированы на ускорители. В программу добавляются директивы \texttt{ACTUAL} и \texttt{GET\_ACTUAL}, которые обеспечивают необходимые копирования данных в процессе выполнения программы на центральном процессоре или ускорителе. \end{itemize} diff --git a/src/sections/tests/results.tex b/src/sections/tests/results.tex index 2c3eaba..626bd33 100644 --- a/src/sections/tests/results.tex +++ b/src/sections/tests/results.tex @@ -30,7 +30,7 @@ \item время работы DVMH-версий и OpenMP-версий на различном количестве используемых потоков также отличается несущественно, с ростом количества потоков это различие уменьшается; - \item есть примеры, на которых DVMH-версии быстрее (EP, класс C), чем версии на OpenMP и наоборот (BT и LU, класс C); + \item есть примеры, на которых DVMH-версии быстрее (EP, класс C), чем версии на OpenMP и наоборот (BT и LU, класс C). \end{itemize}