Скачать презентацию Параллельные вычисления Выполнил Лукьяненко И А студент Скачать презентацию Параллельные вычисления Выполнил Лукьяненко И А студент

Параллельные вычисления.ppt

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

Параллельные вычисления Выполнил: Лукьяненко И. А. , студент 1 курса магистратуры ФКН, ВГУ Параллельные вычисления Выполнил: Лукьяненко И. А. , студент 1 курса магистратуры ФКН, ВГУ

Содержание Тенденции развития современных процессоров Существующие подходы для создания параллельных программ Содержание Тенденции развития современных процессоров Существующие подходы для создания параллельных программ

Тенденции развития современных процессоров Поток В В П Поток или нить (поанглийски “thread”) – Тенденции развития современных процессоров Поток В В П Поток или нить (поанглийски “thread”) – это легковесный процесс, имеющий с другими потоками общие ресурсы, включая общую оперативную память. П увеличили производительность процессора в 2 раза В П П В Время Поток 3 В Поток 2 Поток 1 В - В В вычисления В П П В Поток 4 В В П П В П - доступ к памяти П П П Chip Multi. Threading П Время

Тенденции развития современных процессоров Суперкомпьютер Jaguar Cray XT 5 -HE Opteron Six Core 2. Тенденции развития современных процессоров Суперкомпьютер Jaguar Cray XT 5 -HE Opteron Six Core 2. 6 GHz 2 место в TOP 500 Пиковая производительность - 2331 TFlop/s Число ядер в системе — 224 162 Производительность на Linpack - 1759 TFlop/s (75. 4% от пиковой) Энергопотребление комплекса - 6950. 60 к. Вт Важным параметром становится – Power Efficency (Megaflops/watt) Как добиться максимальной производительности на Ватт => Chip Multi. Processing, многоядерность. Updrage: замена 4 -х ядерных процессоров AMD Opteron на 6 -ти ядерные процессоры AMD Opteron Результат: 2 -ое место в TOP 500 в июне 2009 - 1 -ое место в TOP 500 в ноябре 2009

Тенденции развития современных процессоров AMD Opteron серии 6100 (Magny. Cours) 6176 SE 12 ядер Тенденции развития современных процессоров AMD Opteron серии 6100 (Magny. Cours) 6176 SE 12 ядер @ 2, 3 ГГц, 12 МБ L 3 Cache 6136 8 ядер @ 2, 4 ГГц, 12 МБ L 3 Cache встроенный контроллер памяти (4 канала памяти DDR 3) до 42. 7 GB/s 4 канала «точка-точка» с использованием Hyper. Transort 3. 0 до 25. 6 GB/s

Тенденции развития современных процессоров Intel Xeon серии 5600 (Nehalem) X 5680 6 ядер @ Тенденции развития современных процессоров Intel Xeon серии 5600 (Nehalem) X 5680 6 ядер @ 3, 33 ГГц, 12 нитей, 12 МБ L 3 Cache X 5677 4 ядра @ 3, 46 ГГц, 8 нитей, 12 МБ L 3 Cache Intel® Turbo Boost Intel® Hyper-Threading Intel® Quick. Path Intel® Intelligent Power

Тенденции развития современных процессоров Intel Core i 7 980 X (Gulftown) 3, 33 ГГц Тенденции развития современных процессоров Intel Core i 7 980 X (Gulftown) 3, 33 ГГц 6 ядeр 12 потоков с технологией Intel Hyper-Threading 12 МБ кэш-памяти Intel Smart Cache встроенный контроллер памяти (3 канала памяти DDR 3 1066 МГц ) технология Intel Quick. Path Interconnect

Тенденции развития современных процессоров Intel Itanium 9350 (Tukwila) 1, 73 ГГц 4 ядeр 8 Тенденции развития современных процессоров Intel Itanium 9350 (Tukwila) 1, 73 ГГц 4 ядeр 8 потоков с технологией Intel Hyper-Threading 24 МБ L 3 кэш-памяти технология Intel Quick. Path Interconnect технология Intel Turbo Boost

Тенденции развития современных процессоров IBM Power 7 3, 5 - 4, 0 ГГц 8 Тенденции развития современных процессоров IBM Power 7 3, 5 - 4, 0 ГГц 8 ядер x 4 нити Simultaneuos Multi. Threading L 1 64 КБ L 2 256 КБ L 3 32 МБ встроенный контроллер памяти

Тенденции развития современных процессоров Темпы уменьшения латентности памяти гораздо ниже темпов ускорения процессоров + Тенденции развития современных процессоров Темпы уменьшения латентности памяти гораздо ниже темпов ускорения процессоров + прогресс в технологии изготовления кристаллов => CMT (Chip Multi. Threading) Опережающий рост потребления энергии при росте тактовой частоты + прогресс в технологии изготовления кристаллов => CMP (Chip Multi. Processing, многоядерность) И то и другое требует более глубокого распараллеливания для эффективного использования аппаратуры

Существующие подходы для создания параллельных программ Автоматическое / автоматизированное распараллеливание Библиотеки нитей • • Существующие подходы для создания параллельных программ Автоматическое / автоматизированное распараллеливание Библиотеки нитей • • Библиотеки передачи сообщений • Win 32 API POSIX MPI Open. MP

История MPI 1992 г. Начало работ над стандартом библиотеки передачи сообщений (Oak Ridge National История MPI 1992 г. Начало работ над стандартом библиотеки передачи сообщений (Oak Ridge National Laboratory, Rice University). Ноябрь 1992 г. Объявление рабочего варианта стандарта MPI 1. Ноябрь 1993 г. Обсуждение стандарта на конференции Supercomputing'93. 5 мая 1994 г. Окончательный вариант стандарта MPI 1. 0. 12 Июня 1995 г. Новая версия стандарта - MPI 1. 1. 18 Июля 1997 г. Опубликован стандарт MPI-2: Extensions to the Message-Passing Interface. Параллельные вычисления ННГУ, Н. Новгород, 2001 4. 12

Вычисление числа 1 (1+x ) 4. 0 2 dx = F(x) = 4. 0/(1+x Вычисление числа 1 (1+x ) 4. 0 2 dx = F(x) = 4. 0/(1+x 2) 0 Мы можем аппроксимировать интеграл как сумму прямоугольников: N 2. 0 F(x ) x i i=0 0. 0 X 1. 0 Где каждый прямоугольник имеет ширину x и высоту F(xi) в середине интервала

Вычисление числа . Последовательная программа. #include <stdio. h> int main () { int n Вычисление числа . Последовательная программа. #include int main () { int n =100000, i; double pi, h, sum, x; h = 1. 0 / (double) n; sum = 0. 0; for (i = 1; i <= n; i ++) { x = h * ((double)i - 0. 5); sum += (4. 0 / (1. 0 + x*x)); } pi = h * sum; printf("pi is approximately %. 16 f”, pi); return 0; }

int main (int" src="https://present5.com/presentation/3/11092859_152412603.pdf-img/11092859_152412603.pdf-15.jpg" alt="Вычисление числа с использованием MPI #include "mpi. h" #include int main (int" /> Вычисление числа с использованием MPI #include "mpi. h" #include int main (int argc, char *argv[]) { int n =100000, myid, numprocs, i; double mypi, h, sum, x; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); h = 1. 0 / (double) n; sum = 0. 0; …

Вычисление числа с использованием MPI for (i = myid + 1; i <= n; Вычисление числа с использованием MPI for (i = myid + 1; i <= n; i += numprocs) { x = h * ((double)i - 0. 5); sum += (4. 0 / (1. 0 + x*x)); } mypi = h * sum; MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (myid == 0) printf("pi is approximately %. 16 f”, pi); MPI_Finalize(); return 0; }

Достоинства использования Open. MP вместо MPI для многоядерных процессоров Возможность инкрементального распараллеливания Упрощение программирования Достоинства использования Open. MP вместо MPI для многоядерных процессоров Возможность инкрементального распараллеливания Упрощение программирования и эффективность на нерегулярных вычислениях, проводимых над общими данными Ликвидация дублирования данных в памяти, свойственного MPIпрограммам Объем памяти пропорционален быстродействию процессора. В последние годы увеличение производительности процессора достигается увеличением числа ядер, при этом частота каждого ядра не увеличивается. Наблюдается тенденция к сокращению объема оперативной памяти, приходящейся на одно ядро. Присущая Open. MP экономия памяти становится очень важна. Наличие локальных и/или разделяемых ядрами КЭШей будут учитываться при оптимизации Open. MP-программ компиляторами, что не могут делать компиляторы с последовательных языков для MPI-процессов. 17 из 149

Достоинства использования Open. MP вместо MPI для многоядерных процессоров Для получения программы, способной работать Достоинства использования Open. MP вместо MPI для многоядерных процессоров Для получения программы, способной работать на кластере, необходимо распределить данные и вычисления между процессорами. После распределения данных требуется организовать межпроцессорные взаимодействия. В данном случае - для доступа к удаленным данным используются “теневые” грани, которые являются источником дублирования данных.

История Open. MP 1998 2002 2005 Open. MP C/C++ 1. 0 Open. MP C/C++ История Open. MP 1998 2002 2005 Open. MP C/C++ 1. 0 Open. MP C/C++ 2. 0 Open. MP F/C/C++ 2. 5 Open. MP Fortran 1. 0 Open. MP Fortran 1. 1 1997 1999 Open. MP Fortran 2. 0 2000 2010 Open. MP F/C/C++ 3. 0

Open. MP Architecture Review Board AMD Cray Fujitsu HP IBM Intel NEC The Portland Open. MP Architecture Review Board AMD Cray Fujitsu HP IBM Intel NEC The Portland Group, Inc. SGI Sun Microsoft ASC/LLNL c. OMPunity EPCC NASA RWTH Aachen University

Cимметричные мультипроцессорные системы (SMP) Все процессоры имеют доступ к любой точке памяти с одинаковой Cимметричные мультипроцессорные системы (SMP) Все процессоры имеют доступ к любой точке памяти с одинаковой скоростью. Процессоры подключены к памяти либо с помощью общей шины, либо с помощью crossbar-коммутатора. Аппаратно поддерживается когерентность кэшей.

Cимметричные мультипроцессорные системы (SMP) Fujitsu SPARC Enterprise M 9000 SPARC 64 VII 2, 88 Cимметричные мультипроцессорные системы (SMP) Fujitsu SPARC Enterprise M 9000 SPARC 64 VII 2, 88 / 2, 52 GHz 64 процессоров, 256 ядер, 512 нитей (Simultaneous Multi Threading) 4 TB памяти OS Solaris 10 http: //www. fujitsu. com/sparcenterprise/

Системы с неоднородным доступом к памяти (NUMA) Система состоит из однородных базовых модулей (плат), Системы с неоднородным доступом к памяти (NUMA) Система состоит из однородных базовых модулей (плат), состоящих из небольшого числа процессоров и блока памяти. Модули объединены с помощью высокоскоростного коммутатора. Поддерживается единое адресное пространство. Доступ к локальной памяти в несколько раз быстрее, чем к удаленной.

Системы с неоднородным доступом к памяти (NUMA) SGI Altix UV (Ultra. Violoet) 1000 256 Системы с неоднородным доступом к памяти (NUMA) SGI Altix UV (Ultra. Violoet) 1000 256 Intel® Xeon® quad-, six- or eight-core 7500 series (2048 cores) 16 TB памяти Interconnect Speed 15 ГБ/с, 1 мкс http: //www. sgi. com/products/servers/altix/uv/

Выполнение Open. MP-программы Fork-Join параллелизм: Главная (master) нить порождает группу (team) нитей по мере Выполнение Open. MP-программы Fork-Join параллелизм: Главная (master) нить порождает группу (team) нитей по мере небходимости. Параллелизм добавляется инкрементально. Параллельные области

Модель памяти в Open. MP 001 Нить Модель памяти в Open. MP 001 Нить

Тесты NAS Analyzing the Effect of Different Programming Models Upon Performance and Memory Usage Тесты NAS Analyzing the Effect of Different Programming Models Upon Performance and Memory Usage on Cray XT 5 Platforms http: //www. nersc. gov/news/reports/technical/Cug 2010 Shan. pdf

Литература http: //www. openmp. org http: //www. compunity. org Антонов А. С. Параллельное программирование Литература http: //www. openmp. org http: //www. compunity. org Антонов А. С. Параллельное программирование с использованием технологии Open. MP: Учебное пособие. -М. : Изд-во МГУ, 2009. http: //parallel. ru/info/parallel/openmp/Open. MP. p df

Спасибо за внимание! Спасибо за внимание!