Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MPI - MKM.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
391.79 Кб
Скачать

34 Сурак

1.Современные архитектуры параллельных компьютеров. Программная часть.

Основным параметром классификации параллельных компьютеров является наличие общей (SMP) или распределенной памяти (MPP). Нечто среднее между SMP и MPP представляют собой NUMA-архитектуры, где память физически распределена, но логически общедоступна. Кластерные системы являются более дешевым вариантом MPP. При поддержке команд обработки векторных данных говорят о векторно-конвейерных процессорах, которые, в свою очередь могут объединяться в PVP-системы с использованием общей или распределенной памяти. Программная часть архитектуры параллельных компьютеров:

1. SISD (Single Instruction Single Data) – единственный поток команд и единственный поток данных. По сути дела это классическая машина фон Неймана. К этому классу относятся все однопроцессорные системы.

2. SIMD (SingleInstructionMultipleData) – единственный поток команд и множественный поток данных. Типичными представителями являются матричные компьютеры, в которых все процессорные элементы выполняют одну и ту же программу, применяемую к своим локальным данным.

3. MISD (MultipleInstructionSingleDate) – множественный поток команд и единственный поток данных. М. Флинн не смог привести ни одного примера реально существующей системы, работающей на

этом принципе. Некоторые авторы в качестве представителей такой архитектуры называют векторно-конвейерные компьютеры, однако такая точка зрения не получила широкой поддержки.

4. MIMD (MultipleInstructionMultipleDate) – множественный поток команд и множественный поток данных. К этому классу относятся практически все современные многопроцессорные системы.

2.Есть мнение, что для написания программ mpi достаточно лишь 5-ти основых функций. Назовите их. Как Вы относитесь к данному высказыванию ?

1) Любая MPI-программа должна начинаться с вызова функции инициализации MPI (функция MPI_Init(&argc, &argv)) - создается группа процессов, в которую помещаются все процессы приложения, и создается область связи (объединяет все процессы приложения), описываемая предопределенным коммуникатором MPI_COMM_WORLD. 2) Функция завершения MPI программ MPI_Finalize()- закрывает все MPI-процессы и ликвидирует все области связи. 3) Функция определения номера процесcа MPI_Comm_rank(comm, &rank) – comm – коммуникатор, rank-номер процесса, вызвавшего функцию. 4) Функция передачи сообщения - MPI_Send(void* buf, int count, MPI_Datatype datatype, int dest,int tag, MPI_Comm comm) buf- адрес начала расположения пересылаемых данных;

count - число пересылаемых элементов; datatype - тип посылаемых элементов; dest - номер процесса-получателя в группе, связанной с коммуникатором comm; tag - идентификатор сообщения, comm - коммуникатор области связи. 5) Функция приема сообщения MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) source - номер процесса-отправителя;status- атрибуты принятого сообщения.

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

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