Читайте также:
|
|
Управління завданнями в PVM здійснюється на основі деякого набору функцій. Існує два варіанти написання паралельних завдань для PVM. У першому варіанті весь виконуваний на всіх процесорах код пишеться як одне велике завдання. Відповідно на кожному процесорі запускається на виконання один і той же файл. Зазвичай на самому початку своєї роботи програма викликає функцію call pvmfmytid (tid), повертає значення ідентифікатора завдання tid> = 0, яким може визначатися вибір для виконання тієї чи іншої частини програми. Ця функція може викликатися більше одного разу.
Після того, як завдання визначило, що воно головне, виконується запуск решти частин завдання на інших процесорах кластеру. Запуск виконується за допомогою функції:
call pvmfspawn (task, flag, where, ntask, tids, numt);
task - ім'я виконуваного файлу;
INTEGER flag - опції запуску;
where - вказує місце запуску;
INTEGER ntask - число запусщених копій програми;
INTEGER tids - масив значень tid для запущених завдань.
Ця функція запускає в PVM ntask копії виконуваного файлу з ім'ям "task" з однаковими аргументами командного рядка в масиві argv і повертає число запущених завдань numt а також послідовність ідентифікаторів для запущених завдань. Другий варіант написання паралельного завдання полягає в тому, що для кожного процесора пишуться свої власні завдання, що виконують різні дії, і створюється маленька програма, яка, використовуючи функцію pvm_spawn запускає всі інші завдання.
Виконуваний файл для функції pvm_spawn () повинен перебувати в строго визначеному каталозі. Під Unix завдання шукається в каталогах $PVM_ROOT/bin/$PVM_ARCH/ і $HOME/pvm3/bin/ $PVM_ARCH. Задавати ім'я каталогу в параметрі "task" неприпустимо.
Але це не єдиний спосіб. В іншому варіанті виконуваний файл шукається (і запускається) не тільки на тому комп'ютері, на якому працює викликане pvm_spawn () завдання, але в залежності від параметрів flag і where, на будь-якому вхідному до складу PVM. Наприклад, якщо flag == 0, то PVM сам вибирає, на якій з машин запускати нові завдання (головне, щоб додаток був скомпільовано на цих машинах); а якщо flag & PvmMppFront> 0, то місцем запуску буде обраний найшвидший комп'ютер.
Значенням параметра flag задається набір опцій для запускаючих завдань. Кожній опції відповідає ціле невід'ємне число, і значення flag дорівнює сумі обраних опцій. Нижче перераховуються опції запуску задач.
FORTRANe flag може бути сумою таких величин:
PVMDEFAULT = 0 - PVM може вибрати будь-яку машину для старту завдання,
PVMHOST = 1 - параметр where визначає машину для запуску,
PVMARCH = 2 - параметр where визначає тип архітектури,
PVMDEBUG = 4 - процес стартує під відгадчиком,
PVMTRACE = 8 - процес генерує PVM trace data.
Параметр where описує на яких комп'ютерах кластера може бути запущене завдання. Параметр є простою строковою змінною, в яку записано ім'я списку комп'ютерів. Списки комп'ютерів знаходяться у конфігураційних файлах системи PVM і формуються на етапі її установки. Наприклад у випадку, коли у вашому кластері крім консольної машини присутній ще два комп'ютери: один класу P166 та іншой класу P4, ви можете визначити їх в системі під іменами "oldcomp" і "supercomp". І залежно від тих або інших умов, запускати свої завдання на якусь з машин кластеру.
І, нарешті, ще дві функції, пов'язані з управлінням завданнями:
call pvmfkill (tid, info)
call pvmfexit (info)
Перша з них завершує виконання завдання з ідентифікатором tid, повертаючи при помилці код info <0. Відзначимо, що завдання не може таким чином завершити своє виконання. Друга функція завершує роботу PVM, запущеної користувачем, але при цьому сама задача продовжує виконуватися вже як звичайне локальне завдання і завершує роботу звичайним чином.
Дата добавления: 2015-01-05; просмотров: 125 | Поможем написать вашу работу | Нарушение авторских прав |