Відкрити головне меню

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

Мови програмування з неявним паралелізмом включають 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(). Якщо неявний паралелізм є необхідний, це створює нову вимогу для конструкцій і ключових слів, щоб підтримати код.

Див. такожРедагувати

ПриміткиРедагувати