Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРО(теорія).doc
Скачиваний:
3
Добавлен:
20.09.2019
Размер:
461.31 Кб
Скачать

2. Керування комунікаторами.

Доступ к коммуникаторам . Все следующие операции являются локальными.

Синтаксис функции MPI_COMM_SIZE представлен ниже

MPI_COMM_SIZE(comm, size)

IN comm коммуникатор (дескриптор)

OUT size количество процессов в группе comm (целое)

Объяснение: Функция MPI_COMM_SIZE эквивалентна: функции MPI_COMM_GROUP по доступу к группе коммуникатора; функции MPI_GROUP_SIZE по вычислению размера; функции

MPI_GROUP_FREE по удалению временной группы. Совокупность этих операций используется так часто, что понадобилось сокращение в виде функции MPI_COMM_SIZE.[]

Функция MPI_COMM_SIZE указывает число процессов в коммуникаторе. Для MPI_COMM_WORLD она указывает общее количество доступных процессов.

Запрос MPI_COMM_RANK указывает номер вызывающего процесса, который располагается в диапазоне от 0 до size-1, где size - возвращаемое значение MPI_COMM_SIZE.[]

MPI_COMM_RANK(comm, rank)

IN comm коммуникатор (дескриптор)

OUT rank номер вызывающего процесса в группе comm (целое)

Объяснение: Эта функция эквивалентна: по доступу к группе коммуникатора - функции MPI_COMM_GROUP; по вычислению номера - функции MPI_GROUP_RANK; по удалению временной группы - MPI_GROUP_FREE. Совокупность этих операций используется так часто, что оказалось полезным ввести функцию MPI_COMM_RANK.[]

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

катора.[]

Екзаменаційний білет №28

1.Кс класу simd.

SIMD (англ. single instruction, multiple data — одиночный поток команд, множественный поток данных, ОКМД) — принцип компьютерных вычислений, позволяющий обеспечить параллелизм на уровне данных.

SIMD-компьютеры состоят из одного командного процессора (управляющего модуля), называемого контроллером, и нескольких модулей обработки данных, называемых процессорными элементами. Управляющий модуль принимает, анализирует и выполняет команды. Если в команде встречаются данные, контроллер рассылает на все процессорные элементы команду, и эта команда выполняется на нескольких или на всех процессорных элементах. Каждый процессорный элемент имеет свою собственную память для хранения данных. Одним из преимуществ данной архитектуры считается то, что в этом случае более эффективно реализована логика вычислений. До половины логических инструкций обычного процессора связано с управлением выполнением машинных команд, а остальная их часть относится к работе с внутренней памятью процессора и выполнению арифметических операций. В SIMD компьютере управление выполняется контроллером, а «арифметика» отдана процессорным элементам.

SIMD-процессоры называются также векторными.

2. Декартові топології (решітка).

У MPI підтримуються два види топологій - прямокутні решітки довільної розмірності (декартова топологія) і топологія графа будь-якого довільного вигляду.

Декартові решітки можна розділяти на гіперплошщини, виділяючи деякі виміри. Дані можна зсувати вздовж вибраного виміру декартової решітки. Зсувом називають пересилку даних між процесами уздовж певного виміру. Уздовж вибраного виміру можуть бути організовані колективні обміни.

Декартові топології

Для того щоб створити структуру декартової решітки з комунікатором MPI_COMM_WORLD, необхідно задати наступні параметри:

розмірність решітки ; розмір решітки уздовж кожного виміру ; періодичність уздовж кожного виміру ;

MPI дає можливість системі оптимізувати відображення віртуальної топології процесів на фізичну за допомогою зміни порядку нумерації процесів в групі.

Функція MPI_Cart_create створює новий комунікатор, який представляє топологііію решітки. Це є колективною функція, вона повинна викликатись з усіх процесів комунікатора. Формат вункції:

int MPI_Cart_create(MPI_Comm oldcomm, int ndims, int *dims, int *periods, int reorder, MPI_Comm *cartcomm),

де - oldcomm - початковий комунікатор ; - ndims - розмірність декартової решітки; - dims - масив довжини ndims, задає кількість процесів в кожному вимірі решітки ;- periods - масив довжини ndims, визначає, чи є решітка періодичною уздовж відповідного виміру. ; - reorder - параметр допустимості зміни нумерації процесів; - cartcomm – створюваний комунікатор з декартовою топологією.

Для визначення декартових координат процесу по його номеру можна скористатися функцією:

int MPI_Card_coords(MPI_Comm comm, int rank, int ndims, int *coords)

Зворотна дія – визначення номеру процесу по його декартових координатах – забезпечується за допомогою функції:

int MPI_Cart_rank(MPI_Comm comm, int *coords, int *rank)

Функція MPI_Cart_shift забезпечує отримання номерів процесів, з якими поточний процес (процес, що викликав функцію MPI_Cart_shift) повинен виконати обмін даними:

int MPI_Cart_shift(MPI_Comm comm, int dir, int disp, int *source, int *dst),

- comm – комунікатор з топологією решітки,; - dir - номер виміру, по якому виконується зсув. ; - disp - величина зсуву (<0 – зсув до початку виміру) ; - source – номер процесу, від якого повинні бути отримані дані ; - dst - номер процесу якому повинні бути відправлені дані.

Слід зазначити, що функція MPI_Cart_shift тільки визначає номери процесів, між якими повинен бути виконаний обмін даними в ході операції зсуву. Безпосередня передачами даних може бути виконана, наприклад, за допомогою функції MPI_Sendrecv.