Page 26 - 6111
P. 26
різних процесорах. Це дійсно один з головних шляхів реалізації
поділу ресурсів у таких системах. З іншого боку, правильно
сконструйовані програми, які використовують нитки, повинні
працювати однаково добре як на однопроцесорній машині в режимі
поділу часу між нитками, так і на справжньому мультипроцесорі.
Моделі паралельних обчислень
Паралельне програмування представляє додаткові джерела
складності - необхідно явно управляти роботою тисяч процесорів,
координувати мільйони міжпроцесорних взаємодій. Для того, щоб
вирішити задачу на паралельному комп’ютері, необхідно
розподілити обчислення між процесорами системи так, щоб кожен
процесор був зайнятий вирішенням частини задачі. Крім того,
бажано, щоб як можна менший обсяг даних пересилався між
процесорами, оскільки комунікації значно повільніші операції, ніж
обчислення. Часто виникають конфлікти між ступенем
розпаралелювання й обсягом комунікацій, тобто чим між більшою
кількістю процесорів розподілена задача, тим більший обсяг даних
необхідно пересилати між ними. Середовище паралельного
програмування повинне забезпечувати адекватне управління
розподілом і комунікаціями даних.
Через складність паралельних комп’ютерів і їх істотної
відмінності від традиційних однопроцесорних комп’ютерів, не
можна просто скористатися традиційними мовами програмування й
очікувати отримання високої продуктивності. Основні моделі
паралельного програмування:
- процес/канал (Process/Channel);
- обмін повідомленнями (Message Passing);
- паралелізм даних (Data Parallel);
- загальна пам’ять (Shared Memory).
Модель процес/канал
У даній моделі програми складаються з одного чи більше
процесів, розподілених між процесорами. Процеси виконуються
одночасно, їх число може змінюватися протягом часу виконання
програми. Процеси обмінюються даними через канали, що являють
собою односпрямовані комунікаційні лінії, що з’єднують тільки два
процеси. Канали можна створювати і видаляти
Наведемо більш чіткі характерні властивості моделі
процес/канал:
- паралельне обчислення складається з одного чи більше
одночасно виконуваних процесів, кількість яких може змінюватися
протягом часу виконання програми;
25