110 likes | 297 Views
Коммуникационные операции «точка-точка». параллельное программирование. Функция передачи сообщений MPI_Send. Входные параметры:. Функция приема сообщений MPI_ Recv. Входные параметры:. Выходные параметры:. Типы данных MPI ( третий аргумент операций точка-точка ).
E N D
Коммуникационные операции «точка-точка» параллельное программирование кафедра ЮНЕСКО по НИТ
Функция передачи сообщений MPI_Send • Входные параметры: кафедра ЮНЕСКО по НИТ
Функция приема сообщений MPI_Recv • Входные параметры: • Выходные параметры: кафедра ЮНЕСКО по НИТ
Типы данных MPI (третий аргумент операций точка-точка) кафедра ЮНЕСКО по НИТ
Рекомендации по использованию коммуникационных функций типа «точка-точка» • Сообщение должно быть отправлено на процесс, номер которого в диапазоне от 0 до SIZE-1 • Сообщение должно быть принято от процесса, номер которого в диапазоне от 0 до SIZE-1 • Отправляющий и принимающий процессора должны принадлежать одному коммуникатору comm • Идентификаторы сообщений tagдолжны совпадать • Типы передаваемых и принимаемых данных datatypeдолжны совпадать • Количество принимаемых данных countдолжно быть не меньше отправляемых • Размер буфераrbuf, принимающего данные, должен быть не меньше чем count кафедра ЮНЕСКО по НИТ
Задание. Реализовать передачу нулевым процессом заданного значения (числа типа double) всем остальным процессам. кафедра ЮНЕСКО по НИТ
Прием сообщений • В случае если процессор не знает какой процессор пересылает ему сообщение и с каким идентификатором, то можно использовать специальные константы: • принять данные от любого процессора: source = MPI_ANY_SOURCE • принять данные с любым идентификатором: tag = MPI_ANY_TAG • в последующем выяснить номер процесса и идентификатор сообщения можно по параметру status кафедра ЮНЕСКО по НИТ
Statusсообщения – коммуникационная оболочка • В структуру statusзаписываются характеристики принимаемых данных функцией MPI_Recv • status.MPI_SOURCE (от кого) • status.MPI_TAG (с каким идентификатором) • status.MPI_ERROR кафедра ЮНЕСКО по НИТ
Функция определения параметров полученного сообщения без его чтения MPI_Probe • Входные параметры: • Выходные параметры: кафедра ЮНЕСКО по НИТ
Функция определения количества фактически принятых элементов MPI_Get_count • Входные параметры: • Выходные параметры: кафедра ЮНЕСКО по НИТ
Задание • 1-ый и 2–ой процессоры делают по 5 посылок 0-му. • Причем каждый из процессоров посылает число элементов, отличное от другого (например 1-ый посылает один элемент, а 2-ой - два) • 0-ой процессор принимает 10 сообщений и после каждого приема выводит принятое на экран Требование: 0-ой процессор на каждой итерации должен принимать первую готовую посылку, не зная заранее от кого она, и должен получать ровно столько данных, сколько было отправлено кафедра ЮНЕСКО по НИТ