Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Модуль 3.docx
Скачиваний:
59
Добавлен:
05.03.2016
Размер:
197.42 Кб
Скачать

10.5.4 Конфігурація кластеру OpenMp

Конфігурація OpenMP полягає всього лише в редагуванні відповідного файла, що описує вузли кластеру. Назва файлу і його місце розташування може бути довільним. Цей файл містить просте перерахування комп'ютерів, що входять у кластер і може виглядати наступним чином:

Server

node1

node2.mydomain.com

192.168.1.33

Тобто, може використовуватися або коротке ім'я вузла, або доменне ім'я вузла, або його ip-адреса. Правило: одні вузол - один рядок.

Для перевірки працездатності OpenMPI необхідно на паралельне виконання будь-яку просту програму, наприклад hostname, яка покаже ім'я хоста, на якому вона запущена. Робиться це наступного командою:

mpirun-hostfile mpi.host-np 4 hostname

Команда mpirun має три параметри. Перший (-hostfile) вказує на файл, що містить список вузлів кластеру. Другий (-np) задає кількість процесорів (вузлів кластера), на яких ця програма буде запущена. І третій параметр - власне сама програма, яка буде запущена на паралельне виконання.

В результаті виконання цієї команди ви побачите щось на зразок цього:

[User1 @ server sbin] # mpirun-hostfile mpi.host-np 4 hostname

node1.cluster.org

node2.cluster.org

node3.cluster.org

node4.cluster.org

[User 1 @ server sbin] #

Природно, назви вузлів будуть інші, в залежності від того, як названі машини користувачів.

 

10.5.5 Компіляція і виконання

Процес компіляції та виконання паралельних програм, написаних з використанням MPI, приблизно однаковий у MPICH, LAM/MPI та OpenMPI. Обидва пакети містять у собі спеціалізовані скрипти (wrappers) полегшують виклик компіляторів. Для мови FORTRAN такий скрипт називається mpif77. Компіляція вихідного тексту програми, написаної на FORTRAN виконується наступним чином:

mpif77 myprog.f-o myprog

Тут myprog.f - вихідний текст програми, myprog - виконуваний модуль, отриманий в результаті компіляції.

Наступний етап роботи з кластером - запуск паралельних програм на виконання. В обох версіях MPI, які ми розглядаємо, запуск програми відбувається за допомогою команди mpirun:

MPICH, OpenMPI

mpirun-np 4-machinefile ~/machines/tmp/prog1/myprog

LAM/MPI

mpirun-np 4 /tmp/prog1/myprog

Параметр-np задає кількість процесорів кластеру, на яких буде запущена програма. Для MPICH використовується додатковий параметр-machinefile, який вказує на файл (~ /machines), що містить список машин кластера. Природно, тут представлено найпростіші варіанти запуску. Команда mpirun має набагато більше параметрів, що дозволяють оператору кластеру довільно формувати завдання на рахунок.

 

10.5.6 Загальна організація mpi

Якщо сформулювати коротко, MPI - це бібліотека функцій, що забезпечує взаємодію паралельних процесів за допомогою механізму передачі повідомлень. Це досить об'ємна і складна бібліотека, що складається приблизно з 130 функцій, до числа яких входять:

1)        Функції ініціалізації та закриття MPI процесів.

2)        Функції, що реалізують комунікаційні операції типу точка-точка.

3)        Функції, що реалізують колективні операції.

4)        Функції для роботи з групами процесів і комунікаторами.

5)        Функції для роботи зі структурами даних.

6)        Функції формування топології процесів.

Набір функцій бібліотеки MPI далеко виходить за рамки набору функцій, мінімально необхідних для підтримки механізму передачі повідомлень, в обчислювальних задачах малої і середньої складності. Проте складність цієї бібліотеки не повинна лякати користувачів, оскільки, в кінцевому підсумку, всі ці безліч функцій призначені для полегшення розробки ефективних паралельних програм. Врешті-решт, користувачеві належить право самому вирішувати, які кошти з наданого арсеналу використовувати, а які ні. У принципі, будь-яка паралельна програма може бути написана з використанням всього 6 MPI функцій, а досить повне і зручне середовище програмування становить набір з 24 функцій. Кожна з MPI функцій характеризується способом виконання:

1) Локальна функція - виконується всередині що викликає процес. Її завершення не вимагає комунікацій.

2) Нелокальна функція - для її завершення потрібно виконання MPI-процедури іншим процесом.

3) Глобальна функція - процедуру повинні виконувати всі процеси групи. Недотримання цієї умови може приводити до зависання завдання.

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

5) Неблокуюча функція - повернення з процедури відбувається негайно, без очікування закінчення операції і до того, як буде дозволено повторне використання параметрів, що беруть участь у запиті. Завершення неблокуючих операцій здійснюється спеціальними функціями.

У мові FORTRAN більшість MPI-процедур є підпрограми (викликаються за допомогою оператора CALL), а код помилки повертають через додатковий останній параметр процедури. Кілька процедур, оформлених у вигляді функцій, код помилки не повертають. Не потрібно суворого дотримання регістру символів в іменах підпрограм і іменованих констант. Масиви індексуються з 1. Нижче наведено відповідність наперед визначених в MPI типів стандартним типам мови FORTRAN.

Тип MPI                      Тип мови FORTRAN

MPI_INTEGER                  INTEGER

MPI_REAL                     REAL

MPI_DOUBLE_PRECISION         DOUBLE PRECISION

MPI_COMPLEX                  COMPLEX

MPI_LOGICAL                 LOGICAL

MPI_CHARACTER                    CHARACTER (1)

MPI_BYTE

MPI_PACKED

Вивчення MPI почнемо з розгляду базового набору з 6 функцій, що утворюють мінімально повний набір, достатній для написання найпростіших програм.