Неявний паралелізм
Нея́вний паралелі́зм в інформатиці — особливість мови програмування, що дозволяє компілятору автоматично експлуатувати паралелізм, вроджений до обчислень, вираженим деякими конструкціями мови. Мова з неявним паралелізмом, не потребує спеціальних директив, операторів або функцій, щоб дозволити паралельне виконання.
Мови програмування з неявним паралелізмом включають 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(). Якщо неявний паралелізм є необхідний, це створює нову вимогу для конструкцій і ключових слів, щоб підтримати код.
Див. також[ред. | ред. код]
Примітки[ред. | ред. код]
- ↑ Nikhil, Rishiyur; Arvind. Implicit Parallel Programming in pH. ISBN 1-55860-644-0.
|
Ця стаття потребує додаткових посилань на джерела для поліпшення її перевірності. (січень 2016) |
Це незавершена стаття про програмування. Ви можете допомогти проєкту, виправивши або дописавши її. |
Це незавершена стаття про мови програмування. Ви можете допомогти проєкту, виправивши або дописавши її. |