Page 219 - 6571
P. 219
ЛЕКЦІЯ 23
ПОХІДНІ ТИПИ ДАНИХ З БІБЛІОТЕКИ MPI
23.1 Поняття похідного типу даних
У всіх раніше розглянутих прикладах при використанні фун-
кцій передачі даних передбачалося, що повідомлення є деяким
безперервним вектором елементів передбаченого в MPI типу
(список наявних в MPI типів представлений в табл. 2.2). Зрозумі-
ло, що в загальному випадку необхідні до пересилки дані можуть
поруч не розташовуватися і складатися із значень різних типів.
Звичайно, і в цих ситуаціях розрізнені дані можуть бути передані
з використанням декількох повідомлень, але такий спосіб неефе-
ктивний в силу накопичення латентностей множини виконуваних
операцій передачі даних. Інший можливий підхід полягає в попе-
редній упаковці даних, що передаються у формат певного векто-
ру, проте і тут з’являються зайві операції копіювання даних, та і
зрозумілість таких операцій передачі далека від бажаної.
Для забезпечення додаткових можливостей при визначенні
складу повідомлень, що передаються в MPI передбачений меха-
нізм так званих похідних типів даних.
У найзагальнішому вигляді під похідним типом даних в MPI
можна розуміти опис набору значень передбаченого в MPI типу,
причому в загальному випадку описувані значення не
обов’язково безперервно розташовуються в пам’яті. Задання типу
в MPI прийнято здійснювати за допомогою карти типу (type
map) у вигляді послідовності описів значень, що входять в тип;
кожне окреме значення описується вказуванням типу і зміщення
адреси місцерозташування від деякої базової адреси, тобто
TypeMap = {(type , disp ),...,(type n-1 , disp n-1 )}.
0
0
Частина карти типу з вказуванням тільки типів значень нази-
вається в MPI сигнатурою типу:
TypeSignature = {type ,...,type n-1 }.
0
Сигнатура типу описує, які базові типи даних утворюють де-
який похідний тип даних MPI, і, тим самим, управляє інтерпрета-
цією елементів даних при передачі або отриманні повідомлень.
Зміщення карти типу визначають, де знаходяться значення даних.
218