Паралельна віртуальна машина (PVM)
Основою обчислювального середовища кластера Beowulf є паралельна вірутальних машина PVM. PVM (Паралельна Віртуальна Машина) - це пакет програм, який дозволяє використовувати пов'язаний в локальну мережу набір різнорідних комп'ютерів, що працюють під операційною системою Unix, як один великий паралельний комп'ютер. Таким чином, проблема великих обчислень може бути вельми ефективно вирішена за рахунок використання сукупної потужності і пам'яті великого числа комп'ютерів. Пакет програм PVM легко переноситься на будь-яку платформу. Вихідні тексти, вільно поширювані netlib, було скомпільовано на комп'ютерах починаючи від laptop і до CRAY.
Паралельну віртуальну машину можна визначити як частину коштів реального обчислювального комплексу (процесори, пам'ять, периферійні пристрої і т.д.), призначену для виконання безлічі завдань, що беруть участь в отриманні загального результату обчислень. У загальному випадку число завдань може перевершувати число процесорів, включених в PVM. Крім того, до складу PVM можна включати досить різнорідні обчислювальні машини, несумісні з систем команд і форматам даних. Інакше кажучи, Паралельної Віртуальної Машиною може стати як окремо взятий ПК, так і локальна мережа, що включає в себе суперкомп'ютери з паралельною архітектурою, універсальні ЕОМ, графічні робочі станції і все ті ж малопотужні ПК. Важливо лише, щоб про що включаються в PVM обчислювальних засобах була інформація у програмному забезпеченні PVM. Завдяки цьому програмному забезпеченню користувач може вважати, що він спілкується з однією обчислювальною машиною, в якій можливо паралельне виконання безлічі завдань.
PVM дозволяє користувачам використовувати існуючі апаратні засоби, для вирішення набагато складніших завдань при мінімальній додаткової вартості. Сотні дослідних груп у всьому світі використовують PVM, щоб вирішити важливі наукові, технічні, і медичні проблеми, а так само використовують PVM як освітній інструмент, для викладання паралельного програмування. В даний час, PVM став де факто стандартом для розподілених обчислень.
Головна мета використання PVM - це підвищення швидкості обчислень за рахунок їх паралельного виконання. Функціонування PVM засноване на механізмах обміну інформацією між завданнями, виконуваними в її середовищі. В цьому відношенні найбільш зручно реалізовувати PVM в рамках многопроцессорного обчислювального комплексу, виділивши віртуальній машині кілька процесорів і загальне або індивідуальні (в залежності від умов) ОЗУ. Використання PVM доспустімо як на багатопроцесорних комп'ютерах (SMP) так і на обчислювальних комплексах, побудованих по кластерної технології. При використанні PVM, як правило, значно спрощуються проблеми швидкого інформаційного обміну між завданнями, а також проблеми узгодження форматів представлення даних між завданнями, виконуваними на різних процесорах
Ефективне програмування для PVM починається з того, що алгоритм обчислень слід адаптувати до складу PVM і до її характеристикам. Це дуже творча задача, яка в багатьох випадках повинна вирішуватися програмістом. Крім завдання розпаралелювання обчислень з необхідністю виникає і завдання управління обчислювальним процесом, координації дій завдань - учасників цього процесу. Іноді для управління доводиться створювати спеціальну задачу, яка сама не беручи участь в обчисленнях, забезпечує узгоджену роботу інших завдань - обчислювачів.
Раніше побіжно згадувалося, що при паралельних обчисленнях необхідно програмувати спеціальні дії по координації роботи завдань, такі як процеси запуску завдань на процесорах кластера, управління обміном даних між завданнями та ін. Також слід чітко визначити "область діяльності" для кожного завдання.
Найбільш простий і популярний спосіб організації паралельного рахунку виглядає наступним чином. Спочатку запускається одна задача (master), яка в колективі завдань буде грати функції координатора робіт. Це завдання робить деякі підготовчі дії, наприклад ініціалізація початкових умов, після чого запускає інші завдання (slaves), яким може відповідати або той же виконуваний файл, або різні виконувані файли. Такий варіант організації паралельних обчислень краще при ускладненні логіки управління обчислювальним процесом, а також коли алгоритми, реалізовані в різних завданнях, істотно розрізняються або є великий обсяг операцій (наприклад, введення - виведення), які обслуговують обчислювальний процес в цілому.