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

12

Тема: Мови паралельного програмування

Питання:

Загальні зауваження

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

Особливості організації паралельної програми

4. Технології паралельного програмування Message Passing Interface (MPI)

5. Операції обміну повідомленнями

Загальні зауваження

Є різні підходи до організації паралельного програмування. Одні широко використовуються на практиці, інші хороші своєю ідеєю, треті локанічні, тощо. Необхідно звернути увагу на то, що процес розробки паралельної програми відрізняються від процесу розробки послідовної програми. Тут необхідно попередньо проаналізувати і виявити ті фрагменти програми, які займають найбільше процесорного часу. Саме розпаралелення цих фрагментів дозволяє підвищити швидкість виконання програми. Розпаралелення зв’язане з виявленням підзадач, розв’язання яких можна доручити різним процесорам. Вимагається організація взаємодії між такими підзадачами, що можна зробити шляхом обміну повідомленнями-посилками (містять вхідні дані, проміжні і кінцеві результати роботи). Спеціальні прийоми вимагаються і при відлагодженні паралельної програми.

На ефективність розробки програм впливає і наявність відповідного програмного інструментарію. Розробнику паралельних програм необхідні засоби аналізу і виявлення паралелізму, транслятори, операційні системи (ОС), які забезпечують надійну роботу багатопроцесорних конфігурацій. Необхідні також засоби відлагодження і профілювання (побудова каркасу програми, прив’язаного до часових параметрів, що дозволяє оцінити продуктивність програми та окремих її частин). Середовищем виконання паралельних програм є ОС, які підтримують мультипроцесування, багатозадачність і багатопотоковість, наприклад, UNIX чи Microsoft Windows NT.

При розпаралеленні, яке ведеться на рівні алгоритмів необхідно: виміряти часові параметри, визначити необхідну кількість пересилань та необхідні об’єми пам’яті. Засоби відлагодження повинні забезпечити можливість безтупикової перевірки програм.

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

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

Таблиця 8.1. – Паралельні мови і системи програмування

Для систем з спільною пам’яттю Для систем з розподіленою пам’яттю Паралельні об’єктно-орієнтовані Паралельні декларативні
a b C d
ОpenMP PVM HPC++ Parlog
Linda MPI MPL Multilisp
Orca HPF CA Sisal
Java Cilk Distributed Java Concurrent Prolog
Pthreads C Charm++ GHC
Opus ZPL Concurrent Aggregates Strand
SDL Occam Argus Tempo
Ease Concurrent C Presto
SHMEM Ada Nexus
FORTRAN M uC++
CSP sC++
NESL pC++

Деякі мови параллельного програмування машинно-залежні і створені для конкретних систем. Використовуються і універсальні мови програмування високого рівня, такі як сучасні версії мови FORTRAN і мова С.



FORTRAN D – розширення мови FORTRAN 77/90, за допомогою якої можна визначити машинно-незалежним чином як треба розподілити дані між процесорами. Мова дозволяє використовувати спільний простір імен. Транслятори можуть генерувати код як для SIMD, так і для MIMD-машин. FORTRAN D є попередником мови High Perfomance FORTRAN (HPF).

В мовах попереджуючих обчислень паралелізм реалізований за допомогою паралельного виконання обчислень ще до того, як їх результат потрібний для продовження виконання програми. Прикладами таких мов є: MultiLisp – паралельна версія мови Lisp, QLisp, Mul-T.

Мови програмування в моделі паралелізму даних: С, APL, UC, HPL. PARLOG є паралельною версією мови Prolog. Erland – паралельна мова для застосувань в режимі реального часу. Maisie - мова, яка базується на С. Scheme – один з діалектів Lisp. Cilk – алгоритмічна багатопотокова мова.

Середовища розробки паралельних програм: aCe – середовище розробки і виконання програм в рамках моделі паралельних даних. ADAPTOR – система основана на мові HPF. Arjuna – об’єктно-орієнтована система програмування розподілених додатків. CODE – візуальна система паралельного програмування.

При розробці паралельних програм в рамках моделі паралелізму задач найчастіше використовуються спеціалізовані бібліотеки і системи паралельного програмування PVM і MPI. PVM існує для різних платформ, є реалізації для мов Java і Python, і включає різні засоби створення паралельних програм.

MPI – специфікація, перший варіант якої був розроблений комітетом MPIF (Message Passing Interface Forum) в 1994 р., яка описує основні особливості і синтаксис прикладного програмного інтерфейсу паралельних програм. Хоча MPI не властиві певні хороші властивості PVM, але ця специфікація базується на погоджених стандартах і найчастіше використовується для створення паралельних програм. Вона використовується з мовами C, C++, FORTRAN. Є кілька , вільно розповсюджуваних, реалізацій MPI для різних платформ: MPICH, LAM, CHIMP, NT-MPICH, WMPI, MacMPI [8].


6366397239287965.html
6366425678881983.html
    PR.RU™