Запуск MPI-додатки на обчислювальному кластері можливий тільки через систему пакетної обробки завдань. Для спрощення запуску і постановки в чергу паралельної програми передбачений спеціальний скрипт mpirun. Наприклад, mpirun -np 20 ./first.exe запустить паралельну програму first.exe на 20 процесорах, тобто на 5 вузлах. (Кожен вузол має 2 двоядерних процесора). Варто звернути увагу, що для запуску виконуваного модуля знаходить в поточній директорії ($ pwd) необхідно явно вказати шлях «./» Ряд реалізацій MPI-1 надає команду запуску для програм MPI, яка має форму mpirun <аргументы mpirun><программа><аргументы программы>
Відділення команди запуску програми від самої програми забезпечує гнучкість, особливо для мережевих і гетерогенних реалізацій. Наявність стандартного механізму запуску також розширює мобільність MPI програм на один крок вперед, до командних рядках і сценаріями, які керують ними. Наприклад, сценарій набору програм перевірки правильності, який виконує сотні програм, може бути стерпним сценарієм, якщо він написаний з використанням такого стандартного механізму запуску. Щоб не переплутати `` стандартну '' команду з існуючої на практиці, яка не є стандартною і не переносять серед реалізацій, замість mpirun MPI визначив mpiexec.
У той час як стандартизований механізм запуску покращує придатність MPI, діапазон середовищ настільки різноманітний (наприклад, не може навіть бути інтерфейсу командного рядка), що MPI не може прийняти під мандат такий механізм. Замість цього, MPI визначає команду запуску mpiexec і рекомендує, але не вимагає, як рада розробникам. Однак, якщо реалізація забезпечує команду звану mpiexec, вона повинна мати форму, описану нижче: mpiexec -n
буде принаймні один спосіб запустити <программу> з початковим MPI_COMM_WORLD, чия група містить
Приклад 4.1 Запуск 16 примірників myprog на поточній або заданої за замовчуванням машині:
mpiexec -n 16 myprog
3. Напишіть програму паралельного обчислення певного інтеграла від функції 2 * (x + 2 * x * x / 1200.0) в інтервалі [0,1].
Метод лівих прямокутників
double f (double x)
int main (int argc, char ** argv)
int n = 1000, i, d; // 1000 - uzly
float a = 0, b = 1, h = (b-a) / n, s = 0, r = 0; // a i b -nachalo i konec otrezka
if (rank! = size-1) // schitaut vse processy, krome poslednego
1. Shared distributed memory архітектуралари.
Розподілена загальна пам'ять (DSM - Distributed Shared Memory)
Система PVM (Parallel Virtual Machine) була створена для об'єднання декількох пов'язаних мережею робочих станцій в єдину віртуальну паралельну обчислювальну машину. Система являє собою надбудову над операційною системою UNIX і використовується на різних апаратних платформах, включаючи і системи з масовим паралелізмом. Найбільш поширені зараз системи паралельного програмування на основі MPI (Message Parsing Interface). Ідея MPI початково проста і очевидна. Вона передбачає подання паралельної програми у вигляді безлічі паралельно виконуються процесів, що взаємодіють один з одним в ході виконання передачі даних за допомогою комунікаційних процедур. Вони і складають бібліотеку MPI. Однак належна реалізація MPI для забезпечення міжпроцесорних комунікацій виявилася досить складною. Така складність пов'язана з необхідністю досягнення високої продуктивності програм, необхідністю використовувати численні ресурси мультікомпьютера, і, як наслідок великою різноманітністю в реалізації комунікаційних процедур в залежності від режиму обробки даних.
MPI і PVM мають наступні загальні характеристики: 1. і MPI і PVM покликані вирішувати одну і ту ж задачу забезпечення межпроцессорной зв'язку, 2. і MPI і PVM орієнтовані на одну й ту ж саму MPMD парадигму програмування; 3. і MPI і PVM є бібліотеку програм; 4. і MPI і PVM забезпечують мобільність створюваних програм.
MPI і PVM мають наступні основні відмінності: 1. інтерфейс програміста PVM простіше, ніж такий же інтерфейс MPI; 2. PVM має кошти динамічного породження гілок (в стандарті MPI-2 така можливість також є); 3. в PVM можлива взаємодія додатків, запущених одним і тим же користувачем (в стандарті MPI-2 така можливість також є).