Я вважаю, що ця відповідь буде правильнішою, ніж існуючі відповіді, і редагування їх змінило б їх суть. Я намагався посилатися на різні джерела чи сторінки вікіпедій, щоб інші могли підтвердити правильність.
Паралельність: властивість системи, яка дозволяє одиниці програми, алгоритму чи проблеми виконуватись поза порядком або в частковому порядку, не впливаючи на кінцевий результат 1 2 .
Простий приклад цього - послідовні доповнення:
0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45
Завдяки комутативній властивості додавання порядок їх можна переставляти, не впливаючи на правильність; наступна домовленість призведе до тієї ж відповіді:
(1 + 9) + (2 + 8) + (3 + 7) + (4 + 6) + 5 + 0 = 45
Тут я згрупував числа в пари, які становитимуть 10, що полегшує мені дійти правильної відповіді в голові.
Паралельні обчислення: тип обчислень, в яких багато обчислень або виконання процесів здійснюються одночасно 3 4 . Таким чином, паралельне обчислення використовує властивість паралельності виконувати кілька одиниць програми, алгоритму або проблеми одночасно.
Продовжуючи приклад послідовних доповнень, ми можемо виконувати різні частини суми паралельно:
Execution unit 1: 0 + 1 + 2 + 3 + 4 = 10
Execution unit 2: 5 + 6 + 7 + 8 + 9 = 35
Потім в кінці ми підсумовуємо результати, отримані від кожного працівника 10 + 35 = 45
.
Знову ж таки, цей паралелізм був можливий лише тому, що послідовні доповнення мають властивість паралельності.
Паралельність може бути використана більше, ніж просто паралелізм. Розглянемо перевагу одноядерної системи: протягом певного періоду система може прогресувати в декількох запущених процесах без жодного з них. Дійсно, ваш приклад асинхронного вводу / виводу є поширеним прикладом одночасності, що не вимагає паралелізму.
Плутанина
Сказане порівняно прямо. Я підозрюю, що люди плутаються через те, що визначення словника не обов'язково відповідають тому, що було викладено вище:
- Паралельно: виникають або існують одночасно або поруч 5 .
- Паралельність: факт двох або більше подій або обставин, що відбуваються або існують одночасно. З пошуку в Google: "визначте: паралельність" .
Словник визначає "сумісність" як факт виникнення, тоді як визначення в обчислювальній мові є прихованою властивістю програми, властивості або системи. Хоча пов’язані ці речі не однакові.
Особисті рекомендації
Я рекомендую використовувати термін "паралельний", коли одночасне виконання гарантується або очікується, і використовувати термін "паралельний", коли невідомо або не має значення, чи буде застосовано одночасне виконання.
Тому я б описав моделювання реактивного двигуна на декількох ядрах як паралельне.
Я б описав Makefiles як приклад одночасності. Makefiles визначає залежності кожної цілі. Коли цілі залежать від інших цілей, це створює часткове впорядкування. Коли взаємозв'язки та рецепти всебічно та правильно визначені, це встановлює властивість паралельності: існує частковий порядок, що порядок виконання певних завдань може бути перестановлений, не впливаючи на результат. Знову ж таки, ця сумісність може бути використана для побудови декількох правил одночасно, але паралельність є властивістю Makefile, незалежно від того, застосовується паралелізм чи ні.