list dots
This commit is contained in:
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
\item \texttt{LoopGraph} -- отражает цикл. Имеет информацию о месте расположения, вложенных циклах, вызовах функций внутри цикла, операциях над массивами внутри цикла. Если цикл находится в канонической форме, дополнительно содержит название итерационной переменной, границах и шаге итерирования, глубину гнезда тесновложенных циклов. Кроме этого структура содержит набор флагов, отмечающих интересующие с точки зрения распараллеливания свойства;
|
\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}
|
\end{itemize}
|
||||||
|
|
||||||
\input{src/sections/impl/distr}
|
\input{src/sections/impl/distr}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
\item LOOP\_ANALYZER\_DATA\_DIST\_S1;
|
\item LOOP\_ANALYZER\_DATA\_DIST\_S1;
|
||||||
|
|
||||||
\item LOOP\_ANALYZER\_DATA\_DIST\_S0;
|
\item LOOP\_ANALYZER\_DATA\_DIST\_S0.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
Они заполняют структуры, описывающие циклы, анализируют обращения к массивам внутри циклов, отображают обращения к массивам на циклы. Также они создают и заполняют структуру данных, позволяющую строить распределение данных -- \textit{граф измерений массивов}. Вместе с этим происходит вызов прохода CREATE\_TEMPLATE\_LINKS, который по построенному графу создаёт схему распределения данных. До них работает ещё множество других проходов (всего порядка семидесяти), которые не относятся к распараллеливанию напрямую. Эти проходы не касаются распределения данных, поэтому они детально не рассматривались. Часть дерева зависимостей прохода вставки параллельных директив изображена на Рис. \ref{fig:distr-alg}:
|
Они заполняют структуры, описывающие циклы, анализируют обращения к массивам внутри циклов, отображают обращения к массивам на циклы. Также они создают и заполняют структуру данных, позволяющую строить распределение данных -- \textit{граф измерений массивов}. Вместе с этим происходит вызов прохода CREATE\_TEMPLATE\_LINKS, который по построенному графу создаёт схему распределения данных. До них работает ещё множество других проходов (всего порядка семидесяти), которые не относятся к распараллеливанию напрямую. Эти проходы не касаются распределения данных, поэтому они детально не рассматривались. Часть дерева зависимостей прохода вставки параллельных директив изображена на Рис. \ref{fig:distr-alg}:
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
\item c учетом свойств, найденных системой SAPFOR, алгоритм определяет циклы, витки которых могут выполняться параллельно. Для таких циклов генерируется DVMH-директива \texttt{PARALLEL};
|
\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}
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
\item время работы DVMH-версий и OpenMP-версий на различном количестве используемых потоков также отличается несущественно, с ростом количества потоков это различие уменьшается;
|
\item время работы DVMH-версий и OpenMP-версий на различном количестве используемых потоков также отличается несущественно, с ростом количества потоков это различие уменьшается;
|
||||||
|
|
||||||
\item есть примеры, на которых DVMH-версии быстрее (EP, класс C), чем версии на OpenMP и наоборот (BT и LU, класс C);
|
\item есть примеры, на которых DVMH-версии быстрее (EP, класс C), чем версии на OpenMP и наоборот (BT и LU, класс C).
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user