Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Mpdallexit

Маряна

Маряна

Маряна

Маряна

Маряна

Маряна

50. OpenMP – це стандарт для реалізації бібліотек, призначених для написання додатків, що працюють на загальному полі пам'яті (SMP, NUMA). Даний стандарт передбачає реалізацію розпаралелювання шляхом використовування POSIX-threads. На відміну від останнього, OpenMP передбачає інтерфейс як до С-, так і до FORTRAN-програм. Існують відкриті реалізації стандарту, наприклад, OdinMP. Стандарт багатопотокового програмування! Орієнтується на SMP.

Переваги ОМР:

1. Технологія є ефективнішою при створенні програми з великими паралельними циклами. Розробнику не потрібно створ. нову паралельну програму, а варто лише додати в текст послідовної програми ОpenMP директиви.

2. Зручний спосіб контролю виконання паралельної програми

3. ОpenMP програма на одноядерній платформі може виконуватися як послідовна.

Директиви просто ігноруються на етапі компіляції, аое при потребі можу бути перекомпілюована в паралельну.

4. Підтримка orphan(відірвані директиви), тобто директиви синхронізації і розподілу роботи можуть не входити бузпосередньо в лексичний контекст паралельної області програми.

Gcc,! gomp- бібліотека

Gcc –fopenmp hello.c –o hello

51Директива parallel

Паралельна область задається за допомогою директиви parallel (parallel

... end parallel).

Сі:

#pragma omp parallel [опція[[,] опція]...]

Можливі опції:

· if(умова) – виконання паралельної області по умові. Входження в паралельну область здійснюється тільки при виконанні

деякої умови. Якщо умова не виконана, то директива не спрацьовує і продовжується обробка програми в колишньому режимі;

· num_threads (цілочисельний вираз) – явне завдання кількості ниток, які виконуватимуть паралельну область; за умовчанням вибирається останнє значення, встановлене за допомогою функції omp_set_num_threads(), або значення змінної

OMP_NUM_THREADS;

default(private|firstprivate|shared|none) – всім змінним в

паралельній області, яким явно не призначений клас, буде призначений клас private, firstprivate або shared відповідно; none означає, що всім змінним в паралельній області клас повинен бути призначений явно; у мові Сі задаються тільки варіанти shared або none;

· private(список) – задає список змінних, для яких породжується локальна копія в кожній нитці; початкове значення локальних

копій змінних із списку не визначено;

firstprivate(список) – задає список змінних, для яких породжується локальна копія в кожній нитці; локальні копії змінних ініціалізувалися значеннями цих змінних в нитці-майстрові;

· shared(список) – задає список змінних, загальних для всіх ниток;

· copyin(список) – задає список змінних, оголошених як

threadprivate, які при вході в паралельну область ініціалізувалися значеннями відповідних змінних в нитці-майстрові;

· reduction(оператор:список) – задає оператора і список загальних змінних;

52 ----

53. num_threads ( цілочисельне вираження ) - явне задання кількості ниток, які виконуватимуть паралельну область; по замовчуванні вибирається останнє значення, встановлене за допомогою функції omp_set_num_threads(), або значення змінної OMP_NUM_THREADS;

За допомогою функцій omp_get_thread_num() і omp_get_num_threads() нитка може взнати свій номер і загальне число ниток, а потім виконувати свою частину роботи залежно від свого номера (цей підхід широко використовується в програмах на базі інтерфейсу MPI).

54. ----

55. Навести конструкції технології OpenMP на мові С для керування паралельними секціями.

#pragma omp parallel sections

{#pragma omp section

f1();

…#pragma omp section

f2();}

sections використовується тоді коли необхідно блоки коду виконувати в окремих потоках.

sections оголошує цілу ділянку секцій, а кожна окрема секція за допомогою директиви section. Кожний section – це окремий потік.

При вході в паралельну область породжуються нові OMP_NUM_THREADS-1 ниток, кожна нитка отримує свій унікальний номер, причому що породжує нитка отримує номер 0 і стає основною ниткою групи («майстром»). Решта нитки отримують в якості номера цілі числа з 1 до OMP_NUM_THREADS-1. Кількість ниток, що виконують цю паралельну область, залишається незмінним до моменту виходу з області. При виході з паралельної області виробляється неявна синхронізація та видаляються всі нитки, крім породженої.
56. Навести конструкції технології OpenMP на мові С для керування роботою процесів у критичних секціях, бар'єрами.

Критичні секції є невід’ємним етапом виконання програми. При виявлені критичної секції потік призупиняється і очікує її звільнення зокрема це може трапитись при виконанні циклів а також може виникати задача коли всі потоки в певний момент часу планово мають з’явитися в певній секції це називається бар’єром в такому випадку всі потоки зупиняються до того часу поки всі інші не з’являються в даному бар’єрі. Він є методом синхронізації в OpenMP.

For (int i=0; i<5000; i++) {…}

#pragma omp fpr nowait

For (int j=0; j<1000; j++) {…}

#pragma mop barrier

Nowait – відключає синхронізацію

Barrier призупиняє виконання всіх потоків які вже звільнилися до моменту звільнення всіх інших.

#pragma omp for critical {…}

Critical вказує на те що поки в відповідному фрагменті є хоча б один потік інші ввійти в дану секцію не можуть. Це є неіменована критична секція.

Critical(same val) –іменована критична секція

57. Охарактеризувати технологію PVM.

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

58 Проаналізувати можливість використання технології OpenMP, MPI та MPI/OPENMP на архітектурах MPP, SMP та кластерній

OpenMP і MPI - це бібліотека, яка підтримує паралельне програмування в багатопроцесорних системах зі спільною пам'яттю. Вона розроблена однойменним консорціумом з метою отримання стандартного інтерфейсу програмування для паралельних комп'ютерів із загальною пам'яттю, що може використовуватися основними мовами програмування, такими як ФОРТРАН, C, і C + +. OpenMP дозволяє паралельне виконання коду (паралельні опрератори циклу), визначення загальних даних (тип SHARED) і синхронізацію процесів.

Комбінація, OpenMP і MPI в межах однієї програми для отримання Кламп і середовища Грід рассмотрівалісь багатьма дослідницькими групами раніше. Перше питання в цих прикладних системах - питання про те, хто управляє. OpenMP - по суті багатопотокова модель програмування. Отже, OpenMP поверх MPI зажадає від MPI безпеки потоків або явного управління доступом до бібліотеки MPI, яка поверх OpenMP може вимагати додаткової синхронізації і обмежувати ступінь паралелізму, яку OpenMP може реалізувати. Який підхід реально виявиться краще зазвичай залежить від програми.

OpenMP реалзується за допомогою архітектури SMP, а MPI із MPP. На кластерній архітектурі може використовуватись коли стоїть багато машин багатоядерних, причому одні процеси виконуються в рамках одної машини, а ігші в межах інших машин, а в результаті взаємодіють між собою.

59 Охарактеризувати високодоступні кластери

Кластер – це декілька компютерів які обєднані високошвидкісними каналами звязку та орієнтовані на розвязання однієї задачі. Високодоступні кластери (HA) використовуєтсья для обслуговування відповідних веб серверів, білянгових систем, керування певними виробництвами. Характеризується великою витримкою нагрузки, забезпеченням часу виклику на запит, центральним вводом-виводом.

60 Охарактеризувати високопродуктивні кластери

Кластер – це декілька компютерів які обєднані високошвидкісними каналами звязку та орієнтовані на розвязання однієї задачі. Високопродуктивні кластери (HPC) основна їх задача – висока швидкість обрахунків, наприклад: задаічі криптоаналізу, задачі моделювання клімату.. Складається з одного керуючого вузла (master node) і безлічі обчислювальних вузлів (compute nodes), об'єднаних між собою високошвидкісний мережею.

61. Які є базові операції RPC?

Щоб зрозуміти роботу RPC, розглянемо спочатку виконання виклику локальної процедури у звичайній машині, що працює автономно. Нехай це, наприклад, буде системний виклик count=read (fd,buf,nbytes);

де fd - ціле число,

buf - масив символів,

nbytes - ціле число.

Щоб здійснити виклик, що викликає процедура заштовхує параметри в стек у зворотному порядку (малюнок 3.1). Після того, як виклик read виконаний, він поміщає повертає значение, що, у регістр, переміщає адреса повернення й повертає керування викликаючій процедурі, що вибирає параметри зі стека, повертаючи його у вихідний стан. Помітимо, що в мові С параметри можуть викликатися або по посиланню (by name), або за значенням (by value). Стосовно викликуваної процедури параметра-значення є ініціалізованими локальними змінними. Викликувана процедура може змінити їх, і це не вплине на значення оригіналів цих змінних у зухвалій процедурі.

Якщо у викликувану процедуру передається вказівник на змінну, то зміна значення цією змінною викликуваною процедурою тягне зміну значення цієї змінної й для викликаючої процедури. Цей факт досить суттєвий для RPC.

Існує також інший механізм передачі параметрів, що не використається в мові С. Він називається call-by-copy/restore і складається в необхідності копіювання викликаючою програмою змінних у стек у вигляді значень, а потім копіювання назад після виконання виклику поверх оригінальних значень викликаючої процедури.

Ідея, покладена в основу RPC, полягає в тому, щоб зробити виклик віддаленої процедури Іншими словами - зробити RPC прозорим: викликаючій процедурі не потрібно знати, що викликувана процедура перебуває на іншій машині, і навпаки.

RPC досягає прозорості наступним шляхом. Коли викликувана процедура дійсно є віддаленою у бібліотеку переноситься, замість локальної процедури, інша версія процедури, називана клієнтським стабом (stub - заглушка).

62.Які є етапи виконання RPC.

1. Виклик стаба

2. Підготувати буфер

3. Упакувати параметри

4. Заповнити поле заголовка

5. Обчислити контрольну суму в повідомленні

6. Переривання до ядра

7. Черга пакета на виконання

8. Передача повідомлення контролеру по шині QBUS

9. Час передачі по мережі Ethernet

10. Одержати пакет від контролера

11. Процедура обробки переривання

12. Обчислення контрольної суми

13. Перемикання контексту в простір користувача

14. Виконання серверного стаба

63.Навести основні етапи розробки паралельних алгоритмів.

Процес розробки паралельних алгоритмів можна розбити на такі складові:

· декомпозиція (аналіз задачі, оцінка можливості її розпаралелювання, розбиття на підзадачі та фрагменти структур даних);

· проектування обміну даними між задачами (визначення комунікацій необхідних для пересилання вихідних даних та результатів виконання підзадач);

· об’єднання підзадач (згортка з метою виконування більш великих блоків, підвищення ефективності алгоритму його трансформація та оптимізація);

· планування обчислень (розподіл задач між вузлами кластера з метою їх ефективного використання та мінімізації накладних витрат часу на обмін даними).

64. ---

65.Навести і описати паралельні методи множення матриць.

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

#include <stdio.h>

#include <omp.h>

#define N 4096

double а[N][N], b[N][N], з[N][N];


Дата добавления: 2015-08-18; просмотров: 71 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Закон Амдала| Int main()

mybiblioteka.su - 2015-2024 год. (0.013 сек.)