- •Назначение, область применения и способы оценки производительности многопроцессорных вычислительных систем
- •Классификация архитектур по параллельной обработке данных
- •Гибридная архитектура (numa). Организация когерентности многоуровневой иерархической памяти
- •Организация когерентности многоуровневой иерархической памяти
- •Кластерная архитектура.
- •Кластерная архитектура. Проблемы выполнения сети связи процессоров в кластерной системе Кластерная архитектура
- •Сети связи процессоров в кластерной системе
- •Принципы построения коммуникационных сред на основе интерфейса sci
- •Принципы построения коммуникационных сред на основ среды Myrinet
- •Способы организации высокопроизводительных процессоров. Ассоциативные процессоры.
- •Ассоциативные процессоры
- •Способы организации высокопроизводительных процессоров. Конвейерные процессоры.
- •Конвейерные процессоры
- •Способы организации высокопроизводительных процессоров. Матричные процессоры
- •Матричные процессоры
- •Простые коммутаторы с временным разделением. Алгоритмы арбитража
- •Простые коммутаторы с временным разделением
- •Алгоритмы арбитража
- •П ростые коммутаторы с пространственным разделением. Особенности реализации шин
- •Особенности реализации шин
- •Составные коммутаторы. Коммутатор Клоза. Баньян-сети
- •Распределенные составные коммутаторы. Граф межмодульных связей Convex Exemplar spp1000.
- •Распределенные составные коммутаторы. Граф межмодульных связей мвс-100.
- •Распределенные составные коммутаторы. Граф межмодульных связей мвс-1000.
- •Требования к компонентам мвс. Отношение "стоимость / производительность".
- •Требования к компонентам мвс. Масштабируемость
- •Требования к компонентам мвс. Совместимость и мобильность программного обеспечения
- •Надежность и отказоустойчивость мвс.
- •Пути достижения параллелизма
- •Примеры параллельных вычислительных систем
- •Принципы разработки параллельных методов
- •Моделирование параллельных программ
- •Этапы разработки параллельных алгоритмов
- •1. Разделение вычислений на независимые части
- •2. Выделение информационных зависимостей
- •3. Масштабирование набора подзадач
- •4. Распределение подзадач между процессорами
- •Mpi: основные понятия и определения
- •Введение в разработку mpi программ. Инициализация и завершение mpi-программ. Операции передачи данных. Типы данных.
- •Коллективные операции передачи данных в mpi
- •Передача данных от одного процесса всем процессам программы
- •Передача данных от всех процессов одному процессу. Операция редукции
- •Обобщенная передача данных от одного процесса всем процессам
- •Обобщенная передача данных от всех процессов одному процессу
- •Общая характеристика среды выполнения mpi-программ
- •Понятие производного типа данных в mpi
- •Способы конструирования производных типов данных. Непрерывный способ конструирования
- •Непрерывный способ конструирования
- •Способы конструирования производных типов данных. Векторный способ конструирования
- •Векторный способ конструирования
- •Способы конструирования производных типов данных. Индексный способ конструирования
- •Индексный способ конструирования
- •Способы конструирования производных типов данных. Структурный способ конструирования
- •Структурный способ конструирования
- •Формирование сообщений при помощи упаковки и распаковки данных
Способы конструирования производных типов данных. Векторный способ конструирования
Для снижения сложности в MPI предусмотрено несколько различных способов конструирования производных типов:
непрерывный способ позволяет определить непрерывный набор элементов существующего типа как новый производный тип;
векторный способ обеспечивает создание нового производного типа как набора элементов существующего типа, между элементами которого имеются регулярные промежутки по памяти;
индексный способ отличается от векторного метода тем, что промежутки между элементами исходного типа могут иметь нерегулярный характер;
структурный способ обеспечивает самое общее описание производного типа через явное указание карты создаваемого типа данных.
Векторный способ конструирования
При векторном способе конструирования производного типа данных в MPI применяются функции
int MPI_Type_vector(int count, int blocklen, int stride,
MPI_Data_type oldtype, MPI_Datatype *newtype) и
int MPI_Type_hvector(int count, int blocklen, MPI_Aint stride,
MPI_Data_type oldtype, MPI_Datatype *newtype),
где
count — количество блоков;
blocklen — размер каждого блока;
stride — количество элементов, расположенных между двумя соседними блоками;
oldtype — исходный тип данных;
newtype — новый определяемый тип данных.
Отличие способа конструирования, определяемого функцией MPI_Type_hvector, состоит лишь в том, что параметр stride для определения интервала между блоками задается в байтах, а не в элементах исходного типа данных.
При векторном способе новый производный тип создается как набор блоков из элементов исходного типа, при этом между блоками могут иметься регулярные промежутки по памяти.
Способы конструирования производных типов данных. Индексный способ конструирования
Для снижения сложности в MPI предусмотрено несколько различных способов конструирования производных типов:
непрерывный способ позволяет определить непрерывный набор элементов существующего типа как новый производный тип;
векторный способ обеспечивает создание нового производного типа как набора элементов существующего типа, между элементами которого имеются регулярные промежутки по памяти;
индексный способ отличается от векторного метода тем, что промежутки между элементами исходного типа могут иметь нерегулярный характер;
структурный способ обеспечивает самое общее описание производного типа через явное указание карты создаваемого типа данных.
Индексный способ конструирования
При индексном способе конструирования производного типа данных в MPI используются функции:
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),
где
count — количество блоков;
blocklens — количество элементов в каждом блоке;
indices — смещение каждого блока от начала типа;
oldtype — исходный тип данных;
newtype — новый определяемый тип данных.
Как следует из описания, при индексном способе новый производный тип создается как набор блоков разного размера из элементов исходного типа, при этом между блоками могут иметься разные промежутки по памяти.
Как и ранее, способ конструирования, определяемый функцией MPI_Type_hindexed, отличается тем, что элементы indices для определения интервалов между блоками задаются в байтах, а не в элементах исходного типа данных.