Парадигми паралельних обчислень 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Парадигми паралельних обчислень



Курсова робота

Парадигми паралельних обчислень

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

процесорах або навіть різних комп’ютерах. На рис 1. показано три рівні парале­
лізму, які можуть міститись в одній комп’ютерній програмі.

Модель програми, зображеної на рис 1, відображає кардинальну зміну парадигми програмування, яка була характерна для ²ранньої² свідомості прог­рамістів та розробників. Тут відображено три рівні паралелізму і їх розподіл за декількома процесорами. Поєднання цих трьох рівнів з базовими паралельними конфігураціями процесорів зображено на рис. 2.

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

Вибір архітектури

Існує багато архітектурних рішень, які підтримують паралелізм. Архіте­ктурне рішення можемо вважати коректним, якщо воно відповідає декомпозиції робіт (work breakdown – WBR) програмного забезпечення (ДР ПЗ). Паралельні та розподілені архітектури можуть бути найрізноманітнішими. В той час як де­які розподілені архітектури чудово працюють в Web- середовищі, вони прак­ти­ч­но приречені на невдачу в середовищі реального часу. Наприклад, розподілені архітектури, які розраховані на тривалі часові затримки, цілком прийнятні для Web- середовища і цілковито неприйнятні для багатьох середовищ реального часу. Достатньо порівняти розподілену обробку даних на Web- орієнтованій системі функціонування електронної пошти з розподіленою обробкою даних в банкоматах, або автоматичних касових машинах (automated teller machine – ATM). Затримка (час очікування), яка присутня в багатьох поштових Web- сис­темах, була б просто нищівною для таких систем реального часу, як банко­мати. Одні розподілені архітектури (власне, деякі асинхронні моделі) справляю­ться з часовими затримками краще, ніж інші. Крім того, необхідно самим серйозним чином підходити до вибору відповідних архітектур паралельної обробки даних. Наприклад, методи векторної обробки даних найкраще придатні для рішення певних математичних задач і проблем імітаційного моделювання, але вони аб­солютно неефективні в застосування до мультиагентних алгоритмів плануван­ня. Поширені архітектури ПЗ, що придатні для паралельного та розподіленого програмування, подано в табл. 2.

Чотири базові моделі, подані в табл. 2, і їх варіанти забезпечують основу для всіх паралельних типів архітектур (тобто обєктно-орієнтованого, агентно-орієнтованого і ²класної дошки²), які будемо розглядати в лекціях. Розробни­кам ПЗ необхідно докладно ознайомитися з кожною з даних моделей і їх засто­суванням до паралельного і розподіленого програмування. В лекційному курсі надано початковий опис цих моделей і бібліографічна інформація по матеріа­лам, які дозволять знайти про них більш ґрунтовну інформацію. В кожній робо­ті або при вирішенні проблеми краще всього шукати природній або властивий їм паралелізм, а вибраний тип архітектури повинен максимально відповідати цьому природному паралелізму. Наприклад, паралелізм в рішенні, можливо, краще описувати за допомогою симетричної моделі, або моделі мережі з рівно­правними вузлами (peer-to-peer model)? в якій всі виконавці є рівноправними, на відміну від несиметричної моделі ²керуючий/виконавчий², в якій існує го­ловний (керуючий) процес, який керує всіма іншими процесами як підлеглими.

Лінії видимого контуру

Породження процесі, як подано в лістінгу 6, можливе за допомогою фу­нкцій, які викликаються із функції mane ().

// Лістінг 6. Основна гілка програми, з якої викликається функція,

// що породжує процес

int main (int argc, char *argv [ ]) {

//...

Rt = func1 (X, Y, Z);

//... }

// Визначення функції.

int func1 (char *M, char *N, char *V) {

//...

char *const args [ ] = {“TaskX”, M, N, V, NULL};

Pid = fork ();

if (Pid = = 0) {

exec ({“TaskX”, args); }

if (Pid > 0) {

//... }

wait (&stat); }

В лістінгу 6. функція func1 викликається з трьома аргументами. Ці аргу­менти передаються породженому процесу.

Процеси також можуть породжуватися із методів, які належать об’єктам. Як подано в лістінгу 7, об’єкти можна оголосити в довільному процесі.

// Лістінг 7. Оголошення об’єкту в процесі

 

//...

my_object MyObject;

//...

// Оголошення та визначення класу.

class my_object {

public:

//...

int spawnProcess (int X);

//... };

int my_object:: spawnProcess (int X) {

//...

//... posix_spawn () або system ()

//... }

Як подано в лістінгу 7, об’єкт може створювати довільну кількість про­цесів з довільного методу.

Завдання до курсової роботи

Курсова робота

Парадигми паралельних обчислень

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

процесорах або навіть різних комп’ютерах. На рис 1. показано три рівні парале­
лізму, які можуть міститись в одній комп’ютерній програмі.

Модель програми, зображеної на рис 1, відображає кардинальну зміну парадигми програмування, яка була характерна для ²ранньої² свідомості прог­рамістів та розробників. Тут відображено три рівні паралелізму і їх розподіл за декількома процесорами. Поєднання цих трьох рівнів з базовими паралельними конфігураціями процесорів зображено на рис. 2.

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



Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 181; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.51.117 (0.01 с.)