Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PRO_teoriya_26-30.doc
Скачиваний:
1
Добавлен:
21.09.2019
Размер:
119.3 Кб
Скачать

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

  1. Системи зі змінним часом звертання до пам’яті.

Системи із змінним часом звернення до пам’яті (NUMA - non uniform memory access).

  • UMA-системи (uniform memory access). Мультипроцесорні системи, у яких всі процесори мають доступ до всього адресного простору головної пам’яті і можуть виконувати як операції читання, так і запису. Час звернення якого-небудь процесора до любої комірки пам’яті один і той же.

  • NUMA-системи. Мультипроцесорні системи, у яких всі процесори мають доступ до всього адресного простору головної пам’яті і можуть виконувати як операції читання, так і запису. Час звернення процесора до комірки пам’яті залежить від того, в якому адресному просторі він знаходиться. Для різних процесорів „швидких” і „повільних” підпростори головної пам’яті можуть відрізнятись.

  • CC-NUMA-системи (cache-coherent NUMA). NUMA-системи в якій забезпечується підтримка інформаційної цілісності даних в кешах всіх процесорів.

NUMA-системи без підтримки інформаційної цілісності даних в кешах досить схожі на кластери. В останній час більше уваги до себе притягують комерційні CC-NUMA-системи, які багато в чому відрізняються як від кластерів, так і від SMP-систем.

2.Керування групами процесів.

Процеси паралельної програми об'єднуються в групи. До групи можуть входити всі процеси паралельної програми, з іншого боку, в групі може перебувати тільки частина наявних процесів. Один і той же процес може належати кільком групам.

Управління групами

Групи процесів можуть бути створені тільки з вже існуючих груп. В якості вихідної групи може бути використана група, пов'язана з визначеним комунікатором MPI_COMM_WORLD. Також іноді може бути корисним комунікатор MPI_COMM_SELF, визначений для кожного процесу паралельної програми та містить тільки цейпроцес.

Для отримання групи, пов'язаної з існуючим комунікатором, застосовується функція:

int MPI_Comm_group (MPI_Comm comm, MPI_Group * group),

де

  • comm - комунікатор;

  • group - група, пов'язана з комунікатором.

Далі, на основі існуючих груп, можуть бути створені нові групи:

  • створення нової групи newgroup з існуючої групи oldgroup, яка буде включати в себе n процесів - їх ранги перераховуються в масиві ranks:

int MPI_Group_incl (MPI_Group oldgroup, int n, int * ranks,

MPI_Group * newgroup),

де

  • oldgroup - існуюча група;

  • n - число елементів в масиві ranks;

  • ranks - масив рангів процесів, які будуть включені в нову групу;

  • newgroup - створена група;

  • створення нової групи newgroup з групи oldgroup, яка буде включати в себе n процесів, чиї ранги не збігаються з рангами, перерахованими в масиві ranks:

int MPI_Group_excl (MPI_Group oldgroup, int n, int * ranks,

MPI_Group * newgroup),

де

  • oldgroup - існуюча група;

  • n - число елементів в масиві ranks;

  • ranks - масив рангів процесів, які будуть виключені з нової групи;

  • newgroup - створена група.

Для отримання нових груп над наявними групами процесів можуть бути виконані операції об'єднання, перетину і різниці:

  • створення нової групи newgroup як об'єднання груп group1 і group2:

int MPI_Group_union (MPI_Group group1, MPI_Group group2,

MPI_Group * newgroup),

де

  • group1 - перша група;

  • group2 - друга група;

  • newgroup - об'єднання груп;

  • створення нової групи newgroup як перетину груп group1 і group2:

int MPI_Group_intersection (MPI_Group group1, MPI_Group group2,

MPI_Group * newgroup),

де

  • group1 - перша група;

  • group2 - друга група;

  • newgroup - перетин груп;

  • створення нової групи newgroup як різниці груп group1 і group2:

int MPI_Group_difference (MPI_Group group1, MPI_Group group2,

MPI_Group * newgroup),

де

  • group1 - перша група;

  • group2 - друга група;

  • newgroup - різниця груп;

При конструюванні груп може виявитися корисною спеціальна порожня група MPI_COMM_EMPTY.

Ряд функцій MPI забезпечує отримання інформації про групу процесів:

  • отримання кількості процесів в групі:

int MPI_Group_size (MPI_Group group, int * size),

де

  • group - група;

  • size - число процесів в групі;

  • отримання рангу поточного процесу в групі:

int MPI_Group_rank (MPI_Group group, int * rank),

де

  • group - група;

  • rank - ранг процесу в групі.

Після завершення використання група повинна бути вилучена:

int MPI_Group_free (MPI_Group * group),

де

  • group - група, що підлягає видаленню

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