Неявна паралельність

Уci представлені концепції паралельності застосовують спеціальні, явні мовні конструктиви для керування паралельною обробкою інформації. Суттєво елегантнішими є мови програмування, які виходять з того, щоб робити можливою паралельну обробку, не застосовуючи мовних конструктивів для обслуговування паралельності. Подібні мови програмування називають мовами з неявною паралельністю. Проте під час роботи на цих мовах програміст має мало засобів впливу на застосування паралельних процесорів для вирішення його проблеми. Тут має бути впевненість, що у програміста наявна достатня кількість процедуральної інформації ("знань"), щоб зробити можливим ефективне розпаралелювання. Подібне завдання може вирішувати, наприклад, "інтелектуальний компілятор" без спілкування з nporpaмicтом. Ця проблема стає зрозумілою передусім в декларативних мовах програмування, таких як Lisp (функціонально) або Prolog (логічно). Через декларативне представлення знань, принаймні постановки задачі (наприклад, складна математична формула), розв'язок її визначається в основному однозначно. Однак суттєві труднощі виникають при спробах перевести ці знання в командний паралельний програмний процес, тобто скласти програму для обчислень за формулою i проблему розчленити на задачі-частки, які б могли розв'язуватися паралельно.

Неявна паралельність може бути безпосередньо виділена із векторних конструкцій мов програмування, наприклад FP або APL. В APL немає жодної контрольної структури високого рівня, яка безумовно потрібна в будь-якій (послідовній чи паралельній) мові програмування.

Як показано на рис.Б.6, математичний запис додавання матриць містить у co6i неявну паралельність, яка в цьому випадку досить просто може бути перетворена на деяку паралельну обчислювальну структуру методом автоматичного розпаралелювання (наприклад, паралельність на piвнi виразів).

Неявна паралельність розвантажує програміста, бо він не повинен займатися задачами керування та контролю. Програмування відбувається на високому piвнi абстракцій, тому неявна паралельність часто має місце в непроцедурних мовах програмування високого рівня. На протилежність цьому явна паралельність дає програмісту суттєво більшу свободу дій, щоб досягти вищої обчислювальної продуктивності від правильного завантаження процесорів. Ця перевага пов'язана iз складнішим програмуванням, якому притаманна більша вірогідність помилок.


Додаток В


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: