Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bilety_21-25.doc
Скачиваний:
4
Добавлен:
21.09.2019
Размер:
75.78 Кб
Скачать

Екзаменаційний білет №25

          1. Порівняння кластерів та SMP-систем

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

Основна перевага SMP-систем у тому, що їх легше обслуговувати й експлуатувати, ніж кластери. SMP-системи по своїй суті набагато ближчі до звичних однопроцесорних систем, для яких розроблена переважна більшість існуючих додатків. Принципова зміна при переході від однопроцесорних систем до SMP-систем – впровадження функції планування. Інша перевага SMP-систем у порівнянні з кластерами – менші фізичні розміри і споживана потужність. Не слід забувати і те, що SMP-системи вже досить вкоренилися на практиці і їхнє виробництво добре налагоджено.

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

    1. Формування повідомлень за допомогою упакування і розпакування даних.

Для використання даного підходу слід визначити буфер пам’яті достатнього розміру для збірки повідомлення. Дані, що входять до складу повідомлення повинні бути упаковані до буферу з використанням функції:

int MPI_Pack(void *data , int count , MPI_Datatype type , void *buf , int bufsize , int *bufpos , MPI_Comm comm ) ,

- data - буфер пам’яті з елементами для упаковки; - count - кількість елементів в буфері; - type - тип даних для елементів, що упаковуються; - buf - буфер пам’яті для упаковки; - bufsize - розмір буфера в пам’яті; - bufpos - позиція для початку запису в буфер (в байтах від початку буфера); - comm - комунікатор для упакованого повідомлення.

Функція MPI_Pack упаковує count елементів з буфера data до буфера упаковки buf, починаючи з позиції bufpos.

Для визначення необхідного розміру буфера для упаковки можна застосувати функцію:

int MPI_Pack_size(int count , MPI_Datatype type , MPI_Comm comm, int *size) ,

де - count - кількість елементів в буфері; - type - тип даних для упаковки елементів; - comm - комунікатор для упакованого повідомлення; - size - розрахований розмір буфера.

Після упаковки всіх необхідних даних підготований буфер можна використати в функціях передачі даних з вказівкою типу MPI_PACKED. Після отримання повідомлення з типом MPI_PACKED дані можна розпакувати з використанням функції:

int MPI_Unpack(void *buf , int bufsize , int *bufpos , void *data, int count , MPI_Datatype type , MPI_Comm comm ) ,

де - buf - буфер пам’яті з упакованими даними; - bufsize - розмір буфера в байтах; - bufpos - позиція початку даних в буфері (в байтах від початку буфера); - data - буфер пам’яті для розпакованих даних; - count - кількість елементів в буфері; - type - тип даних, що розпаковуються; - comm -комунікатор для упакованого повідомлення.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]