лекции (OpenMP), страница 2
Описание файла
Файл "лекции" внутри архива находится в папке "OpenMP". PDF-файл из архива "OpenMP", который расположен в категории "". Всё это находится в предмете "параллельное программирование для высокопроизводительных вычислительных систем" из 11 семестр (3 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 2 страницы из PDF
Впоследние годы увеличение производительности процессорадостигается увеличением числа ядер, при этом частота каждогоядра не увеличивается. Наблюдается тенденция к сокращениюобъема оперативной памяти, приходящейся на одно ядро.Присущая OpenMP экономия памяти становится очень важна.Наличие локальных и/или разделяемых ядрами КЭШей будутучитываться при оптимизации OpenMP-программ компиляторами,что не могут делать компиляторы с последовательных языков дляMPI-процессов.Москва, 2015 г.Параллельное программирование с OpenMP: Введение© Бахтин В.А.31 из 47История OpenMP199820022005OpenMPF/C/C++ 2.5199720112013OpenMPC/C++ 2.0OpenMPC/C++ 1.0OpenMPFortran 1.02008OpenMPF/C/C++ 3.0OpenMPFortran 1.11999Москва, 2015 г.OpenMPFortran 2.0Параллельное программирование с OpenMP: Введение© Бахтин В.А.OpenMPF/C/C++ 3.1OpenMPF/C/C++ 4.032 из 47OpenMP Architecture Review BoardAMDCrayFujitsuHPIBMIntelNECOracle CorporationTexas InstrumentsNVIDIAConvey ComputerST MicroelectronicsМосква, 2015 г.ANLASC/LLNLcOMPunityEPCCLANLNASARed HatRWTH Aachen UniversityTexas Advanced ComputingCenterSNL- Sandia National LabBSC - BarcelonaSupercomputing CenterПараллельное программирование с OpenMP: Введение© Бахтин В.А.33 из 47Компиляторы, поддерживающие OpenMPOpenMP 4.0: GNU gcc (4.9.0) Intel 15.0: Linux, Windows and MacOSOpenMP 3.1: Oracle Solaris Studio12.3: Linux and Solaris Cray: Cray XT series Linux environment LLVM: clang Linux and MacOSOpenMP 3.0: PGI 8.0: Linux and Windows IBM 10.1: Linux and AIX Absoft Pro FortranMP: 11.1 NAG Fortran Complier 5.3Предыдущие версии OpenMP: Lahey/Fujitsu Fortran 95PathScaleMicrosoft Visual Studio 2008 C++HPМосква, 2015 г.Параллельное программирование с OpenMP: Введение© Бахтин В.А.34 из 47Обзор основных возможностей OpenMPC$OMP FLUSHOpenMP:для написания#pragmaomp APIcriticalмногонитевых приложенийC$OMP THREADPRIVATE(/ABC/)CALL OMP_SET_NUM_THREADS(10)•Множество директив компилятора,CALLOMP_TEST_LOCK(LCK)наборфункциибиблиотеки системыподдержки, переменныеокруженияC$OMPMASTERCALL OMP_INIT_LOCK (LCK)C$OMP ATOMIC• Облегчает создание многонитиевыхC$OMP SINGLE PRIVATE(X)на Фортране,C и C++SETENV программOMP_SCHEDULE“STATIC,4”•Обобщение опыта созданияC$OMP PARALLEL DO ORDERED PRIVATE (A, B, C)C$OMP дляORDEREDпараллельных программSMP иDSMC$OMP PARALLEL REDUCTION (+: A,B) систем за последние 20 летC$OMP PARALLEL DO SHARED(A,B,C)C$OMP SECTIONS#pragma omp parallel for private(a, b)C$OMP PARALLEL COPYIN(/blk/)C$OMP DO LASTPRIVATE(XX)nthrds = OMP_GET_NUM_PROCS()Москва, 2015 г.C$OMP BARRIERomp_set_lock(lck)Параллельное программирование с OpenMP: Введение© Бахтин В.А.35 из 47Cимметричные мультипроцессорные системы(SMP)Все процессоры имеют доступ к любой точке памяти с одинаковойскоростью.Процессоры подключены к памяти либо с помощью общей шины,либо с помощью crossbar-коммутатора.Аппаратно поддерживается когерентность кэшей.Например, серверы HP 9000 V-Class, Convex SPP-1200,…Москва, 2015 г.Параллельное программирование с OpenMP: Введение© Бахтин В.А.36 из 47Системы с неоднородным доступом к памяти(NUMA)Москва, 2015 г.Система состоит изоднородных базовых модулей(плат), состоящих изнебольшого числа процессорови блока памяти.Модули объединены спомощью высокоскоростногокоммутатора.Поддерживается единоеадресное пространство.Доступ к локальной памяти внесколько раз быстрее, чем кудаленной.Параллельное программирование с OpenMP: Введение© Бахтин В.А.37 из 47Системы с неоднородным доступом к памяти(NUMA)SGI Altix UV (UltraVioloet) 2000256 Intel® Xeon® processor E5-4600product family 2.4GHz-3.3GHz - 2048 Cores(4096 Threads)64 TB памятиNUMAlink6 (NL6; 6.7GB/s bidirectional)http://www.sgi.com/products/servers/uv/Москва, 2015 г.Параллельное программирование с OpenMP: Введение© Бахтин В.А.38 из 47Top 500Москва, 2015 г.Параллельное программирование с OpenMP: Введение© Бахтин В.А.39 из 47Top 500Москва, 2015 г.Параллельное программирование с OpenMP: Введение© Бахтин В.А.40 из 47Intel Xeon Phi (Many Integrated Core - MIC)Москва, 2015 г.Параллельное программирование с OpenMP: Введение© Бахтин В.А.41 из 47Литературahttp://www.openmp.org http://www.compunity.org http://www.parallel.ru/tech/tech_dev/openmp.htmlМосква, 2015 г.Параллельное программирование с OpenMP: Введение© Бахтин В.А.42 из 47ЛитератураАнтонов А.С.
Параллельное программирование сиспользованием технологии OpenMP: Учебное пособие.М.: Изд-во МГУ, 2009.http://parallel.ru/info/parallel/openmp/OpenMP.pdf Воеводин В.В., Воеводин Вл.В. Параллельныевычисления. - СПб.: БХВ-Петербург, 2002. Гергель В.П.
Теория и практика параллельныхвычислений. - М.: Интернет-Университет, БИНОМ.Лаборатория знаний, 2007.Москва, 2015 г.Параллельное программирование с OpenMP: Введение© Бахтин В.А.43 из 47ЛитератураУчебные курсы Интернет Университета Информационныхтехнологий Гергель В.П. Теория и практика параллельных вычислений. —http://www.intuit.ru/department/calculate/paralltp/ Левин М.П. Параллельное программирование с OpenMPhttp://www.intuit.ru/department/se/openmp/Москва, 2015 г.Параллельное программирование с OpenMP: Введение© Бахтин В.А.44 из 47Вопросы?Вопросы?Москва, 2015 г.Параллельное программирование с OpenMP: Введение© Бахтин В.А.45 из 47Следующая темаOpenMP – модель параллелизма по управлениюМосква, 2015 г.Параллельное программирование с OpenMP: Введение© Бахтин В.А.46 из 47КонтактыБахтин В.А., кандидат физ.-мат.
наук, заведующийсектором, Институт прикладной математики им.М.В.Келдыша РАНbakhtin@keldysh.ruМосква, 2015 г.Параллельное программирование с OpenMP: Введение© Бахтин В.А.47 из 47Интернет УниверситетСуперкомпьютерных технологийЛекция 2: OpenMP - модель параллелизмапо управлениюУчебный курсПараллельное программирование сOpenMPБахтин В.А., кандидат физ.-мат. наук,заведующий сектором,Институт прикладной математики им.М.В.Келдыша РАНСодержаниеВыполнение OpenMP-программы (Fork and JoinModel). Модель памяти.
Понятие консистентности памяти. Консистентность памяти в OpenMP (weak ordering). Классы переменных (клаузы SHARED, PRIVATE;директива THREADPRIVATE).Москва, 2015 г.Параллельное программирование с OpenMP: OpenMP - модельпараллелизма по управлению © Бахтин В.А.2 из 36Выполнение OpenMP-программыFork-Join параллелизм: Главная (master) нить порождает группу (team) нитей по меренебходимости. Параллелизм добавляется инкрементально.Параллельные областиМосква, 2015 г.Параллельное программирование с OpenMP: OpenMP - модельпараллелизма по управлению © Бахтин В.А.3 из 36Фрагмент программыint a, b, c, d, x, y;int *p, *q;int f(int *p, int *q);a = x * (x - 1);b = y * (y + 1);c = a * a + a * b + b * b;d = a * b * c;p = &a;q = &b;x = f(p, q);Москва, 2015 г.// переменные// указатели// прототип функции// a хранится в регистре// b хранится в регистре// будет использовано позднее// будет использовано позднее// получает адрес a// получает адрес b// вызов функцииПараллельное программирование с OpenMP: OpenMP - модельпараллелизма по управлению © Бахтин В.А.4 из 36Когерентность и консистентность памятиP0:W(x)aR(y)bP1: W(y)bR(y)bR(x)aПроцессорКэшВремяW(x)bПроцессорОперативнаяпамятьКэшОперативнаяпамятьСеть передачи данныхМосква, 2015 г.Параллельное программирование с OpenMP: OpenMP - модельпараллелизма по управлению © Бахтин В.А.5 из 36Сеть передачи данныхПроизводительMPI latency, вмикросекундахBandwidth perlink(unidirectional,MB/s)NUMAlink 4 (Altix)SGI13400RapidArray (XD1)Cray1.82000QsNet IIQuadrics2900InfinibandVoltaire3.5830High PerformanceSwitchIBM51000Myrinet XP2Myricom5.7495SP Switch 2IBM18500Сеть передачиданныхEthernetVarious30http://www.sgi.com/products/servers/numalink.htmlМосква, 2015 г.Параллельное программирование с OpenMP: OpenMP - модельпараллелизма по управлению © Бахтин В.А.1006 из 36Модели консистентности памятиМодель консистентности представляет собой некоторый договор междупрограммами и памятью, в котором указывается, что при соблюдениипрограммами определенных правил работа памяти будет корректной,если же требования к программе будут нарушены, то память негарантирует правильность выполнения операций чтения/записи.Далее рассматриваются основные модели консистентности.Москва, 2015 г.Параллельное программирование с OpenMP: OpenMP - модельпараллелизма по управлению © Бахтин В.А.7 из 36Строгая консистентностьОперация чтения ячейки памяти с адресом X должна возвращатьзначение, записанное самой последней операцией записи с адресом X,называется моделью строгой консистентности.a) строгая консистентностьP0:ВремяW(x)aP1:R(x)aб) нестрогая консистентностьP0:ВремяW(x)aP1:R(x)NIL R(x)aМосква, 2015 г.Параллельное программирование с OpenMP: OpenMP - модельпараллелизма по управлению © Бахтин В.А.8 из 36Последовательная консистентностьВпервые определил Lamport в 1979 г.
в контексте совместноиспользуемой памяти для мультипроцессорных систем.Результат выполнения должен быть тот-же, как если бы операторы всехпроцессоров выполнялись бы в некоторой последовательности, причемоперации каждого отдельного процесса выполнялись бы в порядке,определяемой его программой.Последовательная консистентность не гарантирует, что операция чтениявозвратит значение, записанное другим процессом наносекундой илидаже минутой раньше, в этой модели только точно гарантируется, что всепроцессы знают последовательность всех записей в память.Москва, 2015 г.Параллельное программирование с OpenMP: OpenMP - модельпараллелизма по управлению © Бахтин В.А.9 из 36Последовательная консистентностьа) удовлетворяет последовательной консистентностиP1W(x)aP2W(x)bP3R(x)bP4R(x)aR(x)bR(x)aб) не удовлетворяет последовательной консистентностиP1P2P3P4Москва, 2015 г.W(x)aW(x)bR(x)bR(x)aR(x)aПараллельное программирование с OpenMP: OpenMP - модельпараллелизма по управлению © Бахтин В.А.R(x)b10 из 36Последовательная консистентностьРезультат повторного выполнения параллельной программы в системе споследовательной консистентностью может не совпадать с результатомпредыдущего выполнения этой же программы, если в программе нетрегулирования операций доступа к памяти с помощью механизмовсинхронизации.P1P2P3x=1;Print (y,z);y=1;Print(x,z);z=1;Print (x,y);x=1;x=1;y=1;y=1;Print (y,z);y=1;z=1;x=1;y=1;Print(x,z);Print (x,y);z=1;Print(x,z);Print (y,z);Print(x,z);Print(x,z);z=1;z=1;x=1;Print (y,z);Print (x,y);Print (x,y);Print (y,z);Print (x,y);0010111010110101111111111Москва, 2015 г.Параллельное программирование с OpenMP: OpenMP - модельпараллелизма по управлению © Бахтин В.А.11 из 36Причинная консистентностьПредположим, что процесс P1 модифицировал переменную x, затемпроцесс P2 прочитал x и модифицировал y.