- •1. Назвати основні сфери застосування високопродуктивних систем опрацювання даних і коротко їх охарактеризувати.
- •2. Навести класифікацію обчислювальних систем згідно з м.Флінном.
- •3. Навести основні архітектури високопродуктивних систем опрацювання даних.
- •4.Архітектура мрр
- •5.Архітекттура smp
- •7. Охарактерізуваті архітектуру numa.
- •8. Охарактеризувати кластерні системи.
- •9. Охарактерізуваті архітектуру grid.
- •10.Навести переваги використання багатоядерних процесорних систем у порівнянні з багатопроцесорними системами.
- •11. Навести переваги використання спеціалізованих графічних процесорів (gpu) у порівнянні з центральними процесорами (cpu) комп'ютерних систем для високопродуктивних обчислень.
- •12.Як визначається час виконання паралельного алгоритму?
- •13. Мінімальний можливий час виконання паралельного алгоритму визначається довжиною максимального шляху обчислювальної схеми алгоритму:
- •14. Основною характеристикою алгоритму, визначальною ефективність його виконання на багатопроцесорній системі є його ступінь паралелізму.
- •16.Закон Амдала
- •17.Закон Густавсона – Барсиса
- •20. Навести та охарактеризувати основні типи апаратних комунікаційних інтерфейсів для організації високопродуктивних систем опрацювання даних.
- •22.Охарактеризувати спеціалізований комунікаційний інтерфейс Myrinet
- •23.Охарактеризувати комунікаційний інтерфейс Gigabit Ethernet.
- •25 Охарактеризувати принципи роботи технології виклику віддалених процедур, методів, обєктів
- •26 Дати означення терміну маршалізація даних при виклику віддалених процедур
- •27 Дати означення терміну серіалізація обєктів
- •28. Пояснити причини використання клієнтської та серверної заглушок (stub) при написанні програм виклику віддалених процедур та методів.
- •29. Навести основні проблеми, які виникають при використанні технологій виклику віддалених процедур, методів, об'єктів.
- •30. Охарактеризувати технологію rpc.
- •31.Архітектура rmi.
- •1.Rmi (англ. Remote Method Invocation) - програмний інтерфейс виклику видалених методів в мові Java.
- •34. Охарактерізуваті технологію dcom
- •35. Проаналізувати використання программ з багатьма підпроцесами для організації високопродуктивних систем опрацювання даних.
- •36.Дати означення термінам семафор, м'ютекс, критична секція.
- •37.Навести основні проблеми, які виникають при використанні програм з багатьма підпроцесами, зокрема гонка процесів, вхід/вихід з критичних секцій, синхронізація підпроцесів.
- •38.Проаналізувати використання програм зі з'єднанням на основі сокетів для організації високопродуктивних систем опрацювання даних.
- •39.Дати означення терміну сокет, мережевий сокет, unix-сокет.
- •42. Навести приклад найпростішої програми на мові с з використанням технології mpi, яка виводить прізвище студента
- •43 Описати процес компіляції і виконання програми засобами середовища OpenMpi та компілятора gcc.
- •51Директива parallel
- •57. Охарактеризувати технологію pvm.
- •58 Проаналізувати можливість використання технології OpenMp, mpi та mpi/openmp на архітектурах mpp, smp та кластерній
- •59 Охарактеризувати високодоступні кластери
- •60 Охарактеризувати високопродуктивні кластери
- •61. Які є базові операції rpc?
- •62.Які є етапи виконання rpc.
- •63.Навести основні етапи розробки паралельних алгоритмів.
- •65.Навести і описати паралельні методи множення матриць.
- •66. Навести і описати паралельні методи розв'язку систем лінійних рівнянь.
- •67. Навести і описати паралельні методи сортування.
- •69.Навести і описати паралельні методи розв'язання диференціальних рівнянь у частинних похідних.
- •71. У вихідному коді програми на мові с вставити пропущені виклики процедур підключення мрі, визначення кількості процесів і рангу процесів.
- •72. Програма, яка виводить «Hello Word from process I for n».
- •73. Програма генерації чисел в одному процесі і сумування їх у іншому процесі і надсилення результату в перший процес.
- •88. Написати програму з використанням бібліотеки Posix threads на мові с з метою тестування роботи кластера під керуванням OpenMosix. Тестування провести з замірами часу.
42. Навести приклад найпростішої програми на мові с з використанням технології mpi, яка виводить прізвище студента
#include “mpi.h”
main (int argc, char ** argv)
{ int rank, size;
MPI_Status status;
MPI_Init (&argc, argv);
MPI_Comm_size (MPI_COMM_WORLD, & size);
MPI_Comm_rank(MPI_COMM_WORLD, & rank);
Printf (“……………….. in roces №%d,” rank);
MPI_Finalize ();
}
43 Описати процес компіляції і виконання програми засобами середовища OpenMpi та компілятора gcc.
Демон- программа, яка запускається на кожній машині, для звязку. Щоб запустити паралельну програму на МРІ : запускають демони;
Mpiexec [ключі]–n_програма
Для компіляції програми потрібно ввести команду:
mpicc program.c –o program –для С
mpiхх program.c –o program –для С++
При умові успішної компіляції, запустити програму командою:
mpirun –np X program
де X – кількість процесів вказана у завданні.
Запуск демонов
mpdboot –n число_демонов [ключи]
Запуск параллельной программы
mpiexec [ключи] –n число имя_исполняемого файла
Завершение работы всех демонов
Mpdallexit
44-маряна
45-маряна
46-маряна
47-маряна
48-маряна
49-маряна
50. OpenMP – це стандарт для реалізації бібліотек, призначених для написання додатків, що працюють на загальному полі пам'яті (SMP, NUMA). Даний стандарт передбачає реалізацію розпаралелювання шляхом використовування POSIX-threads. На відміну від останнього, OpenMP передбачає інтерфейс як до С-, так і до FORTRAN-програм. Існують відкриті реалізації стандарту, наприклад, OdinMP. Стандарт багатопотокового програмування! Орієнтується на SMP.
Переваги ОМР :
Технологія є ефективнішою при створенні програми з великими паралельними циклами. Розробнику не потрібно створ. нову паралельну програму, а варто лише додати в текст послідовної програми ОpenMP директиви.
Зручний спосіб контролю виконання паралельної програми
ОpenMP програма на одноядерній платформі може виконуватися як послідовна.
Директиви просто ігноруються на етапі компіляції, аое при потребі можу бути перекомпілюована в паралельну.
Підтримка 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) –іменована критична секція