Ця стаття містить текст, що не відповідає . |
Процес розробки паралельної[] програми відрізняється від процесу розробки послідовної програми. Необхідно попередньо проаналізувати і виявити ті фрагменти програми, які займають найбільше процесорного часу — саме їх розпаралелення дозволяє підвищити швидкість виконання програми.[] Розпаралелення зв'язане з виявленням підзадач, розв'язання яких можна доручити різним процесорам. Вимагається організація взаємодії між такими підзадачами, що можна зробити шляхом обміну повідомленнями-посилками[] (містять вхідні дані, проміжні і кінцеві результати роботи). Спеціальні прийоми вимагаються і при відлагодженні паралельної програми.
На ефективність розробки програм впливає і наявність відповідного програмного інструментарію. Розробнику паралельних програм необхідні засоби аналізу і виявлення паралелізму, транслятори, операційні системи (ОС), які забезпечують надійну роботу багатопроцесорних конфігурацій. Необхідні також засоби відлагодження і профілювання (побудова каркаса програми, прив'язаного до часових параметрів, що дозволяє оцінити продуктивність програми та окремих її частин). Середовищем виконання паралельних програм є ОС, які підтримують мультипроцесування, багатозадачність і багатопотоковість.
При розпаралеленні, яке ведеться на рівні алгоритмів необхідно виміряти часові параметри, визначити необхідну кількість пересилань та необхідні об'єми пам'яті.[] Засоби відлагодження повинні забезпечити можливість безтупикової перевірки програм.
Класифікація мов і систем паралельного програмування
Вибір технології паралельного програмування є складним завданням. Мов і систем розробки паралельних програм є[] понад 100 і їх кількість невпинно зростає. Відповідно до цього є різні підходи до їх узагальнення і класифікації.
Паралельні мови та системи програмування можна розкласифікувати за такими видами:
- Для систем зі спільною пам'яттю: OpenMP, Linda, Orca, Java, Pthreads, Opus, SDL, Ease, SHMEM, CSP, NESL.
- Для систем з розподіленою пам'яттю: PVM, MPI, HPF, Cilk, C, ZPL, Occam, Concurrent C, Ada, FORTRAN M, sC++, pC++.
- Паралельні об'єктно-орієнтовані: HPC++, MPL, CA, Distributed Java, Charm++, Concurrent Aggregates, Argus, Presto, Nexus, uC++.
- Паралельні декларативні: Parlog, Multilisp, Sisal, Concurrent Prolog, GHC, Strand, Tempo.
Деякі мови паралельного програмування машинно-залежні і створені для конкретних систем. Використовуються і універсальні мови програмування високого рівня, такі як сучасні версії мови FORTRAN і мова С.
FORTRAN D — розширення мови FORTRAN 77/90, за допомогою якої можна визначити машинно-незалежним чином як треба розподілити дані між процесорами. Мова дозволяє використовувати спільний простір імен. Транслятори можуть генерувати код як для SIMD, так і для MIMD-машин. FORTRAN D є попередником мови High Perfomance FORTRAN (HPF).
В мовах випереджувальних обчислень паралелізм реалізовано за допомогою паралельного виконання обчислень ще до того, як їх результат потрібний для продовження виконання програми. Прикладами таких мов є: MultiLisp — паралельна версія мови Lisp, QLisp, Mul-T.
Мови програмування в моделі паралелізму даних: С, APL, UC, HPL. PARLOG є паралельною версією мови Prolog. Erlang — паралельна мова для застосувань в режимі реального часу. Elixir — паралельна мова для застосувань в режимі реального часу, побудована на Erlang VM. Maisie — мова, яка базується на С. Scheme — один з діалектів Lisp. Cilk — алгоритмічна багатопотокова мова.
Середовища розробки паралельних програм: aCe — середовище розробки і виконання програм в рамках моделі паралельних даних. ADAPTOR — система основана на мові HPF. Arjuna — об'єктно-орієнтована система програмування розподілених додатків. CODE — візуальна система паралельного програмування.
При розробці паралельних програм в рамках моделі паралелізму задач найчастіше використовуються спеціалізовані бібліотеки і системи паралельного програмування PVM і MPI. PVM існує для різних платформ, є реалізації для мов Java і Python, і включає різні засоби створення паралельних програм.
Особливості організації паралельної програми
Технологія OpenMP
Стандарт OpenMP розроблений для мов FORTRAN (77, 90,95), C, C++ і підтримується практично всіма виробниками великих обчислювальних систем. Реалізація стандарту доступна як на UNIX-платформах, так і в середовищі Windows NT.
В стандарті за основу береться послідовна програма, а для створення її паралельної версії користувачу надається набір директив, процедур і навколишніх змінних.
Текст програми розбивається на послідовні і паралельні області (див. рис.). В початковий момент часу породжується нитка-майстер (основна нитка), яка починає виконувати програму з стартової точки. Основна нитка, і тільки вона, виконує всі послідовні області програми. Для підтримки паралелізму використовується схема FORK/JOIN. При вході в паралельну нитку-майстер створюються додаткові нитки (виконується операція FORK). Після створення кожна нитка отримує свій унікальний номер, причому нитка-майстер завжди має номер 0. Всі створені нитки використовують однаковий код, який відповідає паралельній області. При виході з паралельної області основна нитка дочікується завершення решту ниток, і подальше виконання програми продовжує тільки вона.
В паралельній області всі змінні програми діляться на два класи: загальні (SHARED) і локальні (PRIVATE). Загальні змінні завжди існують тільки в одному екземплярі для всієї програми і доступні всім ниткам під однаковим іменем. Оголошення локальних змінних викликає створення свого екземпляра кожної змінної для кожної нитки.
Система програмування DVM
Система об'єднує моделі паралелізму за даними та керуванням, і складається з 5-ти основних компонентів: компілятори з мов FORTRAN — DVM i C — DVM, системи підтримки виконання паралельних програм, відлагоджувача паралельних програм, аналізатора продуктивності, передбачувача продуктивності.
Відображення віртуальних процесорів на фізичні здійснюється засобами операційної системи.
Для розподілення масивів використовується директива DISTRIBUTE (має описовий статус).
Для організації погодженого відображення деяких масивів використовується механізм вирівнювання одного масиву відносно іншого за допомогою директиви ALING.
Директива паралельного виконання циклів PARALLEL вбудована в мову Fortran у виді спецкоментара.
Директива MAP вбудована в мову Fortran і специфікує то, що n-а задача деякого вектора Т буде виконуватися секцією віртуальних процесорів Р(i1:i2, …,j1:j2). Всі відображені на цю задачу масиви (директива DISTRIBUTE) і обчислення (директива PARALLEL) будуть автоматично відображені на цю ж секцію віртуальних процесорів.
В DVM передбачені дві форми відображення блоків програми на задачі. Статична форма є безпосереднім аналогом паралельних секцій в інших мовах, зокрема, директиви SECTIONS в мові OpenMP. В динамічній формі ітерація циклу відображається на задачу.
Спільними даними в DVM є дані, що обчислюються на одних процесорах, а використовуються іншими.
DVM-програма може виконуватися на довільній кількості процесорів, починаючи з одного. Це є наслідком того, що директиви паралелізму в DVMне залежать ні від кількості процесорів, ні від конкретних номерів процесорів. Єдиним винятком є рівень задач. За вимогою директиви MAP користувач повинен явно описати масив віртуальних процесорів. При цьому кількість процесорів, що описані в програмі не повинен перевищити кількості процесорів, що задаються при запуску програми.
Технології паралельного програмування Message Passing Interface (MPI)
MPI - бібліотека функцій, яка забезпечує взаємодію паралельних процесів за допомогою механізму передачі повідомлень і не має ніяких засобів для розподілення процесів по обчислювальних вузлах і для запуску їх на виконання. МРІ не містить механізмів динамічного створення і знищення процесів під час виконання програми.
Для ідентифікації наборів процесів вводиться поняття групи і комунікатора.
Процеси об'єднуються в групи, можуть бути вкладені групи. Усередині групи всі процеси понумеровані. З кожною групою асоційований свій комунікатор. Тому при здійсненні пересилок необхідно вказати ідентифікатор групи, усередині якої проводиться це пересилка.
Процедури MPI:
- Ініціалізація та закриття MPI-процесів;
- реалізація комутаційних операцій типу «точка-точка»;
- реалізація колективних операцій;
- для роботи з групами процесів і комунікаторами;
- для роботи з структурами даних;
- формування топології процесів.
До базових функцій MPI належать
- ініціалізація MPI;
- завершення MPI;
- визначення кількості процесів в області зв'язку;
- визначення номера процесу, який виконується;
- передача повідомлень;
- приймання повідомлень;
- функції відліку часу.
Кожна MPI — функція характеризується способом виконання:
- Локальна функція — виконується всередині процесу, що її викликав. Її завершення не вимагає комунікації.
- Нелокальна функція — для її завершення необхідно виконати MPI — процедуру іншим процесом.
- Глобальна функція — процедуру повинні виконати всі процеси групи. Невиконання цієї умови може призвести до «зависання» задачі.
- Блокуюча функція — повернення керування з процедури гарантує можливість повторного використання параметрів, які брали участь у виклику. Ніяких змін в стан процесу, що викликав блокуючий запит до виходу з процедури не може відбуватися.
- Неблокуюча функція — повернення з процедури відбувається негайно, без очікування завершення операції. Завершення неблокуючих операцій здійснюється спеціальними функціями.
Примітки
- . www.cs.usfca.edu. Архів оригіналу за 2 грудня 2016. Процитовано 30 листопада 2016.
- . Архів оригіналу за 30 листопада 2016. Процитовано 30 листопада 2016.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title ()
Література
- Воеводин В. В., Воеводин Вл. В. Параллельные вычисления. — СПб: БХВ-Петербург, 2002.
- Ортега Дж. Введение в параллельные и векторные методы решения линейных систем. М.:Мир, 1991.
- Программирование на параллельных вычислительных системах: Пер с англ./Под ред. Р.Бэбба. М.:Мир, 1991.
- Бройнль Т. Паралельне програмування: Початковий курс: Навчальний посібник. — К.:Вища школа.,1997.
- Воеводин В. В. Математические основы параллельных вычислений.- М.: Изд-во МГУ, 1991.
- Векторизация программ: теория, методы, реализация: Пер. с англ. и нем. /Под ред. Г. Д. Чинина. — М:. Мир, 1991.
- Корнеев В. В. Параллельные вычислительные системы. М.: Нолидж, 1999
- С. Немнюгин, О.Стесик Параллельное программирование для многопроцессорных вычислительных систем. — СПб: БХВ-Петербург, 2002.
- Питерсон Дж. Теория сетей Петри і моделирования систем: Пер. с англ. -М.: Мир, 1984. -264 с., ил.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya mistit tekst sho ne vidpovidaye enciklopedichnomu stilyu Bud laska dopomozhit udoskonaliti cyu stattyu pogodivshi stil vikladu zi stilistichnimi pravilami Vikipediyi Mozhlivo mistit zauvazhennya shodo potribnih zmin Proces rozrobki paralelnoyi utochniti programi vidriznyayetsya vid procesu rozrobki poslidovnoyi programi Neobhidno poperedno proanalizuvati i viyaviti ti fragmenti programi yaki zajmayut najbilshe procesornogo chasu same yih rozparalelennya dozvolyaye pidvishiti shvidkist vikonannya programi dzherelo Rozparalelennya zv yazane z viyavlennyam pidzadach rozv yazannya yakih mozhna doruchiti riznim procesoram Vimagayetsya organizaciya vzayemodiyi mizh takimi pidzadachami sho mozhna zrobiti shlyahom obminu povidomlennyami posilkami dzherelo mistyat vhidni dani promizhni i kincevi rezultati roboti Specialni prijomi vimagayutsya i pri vidlagodzhenni paralelnoyi programi Na efektivnist rozrobki program vplivaye i nayavnist vidpovidnogo programnogo instrumentariyu Rozrobniku paralelnih program neobhidni zasobi analizu i viyavlennya paralelizmu translyatori operacijni sistemi OS yaki zabezpechuyut nadijnu robotu bagatoprocesornih konfiguracij Neobhidni takozh zasobi vidlagodzhennya i profilyuvannya pobudova karkasa programi priv yazanogo do chasovih parametriv sho dozvolyaye ociniti produktivnist programi ta okremih yiyi chastin Seredovishem vikonannya paralelnih program ye OS yaki pidtrimuyut multiprocesuvannya bagatozadachnist i bagatopotokovist Pri rozparalelenni yake vedetsya na rivni algoritmiv neobhidno vimiryati chasovi parametri viznachiti neobhidnu kilkist peresilan ta neobhidni ob yemi pam yati dzherelo Zasobi vidlagodzhennya povinni zabezpechiti mozhlivist beztupikovoyi perevirki program Klasifikaciya mov i sistem paralelnogo programuvannyaVibir tehnologiyi paralelnogo programuvannya ye skladnim zavdannyam Mov i sistem rozrobki paralelnih program ye koli ponad 100 i yih kilkist nevpinno zrostaye Vidpovidno do cogo ye rizni pidhodi do yih uzagalnennya i klasifikaciyi Paralelni movi ta sistemi programuvannya mozhna rozklasifikuvati za takimi vidami Dlya sistem zi spilnoyu pam yattyu OpenMP Linda Orca Java Pthreads Opus SDL Ease SHMEM CSP NESL Dlya sistem z rozpodilenoyu pam yattyu PVM MPI HPF Cilk C ZPL Occam Concurrent C Ada FORTRAN M sC pC Paralelni ob yektno oriyentovani HPC MPL CA Distributed Java Charm Concurrent Aggregates Argus Presto Nexus uC Paralelni deklarativni Parlog Multilisp Sisal Concurrent Prolog GHC Strand Tempo Deyaki movi paralelnogo programuvannya mashinno zalezhni i stvoreni dlya konkretnih sistem Vikoristovuyutsya i universalni movi programuvannya visokogo rivnya taki yak suchasni versiyi movi FORTRAN i mova S FORTRAN D rozshirennya movi FORTRAN 77 90 za dopomogoyu yakoyi mozhna viznachiti mashinno nezalezhnim chinom yak treba rozpodiliti dani mizh procesorami Mova dozvolyaye vikoristovuvati spilnij prostir imen Translyatori mozhut generuvati kod yak dlya SIMD tak i dlya MIMD mashin FORTRAN D ye poperednikom movi High Perfomance FORTRAN HPF V movah viperedzhuvalnih obchislen paralelizm realizovano za dopomogoyu paralelnogo vikonannya obchislen she do togo yak yih rezultat potribnij dlya prodovzhennya vikonannya programi Prikladami takih mov ye MultiLisp paralelna versiya movi Lisp QLisp Mul T Movi programuvannya v modeli paralelizmu danih S APL UC HPL PARLOG ye paralelnoyu versiyeyu movi Prolog Erlang paralelna mova dlya zastosuvan v rezhimi realnogo chasu Elixir paralelna mova dlya zastosuvan v rezhimi realnogo chasu pobudovana na Erlang VM Maisie mova yaka bazuyetsya na S Scheme odin z dialektiv Lisp Cilk algoritmichna bagatopotokova mova Seredovisha rozrobki paralelnih program aCe seredovishe rozrobki i vikonannya program v ramkah modeli paralelnih danih ADAPTOR sistema osnovana na movi HPF Arjuna ob yektno oriyentovana sistema programuvannya rozpodilenih dodatkiv CODE vizualna sistema paralelnogo programuvannya Pri rozrobci paralelnih program v ramkah modeli paralelizmu zadach najchastishe vikoristovuyutsya specializovani biblioteki i sistemi paralelnogo programuvannya PVM i MPI PVM isnuye dlya riznih platform ye realizaciyi dlya mov Java i Python i vklyuchaye rizni zasobi stvorennya paralelnih program Osoblivosti organizaciyi paralelnoyi programiTehnologiya OpenMP Dokladnishe OpenMP Standart OpenMP rozroblenij dlya mov FORTRAN 77 90 95 C C i pidtrimuyetsya praktichno vsima virobnikami velikih obchislyuvalnih sistem Realizaciya standartu dostupna yak na UNIX platformah tak i v seredovishi Windows NT V standarti za osnovu beretsya poslidovna programa a dlya stvorennya yiyi paralelnoyi versiyi koristuvachu nadayetsya nabir direktiv procedur i navkolishnih zminnih OpenMP proces vikonannya programi Tekst programi rozbivayetsya na poslidovni i paralelni oblasti div ris V pochatkovij moment chasu porodzhuyetsya nitka majster osnovna nitka yaka pochinaye vikonuvati programu z startovoyi tochki Osnovna nitka i tilki vona vikonuye vsi poslidovni oblasti programi Dlya pidtrimki paralelizmu vikoristovuyetsya shema FORK JOIN Pri vhodi v paralelnu nitku majster stvoryuyutsya dodatkovi nitki vikonuyetsya operaciya FORK Pislya stvorennya kozhna nitka otrimuye svij unikalnij nomer prichomu nitka majster zavzhdi maye nomer 0 Vsi stvoreni nitki vikoristovuyut odnakovij kod yakij vidpovidaye paralelnij oblasti Pri vihodi z paralelnoyi oblasti osnovna nitka dochikuyetsya zavershennya reshtu nitok i podalshe vikonannya programi prodovzhuye tilki vona V paralelnij oblasti vsi zminni programi dilyatsya na dva klasi zagalni SHARED i lokalni PRIVATE Zagalni zminni zavzhdi isnuyut tilki v odnomu ekzemplyari dlya vsiyeyi programi i dostupni vsim nitkam pid odnakovim imenem Ogoloshennya lokalnih zminnih viklikaye stvorennya svogo ekzemplyara kozhnoyi zminnoyi dlya kozhnoyi nitki Sistema programuvannya DVM Sistema ob yednuye modeli paralelizmu za danimi ta keruvannyam i skladayetsya z 5 ti osnovnih komponentiv kompilyatori z mov FORTRAN DVM i C DVM sistemi pidtrimki vikonannya paralelnih program vidlagodzhuvacha paralelnih program analizatora produktivnosti peredbachuvacha produktivnosti Vidobrazhennya virtualnih procesoriv na fizichni zdijsnyuyetsya zasobami operacijnoyi sistemi Dlya rozpodilennya masiviv vikoristovuyetsya direktiva DISTRIBUTE maye opisovij status Dlya organizaciyi pogodzhenogo vidobrazhennya deyakih masiviv vikoristovuyetsya mehanizm virivnyuvannya odnogo masivu vidnosno inshogo za dopomogoyu direktivi ALING Direktiva paralelnogo vikonannya cikliv PARALLEL vbudovana v movu Fortran u vidi speckomentara Direktiva MAP vbudovana v movu Fortran i specifikuye to sho n a zadacha deyakogo vektora T bude vikonuvatisya sekciyeyu virtualnih procesoriv R i1 i2 j1 j2 Vsi vidobrazheni na cyu zadachu masivi direktiva DISTRIBUTE i obchislennya direktiva PARALLEL budut avtomatichno vidobrazheni na cyu zh sekciyu virtualnih procesoriv V DVM peredbacheni dvi formi vidobrazhennya blokiv programi na zadachi Statichna forma ye bezposerednim analogom paralelnih sekcij v inshih movah zokrema direktivi SECTIONS v movi OpenMP V dinamichnij formi iteraciya ciklu vidobrazhayetsya na zadachu Spilnimi danimi v DVM ye dani sho obchislyuyutsya na odnih procesorah a vikoristovuyutsya inshimi DVM programa mozhe vikonuvatisya na dovilnij kilkosti procesoriv pochinayuchi z odnogo Ce ye naslidkom togo sho direktivi paralelizmu v DVMne zalezhat ni vid kilkosti procesoriv ni vid konkretnih nomeriv procesoriv Yedinim vinyatkom ye riven zadach Za vimogoyu direktivi MAP koristuvach povinen yavno opisati masiv virtualnih procesoriv Pri comu kilkist procesoriv sho opisani v programi ne povinen perevishiti kilkosti procesoriv sho zadayutsya pri zapusku programi Tehnologiyi paralelnogo programuvannya Message Passing Interface MPI Dokladnishe Message Passing Interface MPI biblioteka funkcij yaka zabezpechuye vzayemodiyu paralelnih procesiv za dopomogoyu mehanizmu peredachi povidomlen i ne maye niyakih zasobiv dlya rozpodilennya procesiv po obchislyuvalnih vuzlah i dlya zapusku yih na vikonannya MRI ne mistit mehanizmiv dinamichnogo stvorennya i znishennya procesiv pid chas vikonannya programi Dlya identifikaciyi naboriv procesiv vvoditsya ponyattya grupi i komunikatora Procesi ob yednuyutsya v grupi mozhut buti vkladeni grupi Useredini grupi vsi procesi ponumerovani Z kozhnoyu grupoyu asocijovanij svij komunikator Tomu pri zdijsnenni peresilok neobhidno vkazati identifikator grupi useredini yakoyi provoditsya ce peresilka Proceduri MPI Inicializaciya ta zakrittya MPI procesiv realizaciya komutacijnih operacij tipu tochka tochka realizaciya kolektivnih operacij dlya roboti z grupami procesiv i komunikatorami dlya roboti z strukturami danih formuvannya topologiyi procesiv Do bazovih funkcij MPI nalezhat inicializaciya MPI zavershennya MPI viznachennya kilkosti procesiv v oblasti zv yazku viznachennya nomera procesu yakij vikonuyetsya peredacha povidomlen prijmannya povidomlen funkciyi vidliku chasu Kozhna MPI funkciya harakterizuyetsya sposobom vikonannya Lokalna funkciya vikonuyetsya vseredini procesu sho yiyi viklikav Yiyi zavershennya ne vimagaye komunikaciyi Nelokalna funkciya dlya yiyi zavershennya neobhidno vikonati MPI proceduru inshim procesom Globalna funkciya proceduru povinni vikonati vsi procesi grupi Nevikonannya ciyeyi umovi mozhe prizvesti do zavisannya zadachi Blokuyucha funkciya povernennya keruvannya z proceduri garantuye mozhlivist povtornogo vikoristannya parametriv yaki brali uchast u vikliku Niyakih zmin v stan procesu sho viklikav blokuyuchij zapit do vihodu z proceduri ne mozhe vidbuvatisya Neblokuyucha funkciya povernennya z proceduri vidbuvayetsya negajno bez ochikuvannya zavershennya operaciyi Zavershennya neblokuyuchih operacij zdijsnyuyetsya specialnimi funkciyami Primitki www cs usfca edu Arhiv originalu za 2 grudnya 2016 Procitovano 30 listopada 2016 Arhiv originalu za 30 listopada 2016 Procitovano 30 listopada 2016 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya LiteraturaVoevodin V V Voevodin Vl V Parallelnye vychisleniya SPb BHV Peterburg 2002 Ortega Dzh Vvedenie v parallelnye i vektornye metody resheniya linejnyh sistem M Mir 1991 Programmirovanie na parallelnyh vychislitelnyh sistemah Per s angl Pod red R Bebba M Mir 1991 Brojnl T Paralelne programuvannya Pochatkovij kurs Navchalnij posibnik K Visha shkola 1997 Voevodin V V Matematicheskie osnovy parallelnyh vychislenij M Izd vo MGU 1991 Vektorizaciya programm teoriya metody realizaciya Per s angl i nem Pod red G D Chinina M Mir 1991 Korneev V V Parallelnye vychislitelnye sistemy M Nolidzh 1999 S Nemnyugin O Stesik Parallelnoe programmirovanie dlya mnogoprocessornyh vychislitelnyh sistem SPb BHV Peterburg 2002 Piterson Dzh Teoriya setej Petri i modelirovaniya sistem Per s angl M Mir 1984 264 s il