Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab1_pdc_tern_final.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
636 Кб
Скачать
☆

Загальні процедури mpi

int MPI_Init( int* argc, char*** argv)

MPI_Init - ініціалізація паралельної частини програми. Реальна ініціалізація для кожного додатка виконується не більше одного разу, а якщо MPI уже був ініційований, те ніякі дії не виконуються й відбувається негайне повернення з підпрограми. Всі MPI-процедури, що залишилися, можуть бути викликані тільки після виклику MPI_Init.

Повертається: у випадку успішного виконання - MPI_SUCCESS, інакше - код помилки. (Теж саме повертають майже всі інші функції).

int MPI_Finalize( void )

MPI_Finalize - завершення паралельної частини програми. Всі наступні звертання до будь-яких MPI-процедур, у тому числі до MPI_Init, заборонені. До моменту виклику MPI_Finalize деяким процесом всі дії, що вимагають його участі в обміні повідомленнями, повинні бути завершені. Складний тип аргументів MPI_Init передбачений для того, щоб передавати всім процесам аргументи main:

int main(int argc, char** argv)

{

MPI_Init(&argc, &argv);

...

MPI_Finalize();

}

int MPI_Comm_size( MPI_Comm comm, int* size)

Визначення загального числа паралельних процесів у групі comm.

  • comm - ідентифікатор групи

  • OUT size - розмір групи

int MPI_Comm_rank( MPI_Comm comm, int* rank)

Визначення номера процесу в групі comm. Значення, що повертає за адресою &rank, лежить у діапазоні від 0 до size_of_group-1.

  • comm - ідентифікатор групи

  • OUT rank - номер викликаючого процесу в групі comm

double MPI_Wtime(void)

Функція повертає астрономічний час у секундах (речовинне число), що пройшло з деякого моменту в минулому. Гарантується, що цей момент не буде змінений за час існування процесу.

1.3 Засоби для відлагодження мрі програм, аналізу їх виконання

Бібліотека MPE (Multi-Processing Environment) містить процедури, які полегшують написання, налагодження й оцінку ефективності MPI-Програм. MPE-процедури діляться на кілька категорій.

Паралельна графіка (Parallel X graphics). Ці процедури забезпечують доступ всім процесам до поділюваного Х-дисплею. Вони створюють зручний вивід для паралельних програм, дозволяють виводити текст, прямокутники, кола, лінії й так далі.

Реєстрація (Logging). Одним з найпоширеніших засобів для аналізу характеристик паралельних програм є файл траси відзначених у часі подій – логфайл (logfile). Бібліотека MPE створює можливість легко одержати такий файл у кожному процесі й зібрати їх разом по закінченню роботи. Вона також автоматично обробляє неузгодженість і дрейф часу на множині процесорів, якщо система не забезпечує синхронізацію часу. Ця бібліотека призначена для користувача, що бажає створити свої власні події й програмні стани.

Послідовні секції (Sequential Sections). Іноді секція коду, що виконується на ряді процесів, повинна бути виконана тільки по одному разу на процесах у порядку номерів цих процесів. MPE має функції для такої роботи.

Обробка помилок (Error Handling). MPI має механізм, що дозволяє користувачеві управляти реакцією реалізації на помилки часу виконання, включаючи можливість створення свого власного оброблювача помилок.

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

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

1. Tracing Library (бібліотека трасування) – трасує всі MPI-Виклики. Кожний виклик випереджається рядком, що містить номер зухвалого процесу в MPI_COMM_WORLD і супроводжується іншим рядком, який вказує, що виклик завершився. Більшість процедур send і receive також вказують значення count, tag і імена процесів, які посилають або приймають дані.

2. Animation Libraries (анімаційна бібліотека) – проста форма програмної анімації в реальному часі, що вимагає процедур Х-Вікон.

3. Logging Libraries (бібліотека реєстрації) – самі корисні й широко використовувані профілюючі бібліотеки в MPE. Вони формують базис для генерації логфайлів з користувальницьких програм. Зараз є три різних формати логфайлів, припустимих в MPE. За замовчуванням використовується формат CLOG. Він містить сукупність подій з єдиним відмітчиком часу. Формат ALOG більше не розвивається й підтримується для забезпечення сумісності з ранніми програмами. І найбільш потужним є формат - SLOG (для Scalable Logfile), що може бути конвертований із уже наявного CLOG- файлу або отриманий прямо з виконуваної програми (для цього необхідно встановити змінну середовища MPE_LOG_FORMAT в SLOG).

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

Бібліотеки реєстрації Logging Libraries. Результати розрахунку часу дають деяке подання про ефективність програми. Але в більшості випадків потрібно докладно довідатися, яка була послідовність подій, скільки часу був витрачений на кожну стадію обчислення й скільки часу займає кожна окрема операція передачі. Щоб полегшити їхнє сприйняття, потрібно представити їх у графічній формі. Але для цього спочатку потрібно створити файли подій зі зв'язаними тимчасовими оцінками, потім досліджувати їх після закінчення програми й тільки потім інтерпретувати їх графічно на робочій станції. Здатність автоматично генерувати логфайли є важливим компонентом всіх засобів для аналізу ефективності паралельних програм.

Бібліотека для створення логфайлов відділена від бібліотеки обміну повідомленнями MPI. Перегляд логфайлов незалежний від їхнього створення, і тому можуть використовуватися різні інструментальні засоби. Бібліотека для створення логфайлов MPE розроблена таким чином, щоб співіснувати з будь-який MPI-Реалізацією й поширюється поряд з модельною версією MPI.

Щоб створити файл реєстрації, необхідно викликати процедуру MPE_Log_event. Крім того, кожний процес повинен викликати процедуру MPE_Init_log, щоб приготуватися до реєстрації, і MPE_Finish_log, щоб об'єднати файли, що зберігаються локально при кожному процесі в єдиний логфайл. MPE_Stop_log використовується, щоб призупинити реєстрацію, хоча таймер продовжує працювати.

MPE_Start_log починає реєстрацію. Програміст вибирає будь-які ненегативні цілі числа, бажані для типів подій; система не надає ніяких приватних значень типам подій. Події розглядаються як такі, що не мають тривалості. Щоб виміряти тривалість стану програми, необхідно, щоб пара подій відзначила початок і закінчення стану. Стан визначається процедурою MPE_Describe_state, що описує початок і закінчення типів подій. Процедура MPE_Describe_state також додає назву стану і його колір на графічному виводі.

Відповідна процедура MPE_Describe_event забезпечує опис події кожного типу. Використовуючи ці процедури, приведемо приклад обчислення числа ?. Для цього оснастимо програму обчислення числа π відповідними операторами. Важливо, щоб реєстрація події не створювала більших накладних витрат. MPE_Log_event зберігає невелика кількість інформації у швидкій пам'яті. Під час виконання MPE_Log_event ці буфери поєднуються паралельно й кінцевий буфер, відсортований по тимчасовим міткам, записується процесом 0.

Аналіз логфайлов. Після виконання програми MPI, що містить процедури MPE для реєстрації подій, директорій, де вона виконувалася, містить файл подій, відсортованих за часом, причому час скоректований з обліком відхилення частоти генераторів. Можна написати багато програм для аналізу цього файлу й подання інформації.

Наприклад, одна з реалізацій MPE містить коротку програму, states. Якщо ми виконуємо її з логфайлом, що описали вище, ми одержимо:

Стан: Час:

Broadcast 0.000184

Compute 4.980584

Reduce 0.000248

Sync 0.000095

Сума: 4.981111

Така підсумкова інформація є досить поширеною, але грубою формою профілювання; вона повідомляє тільки, де програма витрачає час. Значно інформативніше графічне подання, забезпечуване спеціалізованими програмами, наприклад, upshot і jampshot.

Вхідні процедури MPE використовуються, щоб створити логфайли (звіти) про події, які мали місце при виконанні паралельної програми.

Ці процедури дозволяють користувачеві включати тільки ті події, які йому цікаві в даній програмі. Базові процедури − MPE_Init_log, MPE_Log_event і MPE_Finish_log.

MPE_Init_log повинна викликатися всіма процесами, щоб ініціювати необхідні структури даних. MPE_Finish_log збирає звіти із всіх процесів, поєднує їх, вирівнює по загальній шкалі часу. Потім процес із номером 0 у комунікаторі MPI_COMM_WORLD записує звіт у файл, ім'я якого зазначено в аргументі. Одиночна подія встановлюється процедурою MPE_Log_event, що задає тип події (вибирає користувач), ціле число й рядок для даних. Щоб розмістити логфайл, що буде потрібний для аналізу або для програми візуалізації (подібної upshot), процедура MPE_Describe_state дозволяє додати події й описувані стани, указати крапку старту й закінчення для кожного стану. При бажанні для візуалізації звіту можна використовувати колір. MPE_Stop_log і MPE_Start_log призначені для того, щоб динамічно включати й виключати створення звіту.

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

Два змінні середовища TMPDIR і MPE LOG FORMAT потрібні користувачеві для установки деяких параметрів перед генерацією логфайлів.

MPE LOG FORMAT – визначає формат логфайла, отриманого після виконання додатка, пов'язаного з MPE-Бібліотекою. MPE LOG FORMAT може приймати тільки значення CLOG, SLOG і ALOG. Коли MPE LOG FORMAT установлений в NOT, передбачається формат CLOG.

TMPDIR – описує директорій, що використовується як тимчасова пам'ять для кожного процесу. За замовчуванням, коли

TMPDIR є NOT, буде використовуватися “/tmp”. Коли користувачеві потрібно одержати дуже довгий логфайл для дуже довгої MPI-Роботи, користувач повинен переконатися, що TMPDIR досить великий, щоб зберігати тимчасовий логфайл, що буде вилучено, якщо об'єднаний файл буде створений успішно.

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