Теория и практика параллельных вычислений

       

Производные типы данных в MPI


Во всех ранее рассмотренных примерах использования функций передачи данных предполагалось, что сообщения представляют собой некоторый непрерывный вектор элементов предусмотренного в MPI типа (список имеющихся в MPI типов представлен в табл. 5.1). Понятно, что в общем случае необходимые к пересылке данные могут рядом не располагаться и состоять из значений разных типов. Конечно, и в этих ситуациях разрозненные данные могут быть переданы с использованием нескольких сообщений, но такой способ решения неэффективен в силу накопления латентностей множества выполняемых операций передачи данных. Другой возможный подход состоит в предварительной упаковке передаваемых данных в формат того или иного непрерывного вектора, однако и здесь появляются лишние операции копирования данных, да и понятность таких операций передачи далека от желаемой.

Таблица 5.4. Сводный перечень учебного материала о коллективных операциях передачи данных

Вид коллективной операцииОбщее описание и оценка сложностиФункции MPIПримеры использования
Передача от одного процесса всем процессам (широковещательная рассылка)п. 3.2.2MPI_Bcast п. 5.2.3.1п. 5.2.3.1
Сбор и обработка данных на одном процессе от всех процессов (редукция данных)пп. 3.2.2, 3.2.3MPI_Reduce п. 5.2.3.2п. 5.2.3.2
- то же с рассылкой результатов всем процессампп. 3.2.2, 3.2.3MPI_Allreduce MPI_Reduce_scatter п. 5.4.4
- то же с получением частичных результатов обработкипп. 3.2.2, 3.2.3MPI_Scan п. 5.4.4
Обобщенная передача от одного процесса всем процессам (распределение данных)п. 3.2.4MPI_Scatter MPI_Scatterv п. 5.4.1Лекция 6
Обобщенная передача от всех процессов одному процессу (сбор данных)п. 3.2.4MPI_Gather MPI_Gatherv п. 5.4.2Лекция 6
- то же с рассылкой результатов всем процессамп. 3.2.4MPI_Allgather MPI_Allgatherv п. 5.4.2
Обобщенная передача данных от всех процессов всем процессамп. 3.2.5MPI_Alltoall MPI_Alltoallv п. 5.4.3Лекция 6

Для обеспечения больших возможностей при определении состава передаваемых сообщений в MPI предусмотрен механизм так называемых производных типов данных. Далее будут даны основные понятия используемого подхода, приведены возможные способы конструирования производных типов данных и рассмотрены функции упаковки и распаковки данных.



Содержание раздела