- •Екзаменаційний білет №21
- •Функції маршрутизації даних.
- •2 Векторний спосіб конструювання похідних типів даних.
- •Екзаменаційний білет №22
- •Системи із змінним часом звертання до пам’яті
- •Індексний спосіб конструювання похідних типів даних.
- •Конструювання типу.
- •Реєстрація типу.
- •Екзаменаційний білет №23
- •Порівняння кластерів та smp-систем.
- •Структурний спосіб конструювання похідних типів даних.
- •1.Конструювання типу.
- •2.Реєстрація типу.
- •Екзаменаційний білет №24
- •Системи із змінним часом звертання до пам’яті
- •Конструювання типу.
- •Реєстрація типу.
- •Екзаменаційний білет №25
- •Формування повідомлень за допомогою упакування і розпакування даних.
Індексний спосіб конструювання похідних типів даних.
Похідні типи даних створюються під час виконання програми, а не при компіляції. Створення типа виконується за два кроки:
Конструювання типу.
Реєстрація типу.
Похідні типи створюються за допомогою спеціальних функцій-конструкторов. Кожен такий тип задається набором базових типів та значеннь зсувів. Зсуви обчислюються від початки буферу та визначають ті елементи, що будуть приймати участь в операціях обміну. При цьому зсуви можуть приймати навіть негативні значення. Також зсуви можуть бути неупорядковані. Послідовність пар (тип, зсув) називають картою типу.
Індексним способом новий похідний тип створюється як набір блоків різного розміру з елементів вихідного (початкового) типу, при цьому між блоками можуть бути різні проміжки у пам’яті.
int MPI_Type_indexed(int count,int blocklens[],int indices[],MPI_Data_type oldtype,MPI_Datatype *newtype),
Якщо інтервали між блоками задаються в байтах, а не в елементах вихідного (початкового) типу даних, слід використовувати функцію: int MPI_Type_hindexed( int count, int blocklens[], MPI_Aint
indices[],MPI_Data_type oldtype,MPI_Datatype *newtype);
Екзаменаційний білет №23
Порівняння кластерів та smp-систем.
І кластери, і SMP-системи мають можливість розпаралелювання навантаження і розподілу його між багатьма процесорами і, таким чином, можуть забезпечити ефективне виконання особливо складних додатків. Системи і того й іншого класу присутні на комп'ютерному ринку.
Основна перевага SMP-систем у тому, що їх легше обслуговувати й експлуатувати, ніж кластери. SMP-системи по своїй суті набагато ближчі до звичних однопроцесорних систем, для яких розроблена переважна більшість існуючих додатків. Принципова зміна при переході від однопроцесорних систем до SMP-систем – впровадження функції планування. Інша перевага SMP-систем у порівнянні з кластерами – менші фізичні розміри і споживана потужність. Не слід забувати і те, що SMP-системи вже досить вкоренилися на практиці і їхнє виробництво добре налагоджено.
Але в групі високопродуктивних серверних систем кластери мають певну перевагу перед SMP-системами. Це зв'язано в першу чергу з можливістю нарощування структури комплексу вже в період його експлуатації і більш високою надійністю.
Структурний спосіб конструювання похідних типів даних.
Похідні типи даних створюються під час виконання програми, а не при компіляції.
Створення типа виконується за два кроки:
1.Конструювання типу.
2.Реєстрація типу.
Похідні типи створюються за допомогою спеціальних функцій-конструкторів. Кожен такий тип задається набором базових типів та значеннь зсувів. Зсуви обчислюються від початки буферу та визначають ті елементи, що будуть приймати участь в операціях обміну. При цьому зсуви можуть приймати навіть негативні значення. Також зсуви можуть бути неупорядковані. Послідовність пар (тип, зсув) називають картою типу.
Після створення типу його необхідно зареєструвати за допомогою функції MPI_Type_commit:
int MPI_Type_commit (MPI_Datatype * datatype)
Найбільш універсальним констуркторои похідних типів даних є функція MPI_Type_struct:
int MPI_Type_struct (і n t count, int blocklens[],
MPI_Aint indices [] , MPI_Datatype old_types[], MPI_Datatype *newtype )
Нижче наведено опис параметрів функції:
count — кількість блоків (базових типів) в новому типі (також кількість елементів
масивів blocklens, indices, old_types); blocklens — масив, i-й елемент якого містить кількість елементів i-го блоку; indices — зсув в байтах кожного блоку; old_types — тип елементів кожного блоку; newtype — ідентифікатор нового типу даних.
Якщо в якості повідомлень будуть застосовуватись масиви нового типу, що створю- ються, то в масиві old_types останнім елементом має бути MPI_UB.