лекции (OpenMP), страница 7
Описание файла
Файл "лекции" внутри архива находится в папке "OpenMP". PDF-файл из архива "OpenMP", который расположен в категории "". Всё это находится в предмете "параллельное программирование для высокопроизводительных вычислительных систем" из 11 семестр (3 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 7 страницы из PDF
Все остальныенити будут дожидатьсярезультатов выполнения блока,если не указана клауза NOWAIT.Москва, 2015 г.#include <stdio.h>float x, y;#pragma omp threadprivate(x, y)void init() {#pragma omp single copyprivate(x,y)scanf("%f %f", &x, &y);}int main () {#pragma omp parallel{init ();parallel_work ();}}Параллельное программирование с OpenMP: Конструкциираспределения работы © Бахтин В.А.38 из 42Распределение операторов одного структурного блокамежду нитями (директива WORKSHARE).SUBROUTINE EXAMPLE (AA, BB, CC, DD, EE, FF, GG, HH, N)INTEGER NREAL AA(N,N), BB(N,N), CC(N,N)REAL DD(N,N), EE(N,N), FF(N,N)REAL GG(N,N), HH(N,N)REAL SHR!$OMP PARALLEL SHARED(SHR)!$OMP WORKSHAREAA = BBCC = DDWHERE (EE .ne.
0) FF = 1 / EESHR = 1.0GG (1:50,1) = HH(11:60,1)HH(1:10,1) = SHR!$OMP END WORKSHARE!$OMP END PARALLELEND SUBROUTINE EXAMPLEМосква, 2015 г.Параллельное программирование с OpenMP: Конструкциираспределения работы © Бахтин В.А.39 из 42Спасибо за внимание!Вопросы?Москва, 2015 г.Параллельное программирование с OpenMP: Конструкциираспределения работы © Бахтин В.А.40 из 42Следующая темаКонструкции для синхронизации нитейМосква, 2015 г.Параллельное программирование с OpenMP: Конструкциираспределения работы © Бахтин В.А.41 из 42КонтактыБахтин В.А., кандидат физ.-мат. наук, заведующийсектором, Институт прикладной математики им.М.В.Келдыша РАНbakhtin@keldysh.ruМосква, 2015 г.Параллельное программирование с OpenMP: Конструкциираспределения работы © Бахтин В.А.42 из 42Использование OpenMP на кластереБахтин Владимир АлександровичАссистент кафедры системного программированнияфакультета ВМК, МГУ им.
М. В. ЛомоносоваК.ф.-м.н., зав. сектором Института прикладнойматематики им М.В.Келдыша РАНМосква, 2015 г.Содержание Современные вычислительные системы Технология Intel Cluster OpenMP Гибридная модель MPI/OpenMP8 декабряМосква, 2015Использование OpenMP на кластере2 из 84Top 5008 декабряМосква, 2015top500.org3 из 84Top 5008 декабряМосква, 2015top500.org4 из 84Гибридная вычислительная система K-100…Node 18 декабряМосква, 2015Node 64Использование OpenMP на кластере5 из 84Содержание Современные вычислительные системы Технология Intel Cluster OpenMP Гибридная модель MPI/OpenMP8 декабряМосква, 2015Использование OpenMP на кластере6 из 84Технология Intel Cluster OpenMPВ 2006 году в Intel® компиляторах версии 9.1 появилась поддержкаCluster OpenMP. Технология Cluster OpenMP поддерживает выполнение OpenMPпрограмм на нескольких вычислительных узлах, объединенных сетью. Базируется на программной реализации DSM (Thread Marks softwareby Rice University).Для компилятора Intel® C++: icc -cluster-openmp options source-file icc -cluster-openmp-profile options source-fileДля компилятора Intel® Fortran: ifort -cluster-openmp options source-file ifort -cluster-openmp-profile options source-filekmp_cluster.ini--hostlist=home,remote --process_threads=28 декабряМосква, 2015Intel Cluster OpenMP7 из 84Модель памяти в OpenMP001Нить001Нить001Нить8 декабряМосква, 2015Intel Cluster OpenMPМодель памяти в OpenMP… = i + 3;statici =int1 i = 0;#pragma omp flush (i)i=1#pragma omp flush (i)i =ii =i=+011;Нить001 1Нить001 0… = i + 2; // ?8 декабряМосква, 2015Intel Cluster OpenMPКонсистентность памяти в OpenMPКорректная последовательность работы нитей с переменной:Нить0 записывает значение переменной - write(var)Нить0 выполняет операцию синхронизации – flush (var)Нить1 выполняет операцию синхронизации – flush (var)Нить1 читает значение переменной – read (var)Директива flush:#pragma omp flush [(list)] - для Си!$omp flush [(list)] - для Фортран8 декабряМосква, 2015Intel Cluster OpenMPКонсистентность памяти в OpenMP1.2.3.Если пересечение множеств переменных, указанных в операциях flush,выполняемых различными нитями не пустое, то результат выполненияопераций flush будет таким, как если бы эти операции выполнялись внекоторой последовательности (единой для всех нитей).Если пересечение множеств переменных, указанных в операциях flush,выполняемых одной нитью не пустое, то результат выполнения операцийflush, будет таким, как если бы эти операции выполнялись в порядкеопределяемом программой.Если пересечение множеств переменных, указанных в операциях flush,пустое, то операции flush могут выполняться независимо (в любомпорядке).8 декабряМосква, 2015Intel Cluster OpenMPКонсистентность памяти в OpenMP#pragma omp flush [(список переменных)]По умолчанию все переменные приводятся в консистентное состояние (#pragmaomp flush):при барьерной синхронизации;при входе и выходе из конструкций parallel, critical и ordered;при выходе из конструкций распределения работ (for, single,sections, workshare), если не указана клауза nowait;при вызове omp_set_lock и omp_unset_lock;при вызове omp_test_lock, omp_set_nest_lock,omp_unset_nest_lock и omp_test_nest_lock, если изменилосьсостояние семафора.При входе и выходе из конструкции atomic выполняется #pragma omp flush(x),где x – переменная, изменяемая в конструкции atomic.8 декабряМосква, 2015Intel Cluster OpenMPПреимущества Intel Cluster OpenMPУпрощает распределение последовательного или OpenMP кода поузлам.Позволяет использовать одну и ту же программу дляпоследовательных, многоядерных и кластерных систем.Требует совсем незначительного изменения кода программы, чтоупрощает отладку.Позволяет слегка измененной OpenMP-программе выполняться набольшем числе процессоров без вложений в аппаратнуюсоставляющую SMP.Представляет собой альтернативу MPI, которая может быть быстрееосвоена и применена.8 декабряМосква, 2015Intel Cluster OpenMP13 из 84Директива SHARABLE#pragma intel omp sharable ( variable [, variable …] ) – для Си и Си++!dir$ omp sharable ( variable [, variable …] ) - для Фортранаопределяют переменные, которые должны быть помещены вDistributed Virtual Shared MemoryВ компиляторе существуют опции, которые позволяют изменить класспеременных, не изменяя текст программы:[-no]-clomp-sharable-argexprs[-no]-clomp-sharable-commons[-no]-clomp-sharable-localsaves[-no]-clomp-sharable-modvars8 декабряМосква, 2015Intel Cluster OpenMP14 из 84Работа с SHARABLE- переменными8 декабряМосква, 2015Intel Cluster OpenMP15 из 84Использование Intel Cluster OpenMPЦелесообразно: если программа дает хорошее ускорение при использовании технологииOpenMP:Speedup = Time(1thread)/Time (n threads) = ~n еcли программа требует малой синхронизации данные в программе хорошо локализованыНаиболее целесообразно для задач (RMS - recognition, mining, andsynthesis): Обработка больших массивов данных Рендеринг в графике Поиск Распознавание образов Выделение последовательностей в генетике8 декабряМосква, 2015Intel Cluster OpenMP16 из 84Использование Intel Cluster OpenMP1.
a particle-simulation code2. a magneto-hydro-dynamics code3. a computational fluid dynamics code4. a structure-simulation code8 декабряМосква, 20155. a graph-processing code6. a linear solver code7. an x-ray crystallography codeIntel Cluster OpenMP17 из 84Содержание Современные вычислительные системы Технология Intel Cluster OpenMP Гибридная модель MPI/OpenMP8 декабряМосква, 2015Гибридная модель программирования MPI/OpenMP18 из 84Гибридная модель MPI/OpenMPДанныеВычисленияMPICoreДанныеДанныеВычисленияВычисленияOpenMPOpenMPCore … CoreУзел 08 декабряМосква, 2015CoreCore … CoreУзел NГибридная модель программирования MPI/OpenMP19 из 84Достоинства использования в узлахOpenMP вместо MPI Возможность инкрементального распараллеливания. Упрощение программирования и эффективность нанерегулярных вычислениях, проводимых над общимиданными. Ликвидация или сокращение дублирования данных впамяти, свойственного MPI-программам. Дополнительный уровень параллелизма на OpenMPреализовать проще, чем на MPI.8 декабряМосква, 2015Гибридная модель программирования MPI/OpenMP20 из 84Преимущества OpenMP длямногоядерных процессоров Объемы оперативной памяти и кэш памяти,приходящиеся в среднем на одно ядро, будутсокращаться – присущая OpenMP экономия памятистановится очень важна. Ядра используют общую Кэш-память, что требуетсяучитывать при оптимизации программы.8 декабряМосква, 2015Гибридная модель программирования MPI/OpenMP21 из 84National Institute for ComputationalSciences.
University of TennesseeСуперкомпьютер Kraken Cray XT5-HE Opteron Six Core 2.6 GHzhttp://nics.tennessee.eduПиковая производительность – 1173.00 TFlop/sЧисло ядер в системе — 112 800Производительность на Linpack – 919.1 TFlop/s (78% от пиковой)Updrage: замена 4-х ядерных процессоров AMD Opteron на 6-ти ядерныепроцессоры AMD OpteronРезультат: 6-ое место в TOP500 в июне 2009 - 3-ье место в TOP500 вноябре 20098 декабряМосква, 2015Гибридная модель программирования MPI/OpenMP22 из 84National Institute for ComputationalSciences.
University of TennesseeСуперкомпьютер Kraken Cray XT5-HE Opteron Six Core 2.6 GHzhttp://nics.tennessee.eduПиковая производительность – 1173.00 TFlop/sЧисло ядер в системе — 112 800Производительность на Linpack – 919.1 TFlop/s (78% от пиковой)Updrage: замена 4-х ядерных процессоров AMD Opteron на 6-ти ядерныепроцессоры AMD OpteronРезультат: 6-ое место в TOP500 в июне 2009 - 3-ье место в TOP500 вноябре 20098 декабряМосква, 2015Гибридная модель программирования MPI/OpenMP23 из 84Межведомственный СуперкомпьютерныйЦентр Российской Академии НаукСуперкомпьютер MVS-100Khttp://www.jscc.ru/Пиковая производительность – 227,94 TFlop/sЧисло ядер в системе — 13 004Производительность на Linpack – 119,93 TFlop/s (52.7% от пиковой)Updrage: замена 2-х ядерных процессоров Intel Xeon 53xx на 4-х ядерныепроцессоры Intel Xeon 54xxРезультат: 57-ое место в TOP500 в июне 2008 - 36-ое место в TOP500 вноябре 20088 декабряМосква, 2015Гибридная модель программирования MPI/OpenMP24 из 84Oak Ridge National LaboratoryСуперкомпьютер Jaguar Cray XT5-HE Opteron Six Core 2.6 GHzhttp://computing.ornl.govПиковая производительность - 2627 TFlop/sЧисло ядер в системе — 298 592Производительность на Linpack - 1941 TFlop/s (73.87% от пиковой)Updrage: замена 4-х ядерных процессоров AMD Opteron на 6-ти ядерныепроцессоры AMD OpteronРезультат: 2-ое место в TOP500 в июне 2009 - 1-ое место в TOP500 вноябре 20098 декабряМосква, 2015Гибридная модель программирования MPI/OpenMP25 из 84Oak Ridge National LaboratoryJaguar Scheduling PolicyMINCoresMAXCoresMAXIMUMWALL-TIME(HOURS)120 0008 декабряМосква, 20152440 008119 99924500440 0071220045003612 0032Гибридная модель программирования MPI/OpenMP26 из 84Cray MPI: параметры по умолчаниюMPI Environment Variable Name 1,000 PEs10,000 PEs50,000 PEs100,000 PesMPICH_MAX_SHORT_MSG_SIZE(This size determines whetherthe message uses the Eager orRandervous protocol)128,000Bytes20,48040962048MPICH_UNEX_BUFFER_SIZE(The buffer allocated to hold theunexpected Eager data)60 MB60 MB150 MB260 MBMPICH_PTL_UNEX_EVENTS20,480(Portals generates two events for eventseach unexpected messagereceived)22,000110,000220,000MPICH_PTL_OTHER_EVENTS(Portals send-side and expectedevents)250012,50025,0008 декабряМосква, 20152048eventsГибридная модель программирования MPI/OpenMP27 из 84Тесты NAS8 декабряМосква, 2015BT3D Навье-Стокс, метод переменных направленийCGОценка наибольшего собственного значениясимметричной разреженной матрицыEPГенерация пар случайных чисел ГауссаFTISLUБыстрое преобразование Фурье, 3D спектральныйметодПараллельная сортировка3D Навье-Стокс, метод верхней релаксацииMG3D уравнение Пуассона, метод MultigridSP3D Навье-Стокс, Beam-Warning approximatefactorizationГибридная модель программирования MPI/OpenMP28 из 84Тесты NASAnalyzing the Effect of Different Programming Models Upon Performanceand Memory Usage on Cray XT5 Platformshttps://www.nersc.gov/assets/NERSC-Staff-Publications/2010/Cug2010Shan.pdf8 декабряМосква, 2015Гибридная модель программирования MPI/OpenMP29 из 84Тесты NASAnalyzing the Effect of Different Programming Models Upon Performanceand Memory Usage on Cray XT5 Platformshttps://www.nersc.gov/assets/NERSC-Staff-Publications/2010/Cug2010Shan.pdf8 декабряМосква, 2015Гибридная модель программирования MPI/OpenMP30 из 84Тесты NASAnalyzing the Effect of Different Programming Models Upon Performanceand Memory Usage on Cray XT5 Platformshttps://www.nersc.gov/assets/NERSC-Staff-Publications/2010/Cug2010Shan.pdf8 декабряМосква, 2015Гибридная модель программирования MPI/OpenMP31 из 84Тесты NAS (класс B)9080Время выполнения, в сек706050403020100MPIOpenMPCG55,9152,02EP5,276,92FT36,8419,14IS2,11,13LU82,2764,82MG7,818,8Суперкомпьютер MVS-100Kmvapich 1.2Intel compiler, v.