Неявний паралелізм

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Нея́вний паралелі́зм в інформатиці — особливість мови програмування, що дозволяє компілятору автоматично експлуатувати паралелізм, вроджений до обчислень, вираженим деякими конструкціями мови. Мова з неявним паралелізмом, не потребує спеціальних директив, операторів або функцій, щоб дозволити паралельне виконання.

Мови програмування з неявним паралелізмом включають Axum, HPF, Id, LabVIEW, MATLAB M-code, NESL, SaC, SISAL, ZPL, and pH.[1]

Приклад[ред. | ред. код]

Якщо особлива проблема включає виконання тієї ж самої операції на групі чисел (таких як взяття синус або логарифм кожного з них у свою чергу), мова, яка забезпечує неявний паралелізм, моглаб би дозволити програмістові писати інструкцію таким чином:

numbers = [0 1 2 3 4 5 6 7];
result = sin(numbers);

Компілятор або перекладач можуть обчислити синус кожного елемента незалежно, поширивши зусилля через багаторазові процесори.

Переваги[ред. | ред. код]

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

Недоліки[ред. | ред. код]

Мови з неявним паралелізмом зменшують контроль, який програміст має над паралельним виконанням програми, приводячи іноді до меншої ефективності. Виробники мови програмування Oz також відзначають, що їх ранні експерименти з неявним паралелізмом показали, що неявний паралелізм зробив налагодження важким, а моделі об'єкта стали надмірно незграбними.

Велика проблема — те, що у кожної програми є деяка паралель і деяка послідовна логіка. Binary I/O наприклад, вимагає підтримки таких послідовних операцій, як Write() і Seek(). Якщо неявний паралелізм є необхідний, це створює нову вимогу для конструкцій і ключових слів, щоб підтримати код.

Див. також[ред. | ред. код]

Явний паралелізм

Примітки[ред. | ред. код]