| Назва: | Паралельні обчислювальні системи |
| Тип: | Реферати |
| Мова: | Українська |
| Розмiр: | 46,92 KB |
| Скачувань: | 63 |
Процеси повинні якнайшвидше проходити свої критичні ділянки і не повинні в цей період блокуватися. Якщо процес, що знаходиться у своїй критичній ділянці, завершується (можливо, аварійно), то необхідно, щоб деякий інший процес міг скасувати режим взаємовиключення, надаючи іншим процесам можливість продовжити виконання і ввійти у свої критичні ділянки.
Семафор – це захищених змінна, значення якої можна опитувати і змінювати тільки за допомогою спеціальних операцій wait і signal і операції ініціалізації init. Двійкові семафори можуть приймати тільки значення 0 і 1. Семафори з лічильниками можуть приймати невід’ємні цілі значення.
Операції є неподільними. Критичні ділянки процесів позначаються операціями wait() і signal(). Якщо одночасно декілька процесів спробують виконати операцію wait(), то це буде дозволено тільки одному з них, а іншим прийдеться зачекати.
Семафори з лічильниками використовуються, якщо деякий ресурс виділяється з множини ідентичних ресурсів. При ініціалізації такого семафора в його лічильнику вказується число елементів множини. Кожна операція wait() зменшує значення лічильника семафора на 1, показуючи, що деякому процесу виділений один ресурс із множини. Кожна операція signal() збільшує значення лічильника на 1, показуючи, що процес повернув ресурс у множину.
4. Моделі паралельних обчислень.
Паралельне програмування представляє додаткові джерела складності - необхідно явно управляти роботою тисяч процесорів, координувати мільйони міжпроцесорних взаємодій. Для того, щоб вирішити задачу на паралельному комп’ютері, необхідно розподілити обчислення між процесорами системи так, щоб кожен процесор був зайнятий вирішенням частини задачі. Крім того, бажано, щоб як можна менший обсяг даних пересилався між процесорами, оскільки комунікації значно повільніші операції, ніж обчислення. Часто виникають конфлікти між ступенем розпаралелювання й обсягом комунікацій, тобто чим між більшою кількістю процесорів розподілена задача, тим більший обсяг даних необхідно пересилати між ними. Середовище паралельного програмування повинне забезпечувати адекватне управління розподілом і комунікаціями даних.
Через складність паралельних комп’ютерів і їх істотної відмінності від традиційних однопроцесорних комп’ютерів, не можна просто скористатися традиційними мовами програмування й очікувати отримання високої продуктивності. Основні моделі паралельного програмування:
• процес/канал (Process/Channel);
• обмін повідомленнями (Message Passing);
• паралелізм даних (Data Parallel);
• загальної пам’яті (Shared Memory).
4.1. Модель процес/канал.
У цій моделі програми складаються з одного чи більше процесів, розподілених між процесорами. Процеси виконуються одночасно, їхнє число може змінюватися протягом часу виконання програми. Процеси обмінюються даними через канали, що являють собою односпрямовані комунікаційні лінії, що з’єднують тільки два процеси. Канали можна створювати і видаляти
Наведемо більш чіткі характерні властивості моделі процес/канал:
• паралельне обчислення складається з одного чи більше одночасно виконуваних процесів, кількість яких може змінюватися протягом часу виконання програми;
• процес - це послідовна програма з локальними даними. Процес має вхідні і вихідні порти, що служить інтерфейсом до середовища процесу;
• на додачу до звичайних операцій процес може виконувати наступні дії: послати повідомлення через вихідний порт, одержати повідомлення з вхідного порту, створити новий процес і завершити процес;
• посилаюча операція асинхронна – вона завершується відразу, не очікуючи того, коли дані будуть отримані. Вхідна операція синхронна – вона блокує процес до моменту надходження повідомлення;
• пари з вхідного і вихідного портів з’єднуються чергами повідомлень, які називаються каналами(channels). Канали можна створювати і видаляти. Посилання на канали (порти) можна включати в повідомлення, так що зв'язність може змінюватися динамічно;
• процеси можна розподіляти між фізичними процесорами довільним способом, причому використовуване відображення (розподіл) не впливає на семантику програми. Зокрема, безліч процесів можна відобразити на один процесор.
Поняття процесу дозволяє говорити про місце розташування даних: дані, що містяться в локальній пам’яті процесу - розташовані “близько”, інші дані –“віддалені”. Поняття каналу забезпечує механізм для вказання того, що для продовження обчислення одному процесу вимагаються дані іншого процесу, тобто залежність між даними.
4.2. Модель обмін повідомленнями.
У цій моделі програми, можливо різні, написані на традиційній послідовній мові, виконуються процесорами комп’ютера. Кожна програма має доступ до пам’яті виконуючого її процесора. Програми обмінюються між собою даними, використовуючи підпрограми прийому/передачі даних деякої комунікаційної системи. Програми, що використовують обмін повідомленнями, можуть виконуватися тільки на MIMD комп’ютерах
Семафор – це захищених змінна, значення якої можна опитувати і змінювати тільки за допомогою спеціальних операцій wait і signal і операції ініціалізації init. Двійкові семафори можуть приймати тільки значення 0 і 1. Семафори з лічильниками можуть приймати невід’ємні цілі значення.
Операції є неподільними. Критичні ділянки процесів позначаються операціями wait() і signal(). Якщо одночасно декілька процесів спробують виконати операцію wait(), то це буде дозволено тільки одному з них, а іншим прийдеться зачекати.
Семафори з лічильниками використовуються, якщо деякий ресурс виділяється з множини ідентичних ресурсів. При ініціалізації такого семафора в його лічильнику вказується число елементів множини. Кожна операція wait() зменшує значення лічильника семафора на 1, показуючи, що деякому процесу виділений один ресурс із множини. Кожна операція signal() збільшує значення лічильника на 1, показуючи, що процес повернув ресурс у множину.
4. Моделі паралельних обчислень.
Паралельне програмування представляє додаткові джерела складності - необхідно явно управляти роботою тисяч процесорів, координувати мільйони міжпроцесорних взаємодій. Для того, щоб вирішити задачу на паралельному комп’ютері, необхідно розподілити обчислення між процесорами системи так, щоб кожен процесор був зайнятий вирішенням частини задачі. Крім того, бажано, щоб як можна менший обсяг даних пересилався між процесорами, оскільки комунікації значно повільніші операції, ніж обчислення. Часто виникають конфлікти між ступенем розпаралелювання й обсягом комунікацій, тобто чим між більшою кількістю процесорів розподілена задача, тим більший обсяг даних необхідно пересилати між ними. Середовище паралельного програмування повинне забезпечувати адекватне управління розподілом і комунікаціями даних.
Через складність паралельних комп’ютерів і їх істотної відмінності від традиційних однопроцесорних комп’ютерів, не можна просто скористатися традиційними мовами програмування й очікувати отримання високої продуктивності. Основні моделі паралельного програмування:
• процес/канал (Process/Channel);
• обмін повідомленнями (Message Passing);
• паралелізм даних (Data Parallel);
• загальної пам’яті (Shared Memory).
4.1. Модель процес/канал.
У цій моделі програми складаються з одного чи більше процесів, розподілених між процесорами. Процеси виконуються одночасно, їхнє число може змінюватися протягом часу виконання програми. Процеси обмінюються даними через канали, що являють собою односпрямовані комунікаційні лінії, що з’єднують тільки два процеси. Канали можна створювати і видаляти
Наведемо більш чіткі характерні властивості моделі процес/канал:
• паралельне обчислення складається з одного чи більше одночасно виконуваних процесів, кількість яких може змінюватися протягом часу виконання програми;
• процес - це послідовна програма з локальними даними. Процес має вхідні і вихідні порти, що служить інтерфейсом до середовища процесу;
• на додачу до звичайних операцій процес може виконувати наступні дії: послати повідомлення через вихідний порт, одержати повідомлення з вхідного порту, створити новий процес і завершити процес;
• посилаюча операція асинхронна – вона завершується відразу, не очікуючи того, коли дані будуть отримані. Вхідна операція синхронна – вона блокує процес до моменту надходження повідомлення;
• пари з вхідного і вихідного портів з’єднуються чергами повідомлень, які називаються каналами(channels). Канали можна створювати і видаляти. Посилання на канали (порти) можна включати в повідомлення, так що зв'язність може змінюватися динамічно;
• процеси можна розподіляти між фізичними процесорами довільним способом, причому використовуване відображення (розподіл) не впливає на семантику програми. Зокрема, безліч процесів можна відобразити на один процесор.
Поняття процесу дозволяє говорити про місце розташування даних: дані, що містяться в локальній пам’яті процесу - розташовані “близько”, інші дані –“віддалені”. Поняття каналу забезпечує механізм для вказання того, що для продовження обчислення одному процесу вимагаються дані іншого процесу, тобто залежність між даними.
4.2. Модель обмін повідомленнями.
У цій моделі програми, можливо різні, написані на традиційній послідовній мові, виконуються процесорами комп’ютера. Кожна програма має доступ до пам’яті виконуючого її процесора. Програми обмінюються між собою даними, використовуючи підпрограми прийому/передачі даних деякої комунікаційної системи. Програми, що використовують обмін повідомленнями, можуть виконуватися тільки на MIMD комп’ютерах