\subsection{DVM-система и модель параллелизма по данным}

DVM-система (Distributed Virtual Memory или Distributed Virtual Maсhine) представляет собой набор программных средств, которые позволяют пользователю производить следующие операции:

\begin{itemize}
    \item компилировать параллельные программы на языках C-DVMH (расширение языка Си) и Fortran-DVMH (расширение языка Фортран);
    \item запускать скомпилированные программы;
    \item отлаживать скомпилированные программы (на предмет производительности и корректности распараллеливания).
\end{itemize}

DVM-система ведёт работу с программами, написанными на языках C-DVMH или Fortran-DVMH, которые представляют собой расширения для языков Си 99 \cite{C99} и Фортран 95 \cite{F95} соответственно. Они позволяют распараллеливать последовательные программы при помощи добавления директив -- прагм (для языка Си) или спецкомментариев (для языка Фортран). Похожий подход используется в технологиях OpenMP, OpenACC и др.

Целевая вычислительная система модели DVMH рассматривается как совокупность узлов, каждый из которых имеет свою оперативную память. Чаще всего такие узлы состоят из процессора, к которому подключено несколько ускорителей.

При этом, DVMH-модель основана на параллелизме по данным. Это означает, что библиотека поддержки системы DVM распределяет данные (в данном случае элементы массивов) по доступным узлам вычислительной системы в соответствии с заданными пользователем директивами. После этого, по принципу собственных вычислений, согласно которому каждый узел выполняет те и только те вычисления, которые относятся к данным, расположенным в его оперативной памяти, происходит распределение вычислений.