Восток Маркетинг


Статьи

система ПВМ

ПВМ (паралельна віртуальна машина) - це побічний продукт просування гетерогенних мережевих дослідницьких проектів, розповсюджуваний авторами і інститутами, в яких вони працюють. Головною метою цього проекту є дослідження проблематики і розробка рішень в області гетерогенних паралельних обчислень. ПВМ являє собою набір програмних засобів і бібліотек, які емулюють общецелевого, гнучкі, гетерогенні обчислювальні структури для паралелізму у взаємозалежних комп'ютерах з різними архітектурами. Головною ж метою системи ПВМ є забезпечення можливості використання групи комп'ютерів спільно для взаємопов'язаних або паралельних обчислень. Детальний опис і обговорення концепції, логіки, методології, пов'язані з цим базуються на використанні мереж обчислювальним процесом описані у відповідних розділах лекції. Якщо коротко, постулати, взяті за основу для ПВМ, такі:

  1. Конфігурується користувачем пул хостів: обчислювальні завдання програми виконуються із залученням набору машин, які вибираються користувачем для даної програми ПЗМ. Як однопроцесорні машини, так і апаратне забезпечення мультипроцессоров (включаючи комп'ютери з розділяється і розподіленою пам'яттю) можуть бути складовою частиною пулу хостів. Пул хостів може змінюватися додаванням і видаленням машин в процесі роботи (важлива можливість для підтримки рівня помилок).
  2. Прозорість доступу до обладнання: прикладні програми можуть "бачити" апаратне середовище як групу віртуальних обчислювальних елементів без атрибутів або можуть за вибором експлуатувати можливості специфічних машин з пулу хостів шляхом "переміщення" певних рахункових задач на найбільш підходящі для їх вирішення комп'ютери.
  3. Обчислення, вироблені з допомогою процесів: одиницею паралелізму в ПВМ є завдання (часто, але не завжди збігається з процесом в системі UNIX) - незалежний послідовний потік управління, який може бути комунікаційним або обчислювальним. ПВМ не має на увазі і не нав'язує карти зв'язків процесів; специфічно, що складові завдання можуть виконуватися на одному процесорі.
  4. Модель явного обміну повідомленнями: групи обчислювальних задач, кожна з яких виконує частину "навантаження" додатка - використовується декомпозиція за даними, функцій або гібридна, взаємодіють, явно посилаючи повідомлення один одному і приймаючи їх. Довжина повідомлення обмежена тільки розміром вільної пам'яті.
  5. Підтримка гетерогенності: система ПВМ підтримує гетерогенність в сенсі машин, мереж і додатків. Відносно механізму обміну повідомленнями, ПВМ допускає повідомлення, що містять дані більш ніж одного типу, для обміну між машинами з різним поданням даних.
  6. Підтримка мультипроцессоров: ПВМ використовує оригінальні можливості обміну повідомленнями для мультипроцессоров з метою отримання вигоди від використання базового обладнання. Виробники часто підтримують власні, оптимізовані для своїх систем ПВМ, які стають комунікаційними в загальній версії ПВМ.

Система ПВМ складається з двох частин.

Перша частина - це демон під назвою pvmd3 - часто скорочується як pvmd, який поміщається на всі комп'ютери, що створюють віртуальну машину. (Прикладом програми-демона може бути поштова програма, яка виконується в фоновому режимі і обробляє всю вхідну і вихідну електронну пошту комп'ютера.) Pvmd3 розроблений таким чином, щоб будь-який користувач з достовірним логіном міг інсталювати цей демон на машину. Коли користувач бажає запустити додаток ПВМ, він перш за все створює віртуальну машину, запускаючи ПВМ. Після цього додаток ПВМ може бути запущено з будь-якого UNIX-терміналу на будь-якому з хостів. Кілька користувачів можуть конфігурувати перекриваються віртуальні машини, кожен користувач може послідовно запустити кілька додатків ПВМ.

Друга частина системи - це бібліотека підпрограм інтерфейсу ПВМ. Вона містить функціонально повний набір примітивів, які необхідні для взаємодії між завданнями програми. Ця бібліотека містить викликаються користувачем підпрограми для обміну повідомленнями, породження процесів, координації завдань і модифікації віртуальної машини.

Обчислювальна модель ПВМ базується на припущенні про те, що програма містить кілька завдань. Кожне завдання відповідальна за частину обчислювального навантаження програми. Іноді додаток распараллеливается за функціональним принципом, тобто кожна задача виконує свою функцію, наприклад: введення, породження, рахунок, висновок, відображення. Такий процес часто визначають як функціональний паралелізм. Більш часто зустрічається метод паралелізму додатків, званий паралелізмом обробки даних. В цьому випадку всі завдання однакові, але кожна з них має доступ і оперує лише над невеликою частиною загальних даних. Схожа ситуація в обчислювальної моделі ОКМД (одна команда, безліч даних). ПВМ підтримує будь-який з перерахованих методів окремо або в комплексі. Залежно від своїх функцій завдання можуть виконуватися паралельно і потребуватиме синхронізації або обміні даними, хоча це відбувається не у всіх випадках. Діаграма обчислювальної моделі ПВМ показана на рис. 81, а архітектурний вигляд системи ПВМ, з виділенням гетерогенності обчислювальних платформ, підтримуваних ПВМ, показаний на рис. 82.

У поточний момент часу ПВМ підтримує мови програмування C, C ++ і Fortran . Цей набір мовних інтерфейсів узятий за основу в зв'язку з наглядом про те, що переважна більшість цільових програм написані на C і Fortran , Але спостерігається тенденція експериментування з об'єктно-орієнтованими мовами і методологіями.

Прив'язка мов C і C ++ до призначеного для користувача інтерфейсу ПВМ реалізована у вигляді функцій, таких загальноприйнятим підходам, використовуваною більшістю C-систем, включаючи UNIX-подібні операційні системи. Уточнимо, що аргументи функції - це, як правило, комбінація числових параметрів і покажчиків, а вихідні значення відображають відображають результат роботи виклику. На додаток до цього, використовуються макроозначення для системних констант і глобальні змінні, такі як errno і pvm_errno - служать для точного визначення результату в числі можливих. Прикладні програми, написані на C і C ++, отримують доступ до функцій бібліотеки ПВМ шляхом прілінковкі до них архівної бібліотеки (libpvm3.a) - це частина стандартного дистрибутива.

Прив'язка до мови Fortran реалізована швидше у вигляді підпрограм, ніж у вигляді функцій. Такий підхід застосований з тієї причини, що деякі компілятори для підтримуваних архітектур не змогли б достовірно реалізувати інтерфейс між C- і Fortran-функціями. Безпосереднім наслідком з цього є те, що для кожного виклику бібліотеки ПВМ вводиться додатковий аргумент - для повернення результуючого статусу в викликала його програму. Також уніфіковані бібліотечні підпрограми для розміщення введених даних в буфери повідомлення і їх відновлення, вони мають додатковий параметр для відображення типу даних. Крім цих відмінностей (і різниці в стандартних префіксах при іменуванні: pvm_ - для C і pvmf_ - для FOTRAN), можлива взаємодія "один з одним" між двома мовними прив'язками. Інтерфейси ПВМ на Fortran реалізовані у вигляді бібліотечних надбудов, які в свою чергу, після розбору і / або визначення складу аргументів викликають потрібні C-підпрограми. Так, Fortran-додатки вимагають прілінковкі бібліотеки-надбудови (libfpvm3.a) на додаток до C-бібліотеці.

Мал. 81. Обчислювальна модель ПВМ

Всі завдання ПВМ ідентифікуються за допомогою цілочисельного "ідентифікатора завдання" (task identifier - TID). Повідомлення передаються і приймаються за допомогою ідентифікаторів задач. Тому ці ідентифікатори повинні бути унікальними в межах внутрішньої віртуальної машини - що підтримується локальним pvmd і прозоро для користувача. Хоча ПВМ кодує інформацію в кожному TID, користувач схильний трактувати ідентифікатори завдань як приховані цілочисельні ідентифікатори. ПВМ містить кілька підпрограм, які повертають значення в TID, тим самим, даючи можливість для користувача додатком ідентифікувати інші завдання в системі.

Існують додатки, при розгляді яких природно подумати про "групу завдань". А також випадки, коли користувачеві було б зручно визначати свої завдання за номерами: 0 - (p-1), де p - кількість завдань. ПВМ підтримує концепцію іменуються користувачем груп. При цьому завдання полягає в групі і їй поставлений у відповідність "випадковий" номер в цій групі. Випадкові номера стартують з 0 і зростають. У відповідність філософії ПВМ, групові функції розробляються таким чином, щоб вони були дуже узагальненими і зрозумілими для користувача. Наприклад, будь-яке завдання ПВМ може увійти до складу будь-якої групи або покинути її в довільний момент часу без необхідності інформувати про це кожну задачу в даній групі. Крім того, групи можуть перекриватися, а завдання можуть розсилати широкомовні повідомлення, адресовані тим групам, в яких вони не перебувають. Для використання будь-якої з групових функцій до програми повинна бути прілінкованние libgpvm3.a.

Загальна парадигма для програмування додатків за допомогою ПВМ описана нижче. Користувач пише одну або більше послідовних програм на C, C ++ або Fortran 77, в які вбудовані виклики бібліотеки ПВМ. Кожна програма породжує задачу, і реалізовує програму. Ці програми компілюються за правилами кожної архітектури в пулі хостів, і в результаті виходять об'єктні файли, що поміщаються по місцях, доступним на машинах в пулі хостів. Для виконання програми користувач зазвичай запускає одну копію завдання (зазвичай це "ведуча" або "ініціює" завдання) вручну на машині з пулу хостів. Цей процес послідовно породжує інші завдання ПВМ; в кінцевому рахунку виходить група активних завдань, що оперують локально і обмінюються повідомленнями один з одним для вирішення проблеми. Зверніть увагу на те, що вище наведено типовий сценарій, але вручну можна запускати стільки завдань, скільки потрібно. Як уже згадувалося вище, завдання взаємодіють шляхом прямого обміну повідомленнями з ідентифікацією певними системою, прихованими TID.

Як уже згадувалося вище, завдання взаємодіють шляхом прямого обміну повідомленнями з ідентифікацією певними системою, прихованими TID

Мал. 82. Огляд архітектури ПВМ

Нижче наведена програма ПВМ hello - простий приклад, який ілюструє базову концепцію програмування ПВМ. Ця програма розглядається як запускається вручну; після виведення на екран свого ідентифікатора завдання (отриманого за допомогою pvm_mytid ()) вона породжує копію іншої програми під назвою hello_other, використовуючи функцію pvm_spawn (). Успішне породження змушує програму виконати блокуючий прийом за допомогою pvm_recv (). Після прийому повідомлення програма виводить на екран повідомлення, надіслане їй її абонентом - також як і свій ідентифікатор завдання; вміст буфера витягується з повідомлення застосуванням pvm_upsksrt (). Заключний виклик pvm_exit "виводить" програму з системи ПВМ.

#include "pvm3.h"

main ()

{

int cc, tid, msgtag;

char buf [100];

printf ( "Це програма t% x \ n", pvm_mytid ());

cc = pvm_spawn ( "hello_other", (char **) 0, 0, "", 1, & tid);

if (cc == 1) {

msgtag = 1;

pvm_recv (tid, msgtag);

pvm_upkstr (buf);

printf ( "Висновок з t% x:% s \ n", tid, buf);

} else

printf ( "Не вдалося запустити hello_other \ n");

pvm_exit ();

}

Нижче наведено лістинг "веде" або породжується програми; її першою дією в ПВМ є отримання ідентифікатора "провідною" завдання застосуванням виклику pvm_parent (). Потім ця програма отримує власне ім'я хоста і передає його провідною, використовуючи послідовність з трьох викликів: pvm_initsend () - для ініціалізації буфера передачі; pvm_pkstr () - для розміщення рядка, навмисно введеної в архітектурно незалежному стилі, в буфері передачі; і pvm_send () - для її пересилки в запитувач процес, який визначається за допомогою ptid, і маркування повідомлення числом 1. #include "pvm3.h"

main ()

{

int ptid, msgtag;

char buf [100];

ptid = pvm_parent ();

strcopy (buf, "hello, world from");

msgtag = 1;

gethostname (buf + strlen (buf), 64);

msgtag = 1;

pvm_initsend (PvmDataDefault);

pvm_pkstr (buf);

pvm_send (ptid, msgtag);

pvm_exit ();

}


Чи знаєте Ви, що модель - це така подумки представимо або реально існуюча система, яка на певному етапі досліджень заміщає реальний об'єкт і зберігає одне або декілька найбільш важливих властивостей об'єкта, спрощене подобу реального об'єкта, що використовується для його дослідження.

НОВИНИ ФОРУМУ НОВИНИ ФОРУМУ   Лицарі теорії ефіру 13
Лицарі теорії ефіру 13.06.2019 - 5:11: ЕКОЛОГІЯ - Ecology -> ПРОБЛЕМА ГЛОБАЛЬНОЇ ЗАГИБЕЛІ бджіл ТА ІНШИХ запилювачів РОСЛИН - Карім_Хайдаров.
12.06.2019 - 9:05: ВІЙНА, ПОЛІТИКА І НАУКА - War, Politics and Science -> Проблема державного тероризму - Карім_Хайдаров.
11.06.2019 - 18:05: ЕКСПЕРИМЕНТАЛЬНА ФІЗИКА - Experimental Physics -> Експерименти Серлі і його послідовників з магнітами - Карім_Хайдаров.
11.06.2019 - 18:03: ВИХОВАННЯ, ОСВІТА, ОСВІТА - Upbringing, Inlightening, Education -> Просвітництво від Андрія Маклакова - Карім_Хайдаров.
11.06.2019 - 13:23: ВИХОВАННЯ, ОСВІТА, ОСВІТА - Upbringing, Inlightening, Education -> Просвітництво від В'ячеслава Осієвського - Карім_Хайдаров.
11.06.2019 - 13:18: ВИХОВАННЯ, ОСВІТА, ОСВІТА - Upbringing, Inlightening, Education -> Просвітництво від Світлани Віслобоковой - Карім_Хайдаров.
11.06.2019 - 6:28: Астрофізики - Astrophysics -> До 110 річчя Тунгускою катастрофи - Карім_Хайдаров.
10.06.2019 - 21:23: ВИХОВАННЯ, ОСВІТА, ОСВІТА - Upbringing, Inlightening, Education -> Просвітництво від Володимира Васильовича Квачкова - Карім_Хайдаров.
10.06.2019 - 19:27: СОВІСТЬ - Conscience -> Вищий розум - Карім_Хайдаров.
10.06.2019 - 19:24: ВІЙНА, ПОЛІТИКА І НАУКА - War, Politics and Science -> ЗА НАМИ страви - Карім_Хайдаров.
10.06.2019 - 19:14: СОВІСТЬ - Conscience -> РОСІЙСЬКИЙ СВІТ - Карім_Хайдаров.
10.06.2019 - 8:40: ЕКОНОМІКА І ФІНАНСИ - Economy and Finances -> КОЛЛАПС СВІТОВОЇ ФІНАНСОВОЇ СИСТЕМИ - Карім_Хайдаров.

Новости

также можем предложить:
печать бланков и прайс-листов | печать визитных карточек (визиток)
изготовление папок и меню | изготовление блокнотов
печать листовок

Связаться с менеджером для оформления заказа:
тел.: +38 (062) 349-56-15, 348-62-20
моб.: +38 (095) 811-22-62, +38 (093) 665-38-06,
+38 (067) 17 44 103
факс: +38 (062) 332-28-98
e-mail: [email protected]
г. Донецк, ул. Артема, 41

   2010 © Восток Маркетинг Яндекс.Метрика