Паралелізм завдань (також відомий як паралелізм функції або керований паралелізм) є однією з форм розпаралелювання комп'ютерного коду між декількома процесорами в паралельних обчислювальних середовищах.
Паралелізм завдань акцентує увагу на розподілі процесів, орієнтованих на конкретну задачу або потоків на різних процесорах. Це контрастує з паралелізмом даних як інша форма паралелізму.
Опис
У багатопроцесорній системі, паралелізм завдань досягається, коли кожен процесор виконує іншу нитку (процес) для одних і тих же або різних даних. Нитки можуть виконувати один і той же або інший код. У загальному випадку, потоки які виконуються, взаємодіють один з одним, під час виконання. Зв'язок зазвичай відбувається шляхом передачі даних від одного потоку до іншого, як частина робочого процесу.
Часто розпаралелювання на цьому рівні є найпростішим і найефективнішим. Таке розпаралелювання можливе в тих випадках, коли розв'язуване завдання складається з незалежних підзавдань, кожне з яких можна виконати окремо. Хорошим прикладом може бути стиснення аудіоальбому. Кожен запис може оброблятися окремо, так як він ніяким «технічним» чином не зв'язаний з іншими.
Розпаралелювання на рівні завдань нам демонструє операційна система, запускаючи на багатоядерній машині програми на різних ядрах. Якщо перша програма показує нам фільм, а друга є файловим клієнтом, то операційна система спокійно зможе організувати їх паралельну роботу.
Як простий приклад, якщо ми запускаємо код на 2-процесорній системі (CPU «a» і «b») в паралельному середовищі, і хочемо виконати завдання «A» і «B» одночасно, можна сказати процесору «а» робити завдання «A» і процесору «b», щоб виконував завдання «B», тим самим скорочуючи час виконання. Завдання можуть бути призначені, за допомогою умовних операторів, як описано нижче.
Даний вид розпаралелювання простий, в деяких випадках досить ефективний. Але коли ми маємо справу з однорідним завданням, то даний вид розпаралелювання не можна застосувати. Операційна система ніяк не може прискорити програму, яка використовує тільки один процесор, скільки б ядер не було б доступно. Програма, що розбиває кодування звуку і зображення в відеофільмі на два завдання нічого не отримає від третього або четвертого ядра. Що б розпаралелити однорідні завдання, потрібно спуститися на рівень нижче, на рівень даних.
Паралелізм завдань підкреслює розподілений (паралельний) характер обробки (тобто потоки), на відміну від даних (паралелізм даних). Більшість реальних програм знаходяться десь на континуумі між паралелізмом задач і паралелізмом даних.
Паралелізм рівня ниток (ПРН) — це паралелізм, властивий програмам, які виконуються в кількох потоках одночасно. Цей тип паралелізму зустрічається в основному в програмах, написаних для комерційних серверів, таких як бази даних. Запустивши багато потоків одночасно, ці програми здатні переносити велику кількість операцій введення-виведення і час очікування системи пам'яті, які їх робочі навантаження можуть перейняти на себе, поки одна нитка затримана, чекаючи пам'яті або доступу до диску, інша нитка може виконувати корисну роботу.
Експлуатація рівня ниток паралелізму почала виходити на ринок настільних комп'ютерів з появою багатоядерних мікропроцесорів. Це сталося тому що, з різних причин, це стає все більш недоцільним збільшувати або тактову частоту або інструкції за такт одного ядра. Якщо ця тенденція збережеться, нові програми повинні бути розроблені, щоб використовувати кілька потоків для того, щоб отримати вигоду зі збільшенням потенційної обчислювальної потужності. Це контрастує з попередніми мікропроцесорними інноваціями, в якому існуючий код був автоматично прискорено, запустивши його на новішому / швидшому комп'ютері.
Приклад
Псевдокод ілюструє паралелізм завдань:
program: ... if CPU="a" then do task "A" else if CPU="b" then do task "B" end if ... end program
Мета програми — дещо розставити мережі завдання («А+Б»). Якщо ми пишемо код, як описано вище, і запустимо його на системі з двома процесорами, то середовище виконуватиме його наступним чином.
- У SPMD системи, обидва CPU будуть виконувати код.
- У паралельному середовищі, обидва будуть мати доступ до тих же даних.
- Оператор «if» розмежовує роботу процесорів. CPU «а» буде зчитувати true в «if», а CPU «b» зчитувати true з «else if», таким чином, маючи свою власну задачу.
- Тепер обидва CPU виконують окремі блоки коду одночасно, виконуючи різні завдання одночасно.
Код, виконуваний CPU «а»:
program: ... do task "A" ... end program
Код, виконуваний CPU «b»:
program: ... do task "B" ... end program
Ця концепція може бути узагальнена на будь-яке число процесорів.
Підтримка мов
Мови для паралельних завдань
Приклади мов для паралельних завдань можуть бути знайдені в області мови опису апаратури таких як verilog або VHDL, які можуть також розглядатися як представлення «статичного коду» парадигми програмного забезпечення, де програма має статичну структуру, і дані змінюються щодо «статичних даних» моделі, де дані не змінюються (або змінюються повільно) і обробки (прикладні методи), зміна (наприклад, пошук по базі).
Основні мови
Паралелізм завдань може підтримуватися на основних мовах, вбудованих засобах або бібліотеках. Відомі приклади включають:
- C++ (Intel): Threading Building Blocks
- C, C++, Objective-C (Apple): Grand Central Dispatch
- D: tasks and fibers
- Go: goroutines
- Java: Java concurrency
- .NET: Task Parallel Library
Див. також
Посилання
- Quinn Michael J, Parallel Programming in C with MPI and OpenMP McGraw-Hill Inc. 2004.
- Знайомство з рівнями розпаралелювання
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Paralelizm zavdan takozh vidomij yak paralelizm funkciyi abo kerovanij paralelizm ye odniyeyu z form rozparalelyuvannya komp yuternogo kodu mizh dekilkoma procesorami v paralelnih obchislyuvalnih seredovishah Paralelizm zavdan akcentuye uvagu na rozpodili procesiv oriyentovanih na konkretnu zadachu abo potokiv na riznih procesorah Ce kontrastuye z paralelizmom danih yak insha forma paralelizmu OpisU bagatoprocesornij sistemi paralelizm zavdan dosyagayetsya koli kozhen procesor vikonuye inshu nitku proces dlya odnih i tih zhe abo riznih danih Nitki mozhut vikonuvati odin i toj zhe abo inshij kod U zagalnomu vipadku potoki yaki vikonuyutsya vzayemodiyut odin z odnim pid chas vikonannya Zv yazok zazvichaj vidbuvayetsya shlyahom peredachi danih vid odnogo potoku do inshogo yak chastina robochogo procesu Chasto rozparalelyuvannya na comu rivni ye najprostishim i najefektivnishim Take rozparalelyuvannya mozhlive v tih vipadkah koli rozv yazuvane zavdannya skladayetsya z nezalezhnih pidzavdan kozhne z yakih mozhna vikonati okremo Horoshim prikladom mozhe buti stisnennya audioalbomu Kozhen zapis mozhe obroblyatisya okremo tak yak vin niyakim tehnichnim chinom ne zv yazanij z inshimi Rozparalelyuvannya na rivni zavdan nam demonstruye operacijna sistema zapuskayuchi na bagatoyadernij mashini programi na riznih yadrah Yaksho persha programa pokazuye nam film a druga ye fajlovim kliyentom to operacijna sistema spokijno zmozhe organizuvati yih paralelnu robotu Yak prostij priklad yaksho mi zapuskayemo kod na 2 procesornij sistemi CPU a i b v paralelnomu seredovishi i hochemo vikonati zavdannya A i B odnochasno mozhna skazati procesoru a robiti zavdannya A i procesoru b shob vikonuvav zavdannya B tim samim skorochuyuchi chas vikonannya Zavdannya mozhut buti priznacheni za dopomogoyu umovnih operatoriv yak opisano nizhche Danij vid rozparalelyuvannya prostij v deyakih vipadkah dosit efektivnij Ale koli mi mayemo spravu z odnoridnim zavdannyam to danij vid rozparalelyuvannya ne mozhna zastosuvati Operacijna sistema niyak ne mozhe priskoriti programu yaka vikoristovuye tilki odin procesor skilki b yader ne bulo b dostupno Programa sho rozbivaye koduvannya zvuku i zobrazhennya v videofilmi na dva zavdannya nichogo ne otrimaye vid tretogo abo chetvertogo yadra Sho b rozparaleliti odnoridni zavdannya potribno spustitisya na riven nizhche na riven danih Paralelizm zavdan pidkreslyuye rozpodilenij paralelnij harakter obrobki tobto potoki na vidminu vid danih paralelizm danih Bilshist realnih program znahodyatsya des na kontinuumi mizh paralelizmom zadach i paralelizmom danih Paralelizm rivnya nitok PRN ce paralelizm vlastivij programam yaki vikonuyutsya v kilkoh potokah odnochasno Cej tip paralelizmu zustrichayetsya v osnovnomu v programah napisanih dlya komercijnih serveriv takih yak bazi danih Zapustivshi bagato potokiv odnochasno ci programi zdatni perenositi veliku kilkist operacij vvedennya vivedennya i chas ochikuvannya sistemi pam yati yaki yih robochi navantazhennya mozhut perejnyati na sebe poki odna nitka zatrimana chekayuchi pam yati abo dostupu do disku insha nitka mozhe vikonuvati korisnu robotu Ekspluataciya rivnya nitok paralelizmu pochala vihoditi na rinok nastilnih komp yuteriv z poyavoyu bagatoyadernih mikroprocesoriv Ce stalosya tomu sho z riznih prichin ce staye vse bilsh nedocilnim zbilshuvati abo taktovu chastotu abo instrukciyi za takt odnogo yadra Yaksho cya tendenciya zberezhetsya novi programi povinni buti rozrobleni shob vikoristovuvati kilka potokiv dlya togo shob otrimati vigodu zi zbilshennyam potencijnoyi obchislyuvalnoyi potuzhnosti Ce kontrastuye z poperednimi mikroprocesornimi innovaciyami v yakomu isnuyuchij kod buv avtomatichno priskoreno zapustivshi jogo na novishomu shvidshomu komp yuteri PrikladPsevdokod ilyustruye paralelizm zavdan program if CPU a then do task A else if CPU b then do task B end if end program Meta programi desho rozstaviti merezhi zavdannya A B Yaksho mi pishemo kod yak opisano vishe i zapustimo jogo na sistemi z dvoma procesorami to seredovishe vikonuvatime jogo nastupnim chinom U SPMD sistemi obidva CPU budut vikonuvati kod U paralelnomu seredovishi obidva budut mati dostup do tih zhe danih Operator if rozmezhovuye robotu procesoriv CPU a bude zchituvati true v if a CPU b zchituvati true z else if takim chinom mayuchi svoyu vlasnu zadachu Teper obidva CPU vikonuyut okremi bloki kodu odnochasno vikonuyuchi rizni zavdannya odnochasno Kod vikonuvanij CPU a program do task A end program Kod vikonuvanij CPU b program do task B end program Cya koncepciya mozhe buti uzagalnena na bud yake chislo procesoriv Pidtrimka movMovi dlya paralelnih zavdan Prikladi mov dlya paralelnih zavdan mozhut buti znajdeni v oblasti movi opisu aparaturi takih yak verilog abo VHDL yaki mozhut takozh rozglyadatisya yak predstavlennya statichnogo kodu paradigmi programnogo zabezpechennya de programa maye statichnu strukturu i dani zminyuyutsya shodo statichnih danih modeli de dani ne zminyuyutsya abo zminyuyutsya povilno i obrobki prikladni metodi zmina napriklad poshuk po bazi Osnovni movi Paralelizm zavdan mozhe pidtrimuvatisya na osnovnih movah vbudovanih zasobah abo bibliotekah Vidomi prikladi vklyuchayut C Intel Threading Building Blocks C C Objective C Apple Grand Central Dispatch D tasks and fibers Go goroutines Java Java concurrency NET Task Parallel LibraryDiv takozhParalelnist danih Modeli paralelnogo programuvannyaPosilannyaQuinn Michael J Parallel Programming in C with MPI and OpenMP McGraw Hill Inc 2004 ISBN 0 07 058201 7 Znajomstvo z rivnyami rozparalelyuvannya