Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VOPROSY_Kolesnikov.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
613.39 Кб
Скачать
  1. Паралельні області та послідовні області у OpenMp програмі

Распараллеливание в OpenMP выполняется явно при помощи вставки в текст программы специальных директив, а также вызова вспомогательных функций. При использовании OpenMP предполагается SPMD-модель (Single Program Multiple Data) параллельного программирования, в рамках которой для всех параллельных нитей используется один и тот же код. Программа начинается с последовательной области – сначала работает один процесс (нить), при входе в параллельную область порождается ещё некоторое число процессов, между которыми в дальнейшем распределяются части кода. По завершении параллельной области все нити, кроме одной (нити-

мастера), завершаются, и начинается последовательная область. В программе может быть любое количество параллельных и последовательных областей. Кроме того, параллельные области могут быть также вложенными друг в друга. В отличие от полноценных процессов, порождение нитей является относительно быстрой операцией, поэтому частые порождения и завершения нитей не так сильно влияют на время выполнения программы.

  1. Структура mpi програми

Каждая программа MPI содержит директиву препроцессора:

#include ''mpi.h''

Файл mpi.h содержит определения, макроопределения и прототипы функций, необходимых для компиляции программ MPI. Прежде чем вызывать любые другие функции MPI, нужно однократно вызвать функцию MPI_Init(). Ее аргументы - это указатели на параметры функции main() - argc и argv. Они позволяют системе выполнять любую специальную настройку, чтобы использовать библиотеку MPI. После того, как программа, использующая библиотеку MPI, закончилась, необходимо вызвать MPI_Finalize(). Эта функция завершает все незавершенные действия MPI - например, бесконечное ожидание передач. Типичная программа MPI имеет следующую структуру:

#include ''mpi.h''

. . . 

main(int argc, char** argv) {

. . .

/* Функции MPI нельзя вызывать до этого момента */

MPI_Init(&argc, &argv);

. . . 

MPI_Finalize(); 

/* Функции MPI нельзя вызывать после этого момента */

. . . 

} /* main */

  1. Проблеми організації паралельних обчислень

При рассмотрении проблемы организации параллельных вычислений следует различать следующие возможные режимы выполнения независимых частей программы:

-многозадачный режим (режим разделения времени), при котором для выполнения процессов используется единственный процессор; данный режим является псевдопараллельным, когда активным (исполняемым) может быть один единственный процесс, а все остальные процессы находятся в состоянии ожидания своей очереди на использование процессора; использование режима разделения времени может повысить эффективность организации вычислений (например, если один из процессов не может выполняться из-за ожидании вводимых данных, процессор может быть задействован для готового к исполнению процесса - см. [6, 13]), кроме того, в данном режиме проявляются многие эффекты параллельных вычислений (необходимость взаимоисключения и синхронизации процессов и др.) и, как результат, этот режим может быть использован при начальной подготовке параллельных программ;

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

-распределенные вычисления; данный термин обычно используют для указания параллельной обработки данных, при которой используется несколько обрабатывающих устройств, достаточно удаленных друг от друга и в которых передача данных по линиям связи приводит к существенным временным задержкам; как результат, эффективная обработка данных при таком способе организации вычислений возможна только для параллельных алгоритмов с низкой интенсивностью потоков межпроцессорных передач данных; перечисленные условия является характерными, например, при организации вычислений в многомашинных вычислительных комплексах, образуемых объединением нескольких отдельных ЭВМ с помощью каналов связи локальных или глобальных информационных сетей.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]