290 likes | 521 Views
Лекция 4 . Использование многопроцессорной вычислительной техники с распределенной памятью при решении задач локальных атмосферных процессов и переноса примеси. План лекции. Назначение и архитектура ВВС Закон Амдаля Стандарты передачи сообщений. Введение в библиотеку MPI
E N D
Лекция 4 Использование многопроцессорной вычислительной техники с распределенной памятью при решении задач локальных атмосферных процессов и переноса примеси
План лекции • Назначение и архитектура ВВС • Закон Амдаля • Стандарты передачи сообщений. Введение в библиотеку MPI • Работа с параллельными программами в ОС UNIX • Способы построения параллельных программ • Решение 3D уравнения диффузии на МВС с распределенной памятью • Реализация ЛСДМ на МВС с распределенной памятью
С помощью высокопроизводительных вычислительных средств решают задачи следующих научных и научно-технических направлений: • предсказание погоды, климата и глобальных изменений в атмосфере • генетика человека • гидрогазодинамика и теплоперенос • прогноз катастрофических явлений в окружающей среде • разведка нефти и газа • исследование сверхпроводимости • распознавание изображений • защита информации
Суперкомпьютеры делятся: • Векторно-конвейерные • Массивно-параллельные компьютеры с распределенной памятью • Параллельные компьютеры с общей памятью • Кластеры
TOP 500 (21 редакция, июнь 2003)http://www.top500.org • (1) NEC Earth Simulator (5120 Procs), Rpeak=40960 Gflops, Rmax=35860 Gflops • (2) Hewlett-Packard (8192 Procs), Rpeak=20480 Gflops, Rmax=13880 Gflops • (3) Linux Networkx (2304 Procs), Rpeak=11060 Gflops, Rmax=7634 Gflops • … (95) MVS1000M (768 Procs) Rpeak=1024 Gflops, Rmax=735 Gflops • … (357) Hewlett-Packard (192 Procs), Rpeak=576 Gflops, Rmax=345 Gflops (Sberbank RF)
Earth Simulator • ES – параллельная векторная суперкомпьютерная система с распределенной памятью. • ES состоит из 640 процессорных узлов. • Каждый узел – система с разделяемой памятью, состоящая из 8 векторных арифметических процессоров, 16 Гб ОЗУ • Пиковая производительность каждого арифметического процессора – 8Гфлопс. • ES: 5120 процессоров и 10Тб памяти Процессорный узел ES
Вычислительный кластер ТГУ • 9 двухпроцессорных узлов с локальной памятью • Процессоры – Intel Pentium III, 650 MHz • Сервер – 512 Mb RAM, 2x18 Gb HDD • Вычислительные узлы – 256 Mb RAM • Сеть – 100 Mбит Fast Ethernet • ОС Unix FreeBSD 4.2 • Кластерный пакет – LAM MPI 6.3.2 для организации параллельных вычислений • Пиковая производительность – 11.7 Gflops • Производительность на тесте Linpack – 5.5 Gflops Вычислительный кластер ТГУ, http://cluster.tsu.ru
Вычислительный кластер ИОА • 10 двухпроцессорных узлов с локальной памятью • Процессоры – Intel Pentium III, 1 GHz • Сервер – 1 Gb RAM, 3x18 Gb HDD • Вычислительные узлы – 1 Gb RAM • Сеть – Gigabit Ethernet • ОС Linix RadHat 7.1 • Кластерный пакет – MPICH • Пиковая производительность – 20 Gflops • Производительность на тесте Linpack – 11.5 Gflops Вычислительный кластер ИОА http://cluster.iao.ru
Закон Амдаля • Будет ли созданная параллельная программа работать быстрее, чем ее последовательный вариант? • Соизмерим ли полученный выигрыш во времени, который дает параллельная программа, с затратами на программирование?
Закон Амдаля Sp = t1/tp - ускорение параллельной программы; - доля операций, которые выполняются сугубо последовательно; p - число процессоров
Стандарты передачи сообщений. Введение в MPI Наиболее общим подходом при создании параллельных программ является применение библиотеки передачи сообщений, где процессы используют обращения к библиотеке MPI (Message Passing Interface), чтобы обмениваться сообщениями с другими процессами. MPI это стандарт передачи сообщений, который разрабатывался группой из 60 человек из 40 организаций США и Европы. MPI пригоден для широкого разнообразия платформ, начиная с массивно-параллельных систем (IBM SP2, Cray T3D, Intel Paragon) и заканчивая сетями рабочих станций (Sun4, Dec Alpha).
Стандарт MPI включает 129 функций • Инициализации и закрытия параллельной части приложения • Приема и передачи сообщений между отдельными процессами • Осуществления коллективного взаимодействия процессов • Работы с группами процессов и коммуникаторами • Определения производных (составных) типов данных • Создания виртуальных топологий для обеспечения более простого взаимодействия процессов
Процесс – исполнение программы одним процессорным элементом, на котором загружен MPI. Процессы объединяются в группы с единой областью связи, внутри которой каждый процесс имеет свой уникальный номер в диапазоне от 0 до N-1, где N – количество процессов в группе. Для взаимодействия процессов в группе используется коммуникатор, который реализует передачу сообщений (обмен данными) между процессами и их синхронизацию. Основные понятия MPI
Методология MPI Обычно MPI-программа для многопроцессорных вычислительных систем пишется на языке С или Фортран с использованием коммуникационных функций библиотеки MPI. Запуск на выполнение MPI-программы представляет собой одновременный запуск совокупности параллельных процессов, количество которых определяет пользователь при запуске. Параллельная программа начинается с инициализации MPI. При этом все активированные процессы объединяются в группу с коммуникатором, который имеет имя MPI_COMM_WORLD. Далее средствами MPI в программу передается число активированных процессов, каждому из них присваивается свой номер. Каждый процесс, как правило, отвечает за выполнение своей ветви параллельной программы
Компиляция и запуск MPI-программ • Компиляция: mpicc – o myexecutable mysource.c mpif77 –o myexecutable mysource.f • Запуск на счет:mpirun –np 3 myexecutable
MPI-программа • Заголовочный файл (mpi.h или mpif.h) • Вызов п/п MPI_INIT для инициализации MPI • Вызов п/п MPI_COMM_SIZE, чтобы определить число (size) активированных процессов • Вызов п/п MPI_COMM_RANK, чтобы определить номер (rank) каждого активированного процесса • По номеру rank осуществляется создание ветвей параллельной программы • Взаимодействие процессов производится путем передачи сообщений между отдельными процессами с помощью п/п MPI_SEND и MPI_RECV • Вызов п/п MPI_FINALIZE для завершения параллельной части программы
MPI-программа «Hello World» Program hello include ‘mpif.h’ integer rank, size, ierror, tag, status(MPI_STATUS_SIZE) character(12) message call MPI_INIT(ierror) call MPI_COMM_SIZE(MPI_COMM_WORLD,size,ierror) call MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierror) tag=7 if(rank.eq.0) then message=‘Hello world’ do i=1,size-1 call MPI_SEND(message,12,MPI_CHARACTER,i,tag, MPI_COMM_WORLD,ierror) end do else call MPI_RECV(message,12,MPI_CHARACTER,0, tag,MPI_COMM_WORLD,status,ierror) end if print*, ‘node’,rank,’:’,message call MPI_FINALIZE(ierror) end node 1 : Hello world node 0 : Hello world node 2 : Hello world mpirun –np 3 hello.out
Способы построения параллельных программ • Распараллеливание по данным – геометрическое решение • Распараллеливание по процессам – коллективное решение
Геометрическое решение. Применение для сеточных уравнений . Sc – источники выбросов и осаждение примеси Rc – химические реакции
Геометрическое решение Явно-неявная разностная схема
Геометрическое решение • MPI_SENDRECV – для обмена приграничными данными между соседними процессами • MPI_BCAST, MPI_SCATTER – для распределения исходных данных между процессами • MPI_GATHER – для «сборки» полученных результатов перед завершением программы
Геометрическое решение. Результаты На вычислительном кластере ТГУ (сетка 100х100х50) На вычислительном кластере ИОА расчет переноса четырех компонентов примеси (пыль, CO, NO2, SO2) в течение двух суток занимает не более трех часов
Геометрическое решение Неявная разностная схема Метод неполной факторизации Н.И.Булеева
Коллективное решение. Применение ЛДСМ N104 m=N/p
Коллективное решение • MPI_BCAST и MPI_SCATTER для передачи информации о исходных данных всем процессам • MPI_REDUCE для суммирования значений концентрации в ячейках, рассчитанных на всех процессах
Датчик случайных чисел для параллельных вычислений - SPRNG (Scalable, Portable, Random Number Generators) –библиотека генераторов псевдослучайных чисел для высокопроизводительных параллельных вычислительных систем. SPRNG широко используется при применении параллельных методов Монте-Карло для решения математических задач. Структура реализации этих методов позволяет получить практически 100% эффективность параллельного вычислительного алгоритма.