Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемПолина Торсукова
2 Кафедра ЮНЕСКО по НИТ1 Параллельное программирование MPI – message passing interface Власенко Андрей Юрьевич
3 Кафедра ЮНЕСКО по НИТ2 Парадигма параллельного программирования Парадигма последовательного программирования data pro- gram память процессор Парадигма параллельного программирования data sub- program data sub- program data sub- program data sub- program communication network Память вычислительных узлов Процессоры узлов
4 Кафедра ЮНЕСКО по НИТ3 MPI – message passing interface (интерфейс передачи сообщений) MPI – стандарт на программный инструментарий для обеспечения связи между ветвями параллельного приложения. mpich – одна из самых распространённых реализаций стандарта MPI. Это библиотека функций, обеспечивающая взаимодействие параллельных процессов с помощью механизма передачи сообщений. hp?s=downloadshttp:// hp?s=downloads - отсюда можно скачать mpich
5 Кафедра ЮНЕСКО по НИТ4 История создания MPI MPI: A Message-Passing Interface Standard (1.1, June 12, 1995) MPI-2: Extensions to the Message-Passing Interface (July18,1997) MPI Standard: Marc Snir and William Gropp et al.: MPI: The Complete Reference. (2-volume set).The MIT Press, (excellent catching up of the standard MPI-1.2 and MPI-2 in a readable form) William Gropp, Ewing Lusk and Rajeev Thakur: Using MPI: Portable Parallel Programming With the Message- Passing Interface. MIT Press, Nov And Using MPI-2: Advanced Features of the Message-Passing Interface. MIT Press, Aug (or both in one volume, 725 pages, ISBN X)
6 Кафедра ЮНЕСКО по НИТ5 MPI Для MPI принято писать программу, содержащую код всех ветвей сразу Ветвью MPI-программы является процесс многозадачной операционной системы. Каждый экземпляр определяет свой порядковый номер в запущенном коллективе и в зависимости от этого номера выполняет ту или иную ветвь алгоритма Данная модель параллелизма называется SPMD (simple program/multiple data)
7 Кафедра ЮНЕСКО по НИТ6 Состав пакета MPICH1 функции инициализации и закрытия MPI процессов функции, реализующие коммуникационные операции типа точка-точка (в обмене участвуют 2 процесса – передающий и принимающий) функции, реализующие коллективные операции функции для работы с группами процессов и коммуникаторами функции для работы со структурами данных функции формирования топологии процессов
8 Кафедра ЮНЕСКО по НИТ7 Учебный кластер кафедры ЮНЕСКО по НИТ Состоит из 3 однородных ПК Intel Core 2 Duo E6550 – 2.33 GHz RAM – 2 Gb HDD – 80 Gb Сетевая среда – Ethernet 100 Mb/s ОС – CentOS 5.6 Компилятор – gcc (GNU compiler collection) Коммуникационная библиотека – mpich2
9 Работа с учебным кластером. Программа Putty Кафедра ЮНЕСКО по НИТ8 hpchead.kemsu.ru
10 Кафедра ЮНЕСКО по НИТ9 Работа с учебным кластером. Авторизация Login: stud Password: stud1234
11 Кафедра ЮНЕСКО по НИТ10 Командная строка CentOS. Вызов Midnight Commander
12 Изменение кодировки на UTF-8 Кафедра ЮНЕСКО по НИТ11
13 Кафедра ЮНЕСКО по НИТ12 Вид Midnight Commander в кодировке UTF-8 Red Hat Linux release 9.0 (Strike) Kernel on an i586 Login: stud Password: stud1234 Last login: Fri Sep 3 10:46:00 from unesco1.kemsu.ru stud]$ mc -c
14 Некоторые команды Linux $man touch – справка по команде «touch» $touch newfile - создание пустого файла $mv /home/stud/testfile /tmp/file - перемещение файла testfile и переименование в file $cp /home/stud/testfile /tmp/file - копирование файла testfile и переименование в file Кафедра ЮНЕСКО по НИТ13
15 Midnight Commander F3 – просмотр файла F4 – редактирование F5 – копирование файла F6 – перемещение файла F7 – создание новой директории Кафедра ЮНЕСКО по НИТ14 stud]$ gcc test.c –o test.out stud]$./test.out Компиляция и запуск C-программ
16 Кафедра ЮНЕСКО по НИТ15 Обрамляющие функции: int MPI_Init (int *argc, char **argv) int MPI_Finalize (void) Функция завершения MPI программ MPI_Finalize Функция инициализации MPI программ MPI_Init
17 Кафедра ЮНЕСКО по НИТ16 Обрамляющие функции: int MPI_Comm_size (MPI_Comm comm, int *size) int MPI_Comm_rank (MPI_Comm comm, int *rank) Функция определения номера процессора MPI_Comm_rank Функция определения числа процессоров в области связи MPI_Comm_size Comm – коммуникатор. Идентификатор группы запущенных программой параллельных процессов, которые могут обмениваться между собой сообщениями. Как получатель, так и отправитель должны принадлежать указанной группе. Все запущенные процессы принадлежат группе с коммуникатором MPI_COMM_WORLD.
18 Кафедра ЮНЕСКО по НИТ17 int MPI_Get_processor_name( char *name, int *resultlen) Функция определения имени вычислительного узла, на котором запущен данный процесс MPI_Get_processor_name out: name – имя узла out: resultlen – длина массива name
19 Кафедра ЮНЕСКО по НИТ18 Обрамляющие функции: Пример программы #include mpi.h #include int main( int argc, char *argv[ ] ) { int rank; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); printf( "Process %d is alive! \n", rank ); MPI_Finalize(); return(0); }
20 Кафедра ЮНЕСКО по НИТ19 Запуск и компиляция MPI- программ stud]$ mpicc test.c mpirun –np 5 –f /home/stud/machines a.out mpicxx second.cpp./run.sh 5 a.out mpicc test.c –o test.out
21 Кафедра ЮНЕСКО по НИТ20 Задание 1 Отладить и запустить MPI-программу, выдающую сообщение: о номере процесса; об имени узла, на котором запущен каждый из процессов; об общем количестве процессов.
22 Кафедра ЮНЕСКО по НИТ21 Обрамляющие функции: Функция отсчета времени MPI_Wtime double MPI_Wtime (void) Функция отсчета времени MPI_Wtime Возвращает время в секундах (дробное число), прошедшее с некоторого момента в прошлом.
23 Кафедра ЮНЕСКО по НИТ22 Задание 2 Создать MPI-программу, которая: 1) подсчитывает для каждого процесса сумму: 0+1+…+rank*10000, где rank – номер MPI-процесса в коммуникаторе MPI_COMM_WORLD 2) для каждого процесса выводит время, которое было затрачено на суммирование.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.