Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсова Соколюк Наталя / Курсова_комп_сис.doc
Скачиваний:
49
Добавлен:
16.02.2016
Размер:
399.36 Кб
Скачать

4. Поняття паралельного процесу і гранули розпаралелювання

Найбільш загальна схема виконання послідовних і паралельних обчислень наведено на рисунку 1.3 (моменти часу S і E - початок і кінець завдання відповідно).

Рис 1.3. Діаграми виконання процесів при послідовному обчисленні - а), при близькому до ідеального розпаралелювання - б) і в загальному випадку розпаралелювання - в)

Процесом називають певні послідовності команд, нарівні з іншими процесами претендують для свого виконання на використання процесора; команди (інструкції) всередині процесу виконуються послідовно, внутрішній паралелізм при цьому не враховують.

На рисунку 1.3 тонкими лініями показані дії по створенню процесів і обміну даними між ними, товстими - безпосередньо виконання процесів (вісь абсцис - час). У разі послідовних обчислень створюється єдиний процес (рисунок 1.3a), який здійснює необхідні дії; при паралельному виконанні алгоритму необхідні кілька процесів (паралельних гілок завдання). В ідеальному випадку всі процеси створюються одночасно і одночасно завершуються (рисунок 1.3б), в загальному випадку діаграма процесів значно складніше і являє собою деякий граф (рисунок 1.3в).

Характерна довжина послідовно виконується групи команд у кожному з паралельних процесів називається розміром гранули (зерна). У будь-якому випадку доцільно прагнути до "грубозернистий" (ідеал - діаграма 1.3б). Зазвичай розмір зерна (гранули) складає десятки-сотні тисяч машинних операцій (що на порядки перевищує типовий розмір оператора мов Fortran або C / C + +). В залежності від розмірів гранул говорять про дрібнозернистому і грубозернистому паралелізмі.

На розмір гранули впливає і зручність програмування - у вигляді гранули часто оформляють якийсь логічно закінчений фрагмент програми. Доцільно прагнути до рівномірному завантаженні процесорів. Розробка паралельних програм є непростим завданням в зв'язку з труднощами виявлення паралелізму (зазвичай прихованого) у програмі (тобто виявлення частин алгоритму, що можуть виконуватися незалежно один від одного). Автоматизація виявлення паралелізму в алгоритмах непроста і в повному обсязі навряд чи може бути вирішена найближчим часом. У той же час за десятиліття експлуатації обчислювальної техніки розроблено таку кількість послідовних алгоритмів, що не може бути й мови про їх ручному розпаралелювання. Навіть найпростіша модель паралельних обчислень дозволяє виявити важливу обставину - час обміну даними повинно бути якомога менше часу виконання послідовності команд, що утворюють гранулу.

Для реальних завдань (традиційно) характерний розмір зерна розпаралелювання на кілька порядків перевищує характерний розмір оператора традиційної мови програмування (C / C + + або Fortran).

5. Взаємодія паралельних процесів, синхронізація процесів

Виконання команд програми утворює обчислювальний процес, в разі виконання декількох програм на загальній або розділяється пам'яті і обміні цих програм повідомленнями прийнято говорити про систему спільно протікають взаємодіючих процесів. Породження і знищення процесів UNIX-подібних операційних системах виконуються операторами (системними викликами). Паралелізм часто описується в термінах макрооператорів, в паралельних мовах запуск паралельних гілок здійснюється за допомогою оператора JOIN.

Для багатопроцесорних обчислювальних систем особливе значення має забезпечення синхронізації процесів. Наприклад, момент часу настання обміну даними між процесорами апріорі ніяк не узгоджений і не може бути визначений точно, так як залежить від безлічі важко оцінених параметрів функціонування багатопроцесорних обчислювальних систем, при цьому для забезпечення зустрічі для обміну інформацією просто необхідно застосовувати синхронізацію. У слабозв’язних багатопроцесорних обчислювальних системах взагалі не можна сподіватися на абсолютну синхронізацію машинних годин окремих процесорів, можна говорити тільки про вимірювання проміжків часу в тимчасовій системі кожного процесора. Синхронізація є дієвим способом запобігання ситуацій "глухого кута" - ситуації, коли кожен із взаємодіючих процесів одержав у розпорядження частину необхідних йому ресурсів, але ні йому ні іншим процесам цієї кількості ресурсів недостатньо для завершення обробки та подальшого звільнення ресурсів. У системах паралельного програмування використовують високорівневі прийоми синхронізації. У технології паралельного програмування MPI застосована схема синхронізації обміну інформацією між процесами. Синхронізація може підтримуватися і апаратно (наприклад, бар'єрна синхронізація в суперкомп'ютері Cray T3, за допомогою якої здійснюється очікування всіма процесами певної точки в програмі, після досягнення якої можлива подальша робота.

Соседние файлы в папке курсова Соколюк Наталя