Скачать презентацию Введение в MPI практика Долуденко Алексей Николаевич январь Скачать презентацию Введение в MPI практика Долуденко Алексей Николаевич январь

Информатика_весна_2014_1.ppt

  • Количество слайдов: 14

Введение в MPI (практика) Долуденко Алексей Николаевич январь 2014 г. Введение в MPI (практика) Долуденко Алексей Николаевич январь 2014 г.

Работа с кластером • Логин: s 17 XYY, X = 1… 8 – номер Работа с кластером • Логин: s 17 XYY, X = 1… 8 – номер группы YY = 01… 20 – номер студента • Пароль: s 17 Xpass • Host calcnoqueue. vdi. mipt. ru • Для начала работы с mpi набрать module add openmpi-x 86_64

Введение в Linux • Ли нукс — общее название Unix-подобных операционных систем, основанных на Введение в Linux • Ли нукс — общее название Unix-подобных операционных систем, основанных на одноимённом ядре. • Операционная система Unix была разработана в 1969 году в Bell Laboratories компании AT&T в США. • В 1991 году, во время обучения в Хельсинкском университете Линус Торвальдс заинтересовался операционными системами и был разочарован существующей на тот момент лицензией MINIX, которая ограничивала её использование только образовательными целями (что исключало любое коммерческое использование), вследствие чего начал работать над своей собственной операционной системой, которая в итоге стала Linux.

Элементарные команды Linux • • • ls - посмотреть файлы в текущем каталоге pwd Элементарные команды Linux • • • ls - посмотреть файлы в текущем каталоге pwd - посмотреть путь текущего каталога mkdir имя_каталога - сделать новый каталог rmdir имя_каталога - удалить каталог cd имя_каталога - перейти в каталог cd / - переход в корневой каталог cd. . - переход на уровень выше chmod 755 имя_файла - установить права файла на исполнение ssh –p порт_ip_удаленной_машины - заход на удаленную машину по протоколу ssh (Secure Shell)

Элементы редактора vi • vi myfile. c – создать новый или открыть старый файл Элементы редактора vi • vi myfile. c – создать новый или открыть старый файл • i – команда, после которой можно вводить текст • нажать Esc, : wq, нажать Enter – записать в файл и выйти из редактора • : q! - набрать для выхода без сохранения

История и обзор • Усилия по разработке Message Passing Interface начались летом 1991 года. История и обзор • Усилия по разработке Message Passing Interface начались летом 1991 года. Проект стандарта MPI был представлен на конференции «Supercomputing'93» в ноябре 1993 года. После периода общественного обсуждения, приведшего к некоторым изменениям в MPI, версия 1. 0 MPI была выпущена в июне 1994 года. • MPI является коммуникационным протоколом, независимым от языка программирования, который используется для программирования параллельных компьютеров. • Разработка MPI не была санкционирована какой-либо крупной организацией по стандартизации, тем не менее, интерфейс стал стандартом де-факто для связи процессов при работе параллельной программы на системе с распределенной памятью.

Основные понятия • Процесс - компьютерная программа в стадии своего выполнения. Компьютерная программа является Основные понятия • Процесс - компьютерная программа в стадии своего выполнения. Компьютерная программа является пассивным набором инструкций; процесс является активным выполнением этих инструкций. Preamble One process fork Work process One process join Post-processing Work process

Компиляция и запуск Компиляция: mpicc file_name. c имеет имя «a. out» ) (по умолчанию Компиляция и запуск Компиляция: mpicc file_name. c имеет имя «a. out» ) (по умолчанию исполняемы файл Запуск: mpiexec -np num_of_processes. /a. out

Первая программа, часть 1 #include<stdio. h> #include<stdlib. h> #include<mpi. h> // заголовочный файл mpi Первая программа, часть 1 #include #include #include // заголовочный файл mpi int main(int argc, char *argv[]){ int i; int array[10]; int myrank, size; MPI_Status; // тип данных mpi

Первая программа, часть 2 /* MPI программа начинается с MPI_Init; все остальные 'N' процессов Первая программа, часть 2 /* MPI программа начинается с MPI_Init; все остальные 'N' процессов начинают работу после этого */ MPI_Init(&argc, &argv); /* переменной size присваивается число, равное кол-ву процессов */ MPI_Comm_size(MPI_COMM_WORLD, &size); /* каждому процессу присваивается уникальный номер */ MPI_Comm_rank(MPI_COMM_WORLD, &myrank);

Первая программа, часть 3 /* В этом месте, все процессы работают одновременно, а номера Первая программа, часть 3 /* В этом месте, все процессы работают одновременно, а номера процессов позволяют распределить задания в рамках модели SPMD (single program multiple data, одна программа несколько данных), а процесс с номером 0 часто используется особо. . . */ printf("I am %d of %dn", myrank, size); if (myrank == 0){ for (i = 0; i < 10; i++){ array[i] = i; } /* пересылка процессу с номером 1: */ MPI_Send(&array[5], 5, MPI_INT, 1, 1, MPI_COMM_WORLD) ; }

Первая программа, часть 4 if (myrank == 1){ /* получение от процесса с номером Первая программа, часть 4 if (myrank == 1){ /* получение от процесса с номером 0: */ MPI_Recv(array, 5, MPI_INT, 0, 1, MPI_COMM_WORLD, &Status); for (i = 0; i <5; i++){ printf("%d ", array[i]); } printf(“n "); }

Первая программа, часть 5 /* MPI программа должна закончиться с использованием функции MPI Finalize*/ Первая программа, часть 5 /* MPI программа должна закончиться с использованием функции MPI Finalize*/ MPI_Finalize(); return 0; }

Полезные блоки программы if (myrank == 0){ for (i = 1; i < size; Полезные блоки программы if (myrank == 0){ for (i = 1; i < size; i++){ /* отсылка сообщения процессам с номерами i: */ MPI_Send(&buf[i*N/size], N/size, MPI_INT, i, i, MPI_COMM_WORLD) ; } } if (myrank != 0){ /* каждый из процессов получает сообщение от процесса с номером 0*/ MPI_Recv (&buf[0], N/size, MPI_INT, 0, myrank, MPI_COMM_WORLD, &Status); }