- •Лекція 7. Grid-портал для доступу користувачів до ресурсів і прикладних програм Grid
- •10.1 Будова кластера
- •10.2 Організація мережі обчислювального кластеру
- •10.2.1 Мережеві карти
- •10.2.2 Комутатори
- •10.2.3 Мережеве забезпечення кластеру.
- •10.2.4 Мережева файлова система
- •10.2.5 Конфігурація сервера
- •10.2.6 Конфігурація клієнтів
- •10.2.7 Ssh, беспарольный доступ
- •10.3 Розпаралелювання програм
- •10.3.1 Варіанти декомпозиції
- •10.3.2 Тривіальна декомпозиція
- •10.3.3 Функціональна декомпозиція
- •10.3.4 Декомпозиція даних
- •10.3.5 Regular Domain Decomposition
- •10.3.6 Сітка процесів
- •10.3.7 Зміна елементів даних
- •10.3.8 Область перекриття
- •10.3.9 Граничний обмін
- •10.3.10 Деталізація
- •10.4 Паралельна віртуальна машина (pvm)
- •10.4.1 Взаємодія завдань у pvm
- •10.4.2 Управління завданнями
- •10.4.3 Передача повідомлень
- •10.4.4 Архівування даних
- •10.4.5 Установка pvm
- •10.4.6 Адміністрування pvm
- •10.5 Інтерфейс передачі повідомлень (mpi)
- •10.5.1 Встановлення системи mpi
- •10.5.2 Конфігурація кластеру mpich
- •10.5.3 Конфігурація кластеру lam/mpi
- •10.5.4 Конфігурація кластеру OpenMp
- •10.5.5 Компіляція і виконання
- •10.5.6 Загальна організація mpi
- •Лекція 8. Grid-застосування
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 функцій, що утворюють мінімально повний набір, достатній для написання найпростіших програм.