Параллельные вычисления на суперкомпьютерах с помощью технологии OpenMP 9785799636296


224 75 9MB

Russian Pages [108] Year 2023

Report DMCA / Copyright

DOWNLOAD PDF FILE

Recommend Papers

Параллельные вычисления на суперкомпьютерах с помощью технологии OpenMP
 9785799636296

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

Уральский федеральный университет имени первого Президента России Б. Н. Ельцина

Институт радиоэлектроники и информационных технологий

Е. Н. АКИМОВА В. Е. МИСИЛОВ

ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ НА СУПЕРКОМПЬЮТЕРАХ С ПОМОЩЬЮ ТЕХНОЛОГИИ OpenMP Учебное пособие

Министерство науки и высшего образования Российской Федерации Уральский федеральный университет имени первого Президента России Б. Н. Ельцина

Е. Н. Акимова, В. Е. Мисилов

Параллельные вычисления на суперкомпьютерах с помощью технологии OpenMP

Учебное пособие

Рекомендовано методическим советом Уральского федерального университета для студентов бакалавриата и магистратуры, обучающихся по направлениям подготовки 09.03.01, 09.04.01 — Информатика и вычислительная техника

Екатеринбург Издательство Уральского университета 2023

УДК 004.42:004.382.2(075.8) ББК 32.973.я73+32.971.321.1 .я73 АЗ 9 Рецензенты: кафедра шахматного искусства и компьютерной математики Ураль­ ского государственного экономического университета (зам. заведую­ щего кафедрой, канд. экон. наук, доц. E. Н. Стариков) д-р физ.-мат. наук, ст. науч. сотр. А. Г. Бабенко, заведующий отде­ лом аппроксимации и приложений Института математики и механи­ ки им. Н. Н. Красовского УрО РАН Научный редактор — д-р физ.-мат. наук, чл.-корр. РАН, проф. П. С. Мартышке, заведующий лабораторией математической геофи­ зики Института геофизики им. Ю. П. Булашевича УрО РАН

Акимова, Елена Николаевна. А39 Параллельные вычисления на суперкомпьютерах с помощью технологии Open М Р : учебное пособие / Е. Н. Акимова, В. Е. Мисилов; М-во науки и высшего образования РФ. — Екатеринбург: Изд-во Урал, ун-та, 2023. — 104 с. ISBN 978-5-7996-3629-6 У чебное пособие предназначено для изучения параллельны х вы ­ числений с пом ощ ью технологии О реиМ Р — основного средства про­ грам м ирования для вы числительны х систем с общ ей памятью . Учеб­ ное пособие вклю чает в себя описание основны х директив, ф ункций и перем енны х окруж ения стандарта О репМ Р. П риводятся прим еры их при м ен ен и я в программ ах н а язы ках C /C + + . П особие предназначено для студентов бакалавриата и м агистра­ туры и аспирантов, обучаю щ ихся по направлениям , связанны м с м а­ тем атическим м оделированием и и н ф орм ац и он н ы м и технологиям и. Библиогр.: 12 назв. Рис. 33. Табл. 6.

УДК 004.42:004.382.2(075.8) ББК 32.973.я73+32.971.321.1 .я73

ISBN 978-5-7996-3629-6

© Уральский федеральный университет, 2023

Оглавление

Предисловие................................................................................................... 5 Введение..........................................................................................................6 Раздел А. Современные вычислительные системы....................................9 1. Списки TOP-500, Green-500, T O P-50................................................ 10 2. Суперкомпьютеры российских университетов и научных институтов........................................................................... 25 2.1. МГУ имени М. В. Ломоносова: суперкомпьютер «Ломоносов-2»................................................25 2.2. Санкт-Петербургский политехнический университет: «Политехник — РСК Торнадо»................................................... 26 2.3. Высшая школа экономики: cHARISMa....................................27 2.4. Межведомственный суперкомпьютерный центр РАН: «МВС-10П».....................................................................................28 2.5. Объединенный институт ядерных исследований: суперкомпьютер имени Н. Н. Говоруна....................................29 2.6. Нижегородский государственный университет им. Н. И. Лобачевского: суперкомпьютер «Лобачевский» ....30 2.7. Южно-Уральский государственный университет (Челябинск): «РСК Торнадо ЮУрГУ»............... 31 2.8. Сибирский суперкомпьютерный центр, ИВМиМГ СО РАН: «НКС-1П».................................................. 32 2.9. ИММ УрО РАН (Екатеринбург): суперкомпьютер «Уран»............................................................... 34 3. Классификации вычислительных систем......................................... 40 3.1. Классификация Ф линна..............................................................40 3.2. Дополнения Ванга и Бриггса к классификации Ф линна..... 43 3.3. Классификация в зависимости от структуры памяти.............44 4. Архитектура многоядерных систем.................................................... 47 4.1. Современные многоядерные процессоры..........................47 4.2. Архитектура Intel Skylake....................................................... 48 3

Оглавление

4.3. Архитектура сопроцессоров Intel Xeon P h i.......................53 Контрольные вопросы к разделу А..........................................................56 Раздел Б.Технология OpenMP.................................................................. 59 5. Использование OpenMP в языках C и C + + ......................................60 5.1. Концепция многопоточности в OpenM P................................. 60 5.2. Компиляция и запуск параллельных программ на суперкомпьютере «Уран»....................................................... 62 5.3. Компиляция и запуск параллельных программ на персональном компьютере..................................................... 64 6. Переменные окружения........................................................................67 7. Библиотечные процедуры.....................................................................69 8. Директивы O penM P.............................................................................. 70 8.1. Директива parallel.......................................................................... 70 8.2. Взаимодействие потоков. Директивы critical, single, master, atom ic..................................................................................71 8.3. Управление доступом к данным. Опции private и shared.......72 8.4. Распределение работы между потоками. Директива for........73 8.5. Независимые параллельные секции. Директива sections......75 8.6. Выполнение независимых заданий. Директивы task, taskwait............................................................... 76 8.7. Синхронизация. Директивы barrier, ordered............................ 77 8.8. Векторизация. Использование директив simd и declare sim d.........................................................................77 Контрольные вопросы к разделу Б ..........................................................79 Примеры программ к разделу Б .............................................................. 81 Задания для самостоятельной работы к разделу Б ...............................93 Площадь многоугольника.................................................................. 93 Поиск палиндромов............................................................................. 94 Задача Дирихле для уравнения Пуассона........................................ 95 Список рекомендуемой литературы...........................................................99

4

Предисловие

Учебное пособие предназначено для изучения параллельных вы­ числений с помощью технологии ОрепМР — основного средства про­ граммирования для вычислительных систем с общей памятью. Техно­ логия ОрепМР используется при составлении программ для решения прикладных задач на многоядерных процессорах. Пособие состоит из двух разделов. В разделе А описаны совре­ менные суперкомпьютеры российских научных институтов и универ­ ситетов, обобщены материалы по современным суперкомпьютерам, входящим в списки ТОР-500, Green-500, ТОР-50, а также приведена классификация параллельных вычислительных систем и многоядер­ ных систем. Приводятся сведения об архитектуре многоядерных си­ стем и основных компонентах технологии ОрепМР. В разделе Б описано использование ОрепМР в языках С и C++, рас­ смотрены компиляция и запуск программ на суперкомпьютере «Уран» и разработка параллельных программ. Описаны основные компонен­ ты и директивы технологии ОрепМР, приведены примеры программ, даны задания для самостоятельной работы. В результате освоения материала учебного пособия обучающий­ ся должен: • знать классификацию высокопроизводительных вычислитель­ ных систем; архитектуру современных многоядерных процессоров; ми­ ровые и российские суперкомпьютерные системы; компоненты тех­ нологии ОрепМР; возможности современных компиляторов; • уметь компилировать и запускать программы на кластере или персональном компьютере; использовать переменные окружения, би­ блиотечные процедуры и директивы ОрепМР; выбирать подходящие для распараллеливания участки кода; • владеть навыками использования технологии ОрепМР для рас­ параллеливания программ на системах с общей памятью и многоядер­ ными процессорами. 5

Введение

Долгое время рост тактовой частоты был основным способом повы­ шения производительность компьютеров. Со временем такой подход стал невыгодным в силу физических ограничений элементной базы. Одной из ключевых проблем остается ограниченность скорости света. Увеличение тактовой частоты также приводит к нелинейному росту те­ пловыделения и потребляемой мощности, поэтому современные ком­ пьютеры требуют все более серьезных систем охлаждения. Дальнейшее увеличение размера транзисторов ограничено квантовыми эффектами. В результате производители компьютеров перенаправили свои силы в сторону развития параллельных систем. Теоретически один про­ цессор с тактовой частотой 10 ГГц будет равен по производительно­ сти компьютеру с 1000 процессоров с частотой 10 МГц. При этом та­ кие «слабые» процессоры будут менее энергоемкими, более простыми и дешевыми в производстве, более компактными, а также более на­ дежными. Поясним сказанное на примере рис. 1. В центре рисунка (рис. 1, б) приведены показатели эталонного процессора, принятые за 1 для по­ следующего сравнения. Пусть для повышения быстродействия процессора его тактовая частота увеличена на 20 % (рис. 1, а), тогда производительность про­ цессора увеличится, однако не на 20, а на 10 %, в то время как энерго­ потребление возрастет существенно — на 80 %. Данный пример явля­ ется на самом деле очень характерным —увеличение тактовой частоты процессора приводит в большинстве случаев к значительному росту энергопотребления. При уменьшении тактовой частоты на 20 % (рис. 1, в) производи­ тельность процессора уменьшится примерно на 10 % (т. е. станет равной 90 % от исходной производительности). Энергопотребление процес­ сора соответственно уменьшится, причем достаточно значительно — до уровня примерно 60 % энергопотребления исходного процессора. 6

Введение

И тогда, добавив в процессор второе вычислительное ядро за счет поя­ вившихся свободных транзисторов, мы можем довести суммарные по­ казатели процессора по энергопотреблению до уровня 120 % энергопо­ требления исходного процессора, а производительность — до уровня 180%. 1,8х

а

1.8х

б

в

Рис. 1. Д ем онстрация зависим ости меж ду энергопотреблением (правые столбцы) и производительностью (левые столбцы ) процессоров: а — процессор с повышенной тактовой частотой; б — эталонный процессор; в — двухъядерный процессор с пониженной тактовой частотой

Многоядерные системы широко распространены в мире. Это позво­ ляет повышать производительность компьютеров, что ведет к умень­ шению энергопотребления, снижению сложности логики процессо­ ров и т. п. Поэтому многоядерность становится одним из основных на­ правлений развития компьютерной техники. С каждым годом многоядерных систем становится все больше, их производительность растет колоссальными темпами. Согласно второму закону Мура производи­ тельность микропроцессоров удваивается каждые 18 месяцев. Сейчас практически любой компьютер оборудован многоядерным процес­ сором. Даже настольные системы начального уровня имеют не менее двух ядер. В настоящее время типичный настольный компьютер име­ ет 6—8 ядер, мощные рабочие станции — 12—18. Стоит обратить внимание, что производительность не возрастает линейно с увеличением количества ядер, то есть задействование четы­ рех ядер не гарантирует увеличение производительности в четыре раза. 7

Введение

Третий способ повышения производительности состоит в добавле­ нии дополнительных функциональных блоков. В современных процес­ сорах обычно имеется несколько арифметико-логических устройств, что позволяет выполнять несколько независимых операций одновременно. Разделение задач на более мелкие сегменты (увеличение количества уровней конвейера), с одной стороны, повысит производительность, потому что более мелкие операции быстрее выполняются, с другой — увеличит число прерываний, кэш-промахов и неверно спрогнозиро­ ванных переходов, нарушающих нормальный ход обработки команд. Еще один способ повысить эффективность процессора — реали­ зовать многопоточность (Simultaneous Multithreading). Ее преимуще­ ство — возможность ввести в действие незадействованные аппаратные ресурсы. Основной принцип — одновременное исполнение несколь­ ких программных потоков. Операционная система рассматривает мно­ гопоточный процессор как два процессора с общими кэшами и памя­ тью. Таким образом, прикладная программа может задействовать оба таких логических процессора независимо друг от друга. Существует проблема: при быстром росте производительности про­ граммная индустрия пока не успевает за аппаратной, и только часть приложений способна эффективно использовать ресурсы многоядер­ ных процессоров. Каждая программа имеет один главный поток вы­ полнения —набор инструкций, которые выполняются последователь­ но одна за другой. Естественно, в этом случае задействовано одно ядро процессора. ЕІрограммист должен позаботиться о загрузке остальных ядер работой, иными словами, сделать так, чтобы некоторые проце­ дуры выполнялись не последовательно, а одновременно — в парал­ лельном режиме.

8

Раздел А. Современные вы числительны е системы

Списки TOP-500, Green-500, TOP-50 ▼ Суперкомпьютеры российских университетов и научных институтов ▼ Классификации вычислительных систем ▼ Архитектура многоядерных систем

Раздел А. Современные вычислительные системы

1. Списки ТОР-500, Green-500, ТОР-50

Производительность вычислительных систем измеряется в Floating Point Operation per Second (Flop/s, флоп/с) — количестве выполняе­ мых операций над дробными числами с плавающей точкой в секунду. Следует различать пиковую производительность и реальную. Пико­ вая производительность (Яреа]) объявляется производителем процессо­ ров. На практике она обычно недостижима. Реальная производитель­ ность (7?тах) измеряется с помощью тестовых программных пакетов, реализующих реальные задачи. Одним из популярных тестов являет­ ся Linpack, реализующий решение систем линейных алгебраических уравнений большого размера. В таблице 1 перечислены пять самых мощных вычислительных систем по версии ТОР-500 на 2022 год*. Список обновляется два раза в год и озвучивается на международной научной конференции ISC High Performance. В таблице 2 приведены пять самых мощных вычислительных си­ стем России из списка ТОР-50. Кроме того, в ней перечислены вы­ числительные системы крупнейших научных центров России. Список составляется Научно-исследовательским вычислительным центром МГУ имени М. В. Ломоносова и Межведомственным суперкомпью­ терным центром Российской академии наук. Он обновляется два раза в год на международных научных конференциях «Параллельные вы­ числительные технологии» и «Суперкомпьютерные дни в России». Важной проблемой является энергопотребление современных су­ перкомпьютеров. Как видно из таблицы 1, наиболее мощные вычис­ лительные системы уже потребляют десятки мегаватт. Многие из них имеют собственные электростанции. Потребляемая энергия почти полностью переходит в тепло, поэтому современные вычислительные машины также требуют высокотехнологичных систем охлаждения. Рейтинг Green-500 составляется на основании энергоэффективно­ сти суперкомпьютеров. В таблице 3 приведены 5 самых энергоэффек­ тивных суперкомпьютеров мира. ’ Ознакомиться с полным списком ТОР-500 самых мощных компьютеров в мире, посмотреть динамику развития по годам можно, перейдя на сайт www.top500.org. 10

0н^ X

Cfi -fi

X 2 X э о § X

ZJ сз 2

-fi

н

сц

Е вропейское с о ­ вместное предпри­ ятие по вы соко­ производительны м вы числениям , Ф и н ­ лян д и я

LUMI - H P E Cray EX235a, A M D O ptim ized 3rd G eneration EPYC 64C 2G H z, A M D Instinct M I250X, Slingshot-11, H P E

2220288

7 630 848

309100

442010

428 700

537212

1 685650

и •а в I ® са ч ^ о Н

Supercomputer Fugaku — A64FX 48C 2.2G H z, Tofu interconnect D , Fujitsu

Ц ентр вы числи­ тельны х наук И н ­ ститута ф и зи ­ ко-хим ических исследований (R IK E N ), Я п он и я

о

1 102000

х

8730112

2

Frontier — H P E Cray EX235a, A M D O ptim ized 3rd G eneration EPYC 64C 2G H z, A M D Instinct M I250X, Slingshot-11, H P E

О он S Z J X

О к-Р идж ская н а ц и ­ ональная лаборато­ ри я, С Ш А

СЗ R max (Тфлоп/с)

С Ц С Ц О ГЦ -fi & ю D? О

Число ядер

6 016

29 899

21 100

Энергопо­ требление (кВт)

a

Название

v§ e2

Местоположение

aгг

Позиция

1. Списки TOP-500, Green-500, TOP-50

-fi

СО

и

Позиция

12

Summit — IBM Pow er System AC922, IBM POW ER9 22C 3.07G H z, N V ID IA Volta GV100, D ual­ rail M ellanox E D R Infiniband, IBM

О к-Р идж ская н а ­ циональная лаборатория,С Ш А

174700

148600

2414592

R max (Тфлоп/с)

'xl-

200 794

255750

^ .& Н

1463616

Число ядер и

Leonardo — BullSequana XH2000, Xeon P latinum 8358 32C 2.6G H z, N V ID IA A100 SXM4 64 G B , Q uad-rail N V ID IA H D R 100 Infiniband, Atos

Название

•а в I ®

Е вропейское с о ­ вместное предпри­ ятие по вы соко­ производительны м вы числениям , И та­ лия

Местоположение

10 096

5 610

Энергопо­ требление (кВт)

Окончание табл. 1

Раздел А. Современные вычислительные системы

2 он» ZJ S Z J О 2X



н X

о

-а са

о 2 X Э о

О

сз U

2

« я ®2 § *

>> G £

* 03 2 „ m 5 о w 2 affl uw О

F^ J! OS ^Ph

ч— H

г

— Ч

on

23

Раздел А. Современные вычислительные системы

Отметим, что самые мощные суперкомпьютеры — не обязательно самые энергоэффективные. Суперкомпьютер, занимающий наиболее высокие позиции в обоих рейтингах TOP-500 (1 место) и Green-500 (6 место), — Frontier, установленный в Ок-Риджской национальной лаборатории, Соединенные Штаты Америки.

24

2. Суперкомпьютеры российских университетов и научных институтов

2. Суперкомпьютеры российских университетов и научных институтов В университетах и научных организациях России существуют мощ­ ные суперкомпьютеры. Приведем информацию о них более подробно.

2.1. МГУ имени М. В. Ломоносова: суперкомпьютер «Ломоносов-2» Центр коллективного пользования сверхвысокопроизводительны­ ми вычислительными ресурсами МГУ имени М. В. Ломоносова (Су­ перкомпьютерный комплекс МГУ, СК МГУ, Суперкомпьютерный комплекс, ЦКП МГУ) включает в себя уникальную научную установ­ ку суперкомпьютер «Ломоносов-2» (рис. 2).

Рис. 2. Суперком пью тер «Л омоносов-2» (г. Москва)*

Ресурсы суперкомпьютерного комплекса Московского универси­ тета предназначены для поддержки фундаментальных научных ис­ следований и учебного процесса, а также выполнения специальных проектов, требующих привлечения суперкомпьютерных систем с петафлопсным уровнем производительности. Суперкомпьютерный комплекс состоит из 1730 узлов, основанных на центральных процессорах Intel Xeon Е5-2697 ѵЗ, Xeon Gold 6140 * Лаборатория Параллельных информационных технологий НИВЦ М ГУ: [сайт]. URL: https://parallel.rn/cluster/lomonosov2.html (дата обращения: 26.10.2022). 25

Раздел А. Современные вычислительные системы

и 6142, a также ускорителях NVIDIA Tesla К40М, РЮО и V100. Сум­ марная производительность в тесте Linpack достигает 2,478 Пфлоп/с. Основные направления исследований, проводимых в ЦКП МГУ: • безопасность и противодействие терроризму; • живые системы; • индустрия наносистем и материалы; • информационно-телекоммуникационные системы; • науки о жизни; • перспективные вооружения, военная и специальная техника; • рациональное природопользование; • транспортные, авиационные и космические системы; • энергетика, энергосбережение, ядерная энергетика.

2.2. Санкт-Петербургский политехнический университет: «Политехник — РСК Торнадо» «Политехник — РСК Торнадо» — кластерный суперкомпьютер Суперкомпьютерного центра Санкт-Петербургского политехниче­ ского университета (рис. 3). Пиковая производительность кластера 1015 Тфлоп/с. Он состоит из 668 двухпроцессорных узлов с централь­ ными процессорами Intel Xeon Е5-2697 ѵЗ. 56 узлов имеют два ускори­ теля вычислений NVIDIA К40.

Рис. 3. С уперком пью тер «П олитехник — Р С К Торнадо» (г. Санкт-Петербург)*

* РС К : [сайт]. URL: https://clck.rn/33JHjA(датаобращения: 26.10.2022). 26

2. Суперкомпьютеры российских университетов и научных институтов

Среди основных исследований, проводимых в суперкомпьютер­ ном центре «Политехнический», можно выделить: • биохимическое моделирование; • обработку сейсмических данных; • исследования в области кибербезопасности.

2.3. Высшая школа экономики: cHARISMa В Национальном исследовательском университете ВШЭ работает вы­ сокопроизводительный вычислительный кластер cHARISMa (Computer of HSE for Artificial Intelligence and Supercomputer Modelling, рис. 4).

Рис. 4. Суперком пью тер cH A R ISM a (г. Москва)*

Суперкомпьютер состоит из 46 вычислительных узлов, в том чис­ ле 6 новейших узлов для обучения нейронных сетей с восьмью GPU NVIDIA А100 80 ГБ SXM в каждом, 29 специализированных узлов с большим объемом оперативной памяти 768—1536 ГБ и четырьмя гра­ фическими ускорителями NVIDIA Tesla V100 32 ГБ в каждом, а также 11 вычислительных узлов с мощными центральными процессорами. Производительность в тесте Linpack составляет 927 Тфлоп/с. Ресурсы вычислительного кластера предназначены для поддержки проведения фундаментальных научных исследований и организации учебного процесса, а также для выполнения научных и научно-прак­ тических проектов, требующих использования суперкомпьютерных систем. Суперкомпьютер используется при выполнении исследова­ ний НИУ ВШЭ в таких областях, как: НИУ В Ш Э : [сайт]. URL: https://clck.ru/33KPAg (датаобращения: 26.10.2022). 27

Раздел А. Современные вычислительные системы

• искусственный интеллект, машинное обучение; • интеллектуальный анализ больших данных; • математическое моделирование сложных систем и процессов; • нейрокогнитивные исследования; • вычислительная физика; • прикладная математика; • моделирование структуры и свойств химических систем и ма­ териалов; • структурная и прикладная лингвистика; • физика элементарных частиц и высоких энергий.

2.4. Межведомственный суперкомпьютерный центр РАН: «МВС-10П» Межведомственный суперкомпьютерный центр Российской ака­ демии наук (МСЦ РАН) проводит исследования, связанные с созда­ нием и использованием суперкомпьютеров и цифровой научной ин­ фраструктуры. МВС-10П состоит из нескольких сегментов. Новейший сегмент ОП2 (рис. 5) основан на узлах с процессорами Intel Xeon Gold 6248R, Xeon Platinum 8268 и Xeon Gold 6154. Суммарное количество узлов в сег­ менте — 210. Суммарная пиковая производительность — 893 Тфлоп/с.

Рис. 5. С уперком пью тер «М В С -10П ОП2» (г. Москва)* * Межведомственный суперкомпьютерный центр РАН : [сайт]. URL: https:// www.jscc.rn/resources/hpc/ (дата обращения: 26.10.2022). 28

2. Суперкомпьютеры российских университетов и научных институтов

Центр осуществляет следующие фундаментальные и прикладные исследования: • разработка и создание архитектур, системных решений, методов, прототипов, вычислительных комплексов и распределенных сред на ос­ нове гибридных и массивно-параллельных суперкомпьютерных систем; • создание инфраструктуры для разработки программного обе­ спечения на базе прототипов суперкомпьютеров предельной произ­ водительности; • разработка архитектуры, моделей, методов и средств интегриро­ ванной телекоммуникационной инфраструктуры исследовательских организаций науки и промышленности; • исследование проблем безопасности сетевой и облачной инфра­ структуры; • организация высокопроизводительных вычислений в террито­ риально-распределенных вычислительных средах с совместным ис­ пользованием грид- и облачных технологий; • математическое и численное моделирование задач физики плаз­ мы, механики многофазных сред с учетом нестационарного тепломас­ сообмена, а также в области полупроводниковых технологий; • разработка математических моделей для задач фильтрации и массообмена в геосистемах и их адаптация к высокопроизводительным вычислительным системам; • исследование и разработка моделей, методов и средств форми­ рования, интеграции, сопровождения и использования электронных научно-образовательных информационных ресурсов библиотечного, архивного и музейного хранения.

2.5. Объединенный институт ядерных исследований: суперкомпьютер имени Н. Н. Говоруна Суперкомпьютер имени Н. Н. Говоруна (рис. 6) Лаборатории ин­ формационных технологий ОИЯИ (Московская область, г. Дубна) об­ ладает пиковой производительностью 1,7 Пфлоп/с. Новейший сегмент Skylake состоит из 104 узлов, каждый из которых имеет два процессо­ ра Intel Хеоп 8268. Распределенная высокоскоростная система хране­ 29

Раздел А. Современные вычислительные системы

ния данных «РСК Storage-on-Demand» занимает ведущее место по эф­ фективности среди суперкомпьютеров России.

Рис. 6. С уперком пью тер им. Н. Н. Говоруна (г. Дубна)*

Ресурсы суперкомпьютера используются научными группами раз­ личных лабораторий ОИЯИ для решения широкого круга задач тео­ ретической физики, а также для моделирования и обработки экспе­ риментальных данных. Среди них можно выделить: • вычисления для проекта NICA; • задачи квантовой хромодинамики; • расчет свойств атомов сверхтяжелых элементов; • исследования в области радиационной биологии и радиологи­ ческой безопасности.

2.6. Нижегородский государственный университет им. Н. И. Лобачевского: суперкомпьютер «Лобачевский» Суперкомпьютер «Лобачевский» (рис. 7) Приволжского научно­ образовательного центра суперкомпьютерных технологий ННГУ ос­ нован на узлах с центральными процессорами Intel Хеоп Е5-2660ѵ2 и ускорителями NVIDIA Tesla К20, 2090, Intel Хеоп Phi 51 ЮР. Пико­ вая производительность составляет 570 Тфлоп/с. В 2020 г. суперкомпьютер ННГУ «Лобачевский» был расширен дву­ мя серверами с современными графическими ускорителями NVIDIA * * РС К : [сайт]. URL: https://rscgroup.m/project/jinr-hpc-cluster-govomn/ (дата об­ ращения: 26.10.2022). 30

2. Суперкомпьютеры российских университетов и научных институтов

А100, обеспечивающими высокую производительность в задачах ис­ кусственного интеллекта, анализа данных и высокопроизводительных вычислений. Каждый сервер содержит 2 процессора AMD EPYC 7742 (2,3 Тфлоп/с каждый), 512 Гб оперативной памяти, 8 графических ускорителей NVIDIA А100 (9,7 Тфлоп/с каждый, 19,5 Тфлоп/с при использовании тензорных ядер).

Рис. 7. Суперком пью тер «Лобачевский» (г. Н и ж н и й Новгород)*

Основными направлениями научных и прикладных работ, выпол­ няемых на базе центра суперкомпьютерных технологий, являются: • высокопроизводительные вычисления в задачах глобальной оп­ тимизации; • высокопроизводительные вычисления в биомедицинских при­ ложениях; • технологии и программное обеспечение высокопроизводитель­ ных вычислений; • высокопроизводительная компьютерная графика и научная ви­ зуализация.

2.7. Южно-Уральский государственный университет (Челябинск): «РСК Торнадо ЮУрГУ» Лаборатория суперкомпьютерного моделирования Южно-Ураль­ ского государственного университета имеет инновационный энерго’ NIAGARA Российские суперкомпьютеры : [сайт]. URL: https://www.niagara. ru/superkompyuter-lobachevskij-v-nngu/ (дата обращения: 26.10.2022). 31

Раздел А. Современные вычислительные системы

эффективный суперкомпьютер «Торнадо ЮУрГУ», используемый для решения научных и инженерных задач (рис. 8). Суперкомпьютер «Торнадо ЮУрГУ» состоит из 480 компактных и мощных вычислительных blade-модулей с жидкостным охлаждени­ ем всех электронных компонентов и высокой энергоэффективностью (занимал 64 место в мировом списке Green-500 и 127 место в рейтинге ТОР-500 в ноябре 2013 г.). Узлы основаны на центральных процессо­ рах Intel Xeon Х5680 и сопроцессорах Intel Xeon Phi. Производитель­ ность комплекса в тесте Linpack составляет 288,2 Тфлоп/с.

Рис. 8. Суперком пью тер «Торнадо ЮУрГУ» (г. Челябинск)*

Задачи, решаемые с помощью суперкомпьютера, включают: • гидрогазодинамическое моделирование; • электронное строение наносистем; • моделирование металлургических процессов; • краткосрочное прогнозирование погоды; • анализ сверхбольших графов для задач дата-майнинга.

2.8. Сибирский суперкомпьютерный центр, ИВМиМГ СО РАН: «НКС-1П» Сибирский суперкомпьютерный центр Института вычислительной математики и математической геофизики Сибирского отделения РАН оказывает вычислительные услуги 24 институтам СО РАН и 5 универ* Лаборатория суперкомпьютерного моделирования ЮУрГУ: [сайт]. URL: http:// supercomputer.susu.m/computers/tomado/ (дата обращения: 26.10.2022). 32

2. Суперкомпьютеры российских университетов и научных институтов

ситетам Сибири. Центр ориентирован на решение фундаментальных и прикладных задач в различных отраслях науки, а также подготовку специалистов в области суперкомпьютерных вычислений. Кластер НКС- 1П (рис. 9) основан на вычислительных узлах с цен­ тральными процессорами Intel Xeon Е5-2697 ѵ4 и ускорителях Xeon Phi 7290. Пиковая производительность составляет 181 Тфлоп/с.

Рис. 9. Суперком пью тер «Н К С -1П » (г. Новосибирск)*

На суперкомпьютере выполняются исследования по различным направлениям: • индустрия наносистем; • информационно-телекоммуникационные системы; • энергоэффективность, энергосбережение, ядерная энергетики; • науки о жизни; • рациональное природопользование; • транспортные и космические системы; • биология; • вычислительная гидродинамика; • химия; • химические технологии; • вычислительная математика; • физика элементарных частиц; • квантовая химия; • математическое моделирование природных явлений. * Р С К : [сайт]. URL: https://clck.rn/33JKLi (дата обращения: 26.10.2022). 33

Раздел А. Современные вычислительные системы

2.9. ИММ УрО РАН (Екатеринбург): суперкомпьютер «Уран» ИММ УрО РАН предоставляет пользователям для работы супер­ компьютер «Уран» (рис. 10).

Рис. 10. Суперком пью тер «Уран» (г. Екатеринбург)*

Суперкомпьютер «Уран» собран на базе blade-серверов фирмы Hewlett-Packard. Он состоит из 81 вычислительного узла, которые уста­ новлены в модулях с высокой плотностью упаковки. Вычислительные узлы оснащены процессорами Intel Хеоп, работающими на частотах 2.2—3.1 ГГц, 48—384 гигабайтами оперативной памяти и графическими ускорителями NVIDIA Tesla. В общей сложности пользователям доступ­ но 1542 вычислительных ядра CPU, 167 плат GPU и 13 Тбайт опера­ тивной памяти. Система хранения суперкомпьютера «Уран» позволяет разместить до 140 Тбайт данных. Для передачи данных между вычис­ лительными узлами используются высокоскоростные сети Infiniband с пропускной способностью 20 Гбит/с и 100 Гбит/с. Доступ к супер­ компьютеру «Уран» осуществляется через городскую сеть УрО РАН в Екатеринбурге по технологии 10Gi Ethernet со скоростью 10 Ебит/с. Примеры задач, решаемых на суперкомпьютере «Уран»: • Моделирование движения вязкой жидкости для исследования процессов тепловой конвекции в верхних слоях мантии Земли (рис. 11). • Исследование радиационного переноса для сложных физических моделей, используемых в спектроскопической диагностике, в физи-* * Параллельные вычисления в УрО РАН : [сайт]. URL: https://parallel.uran.ru/ node/З (дата обращения: 26.10.2022). ЗА

2. Суперкомпьютеры российских университетов и научных институтов

ке плазмы, управляемом термоядерном синтезе, а также при создании лазеров, в том числе с ядерной накачкой. • Решение актуальных проблем автономной навигации движущих­ ся объектов по геофизическим полям: — моделирование процессов навигации и наведения с учетом подробных моделей датчиков геофизических полей для разработки и исследования алгоритмов навигации и управления; — разработка вычислительной технологии с использованием многоуровневого распараллеливания для конструктивной оценки ин­ формативности эталонных изображений геофизических полей.

Рис. 11. М оделирование движ ений тектонических плит в коре Земли*

• Исследование динамики и сейсмичности различных систем тек­ тонических плит с учетом сферической геометрии Земли и неодно­ родности литосферы. • Создание технологии обработки космических изображений зем­ ной поверхности сверхбольшого размера и применение ее при топо­ графическом дешифрировании космических снимков. • Разработка методов и алгоритмов построения маршрутов в усло­ виях различного типа ограничений для широкого круга задач, вклю­ чая маршрутные задачи атомной энергетики. Моделирование погружения осколка континентальной плиты в районе юговосточных Карпат / / Параллельные вычисления в УрО РАН : [сайт]. URL: https:// parallel.uran.ru/node/412 (дата обращения: 26.10.2022). 35

Раздел А. Современные вычислительные системы

• Разработка параллельных программ для задачи взаимодействия излучения с веществом в различных физических постановках с исполь­ зованием гетерогенных систем в системе параллельного программи­ рования DVMH. • Разработка высокоэффективных параллельных алгоритмов ре­ шения линейных и нелинейных трехмерных обратных задач гравиме­ трии и магнитометрии на основе итерационных процессов (рис. 12). а

100­ Лд (мгл)

90­ 80­ 70­ 60-

-

y (м) 50­ 40­

0,6 1,2 1,9 2,5

30­ 20­ 10 -I 0 -Р 0 10 20 30 40 50 60 70 80 90 100 x (м)

б а (г/см3) 0,2 0,1 0 - 0,1 - 0,2

! - 0,25 x (м)

Рис. 12. О братная задача гравиметрии: а — гравитационное поле; б — искомая плотность

36

2. Суперкомпьютеры российских университетов и научных институтов

• Моделирование сложной динамики и оптимального управления ракетой-носителем при выведении спутников на эллиптические ор­ биты, в том числе на высокие геостационарные орбиты. • Моделирование процессов тепломассопереноса в сложных мно гофазных средах: — моделирование нестационарных тепловых полей в вечномерз­ лых почвах с учетом климатических параметров и воздействия различ­ ных технических систем (рис. 13); — моделирование геотермальных циклических систем, состоя­ щих из добывающих и нагнетательных скважин. Г (°С )

-5

г(м)

-10

-1 5

-20

0

5

10

15

20

25

30

35

40

х(м) Рис. 13. М оделирование тепловых полей в почве возле нефтяных и газовых скважин

Для проведения научных и инженерных расчетов на суперкомпью­ тере установлено базовое программное обеспечение: • операционная система Linux; • система запуска задач Slurm; • языки программирования С, C ++, Fortran; • компиляторы Intel, GNU, PGI; • библиотека Math Kernel Library (MKL) Intel; • реализации MPI: OpenMPI и MVAPICH2; • пакеты Matlab, AN SYS CFX Academic Research.

37

Раздел А. Современные вычислительные системы

Используются узлы нескольких типов, которые образуют основ­ ные разделы (partition) кластера. Внутри разделов (кроме debug) узлы связаны между собой высокоскоростной сетью Infiniband. Узлы раз­ ных разделов связаны между собой 1 Гбит/с Ethernet. Раздел ѵЮО 1 узел tesla-ѵЮО (декабрь 2019): • два 18-ядерных процессора Intel® Xeon® Gold 6240 CPU @ 2.60GHz; • оперативная память 384 ГБ; • 8 GPU NVIDIA Tesla ѴЮО (32 ГБ Global Memory). Раздел ароІІобООО бузловароііо [17—28] (декабрь 2019/январь 2021): • два 18-ядерных процессора Intel® Xeon® Gold 6254 CPU @ 3.10GHz; • оперативная память 384 ГБ. Узлы раздела ароІІобООО объединены высокоскоростной сетью Infiniband 100 Гбит/с. Раздел а polio 16 узлов apollo [1-16] (февраль 2017): • два 18-ядерных процессора Intel® Xeon® CPU Е5-2697 v4 @ 2.30GHz; • оперативная память 256 ГБ; • кэш-память 45 МБ SmartCache; • локальный жесткий диск 1 ТБ. Узлы раздела apollo объединены высокоскоростной сетью Infiniband нового поколения 100 Гбит/с. Раздел all 20 узлов tesla [1—20]: • два 6-ядерных процессора Intel® Xeon® Х5675 (3.07GHz) • оперативная память 48 ГБ; • кэш-память 2 х 12 MB Level 2 cache; • локальный жесткий диск 120 ГБ. 10 узлов tesla [21-30]: • два 6-ядерных процессора Intel® Xeon® Х5675 (3.07GHz); • оперативная память 192 ГБ;

38

2. Суперкомпьютеры российских университетов и научных институтов

• кэш-память 2x12 MB Level 2 cache; • 8 GPU Tesla M2090 (6 ГБ Global Memory); • локальный жесткий диск 400 ГБ. 13 узлов tesla [33-45]: • два 8-ядерных процессора Intel® Xeon® Е5-2660 (2.2 GHz); • оперативная память 96 ГБ; • кэш-память 2 х 20 MB Level 2 cache; • 8 GPU Tesla M2090 (6 ГБ Global Memory); • локальный жесткий диск 400 ГБ. 5 узлов tesla [48-52]: • два 8-ядерных процессора Intel® Xeon® Е5-2650 (2.6 GHz) • оперативная память 64 ГБ; • кэш-память 2 х 20 MB Level 2 cache; • 3 GPU Tesla K40m (12 ГБ Global Memory); • локальный жесткий диск 400 ГБ. Узлы раздела all объединены высокоскоростной сетью Infiniband 20 Гбит/с. Раздел debug 4 узла tesla [31-32, 46-47]: • два 8-ядерных процессора Intel® Xeon® Е5-2660 (2.2 GHz); • оперативная память 96 ГБ; • кэш-память 2 х 20 MB Level 2 cache; • 8 GPU Tesla M2090 (6 ГБ Global Memory); • локальный жесткий диск 400 ГБ. Узлы раздела debug объединены сетью 1 Гбит/с Ethernet. В качестве среды межузловых взаимодействий (интерконнекта) ис­ пользована хорошо себя зарекомендовавшая технология Infiniband (IB). Коммутаторы в шасси ББ HP Blade Systems образуют первый уровень IB-коммутации. В качестве коммутатора ІВ второго уровня использо­ ван 144-портовый коммутатор Qlogic 9120. В качестве І/О -интерконнекта использована выделенная сеть Gigabit Ethernet. Сеть имеет двухуровневую структуру. Первый уровень организован на коммутирующих модулях GbE2c Ethernet Blade Switch for HP c-Class BladeSystem, установленных в шасси ББ. К коммутирующему модулю каждого ББ внутренними гигабитными каналами подключены вычислительные модули и модуль управле­

39

Раздел А. Современные вычислительные системы

ния. Коммутирующий модуль каждого ББ подключен к коммутато­ ру Ethernet HP ProCurve Switch 4208vl-192. К нему подключены все ВМ, порты Host-машин, консоль управления и мониторинга. Управляющий сервер ВС-HP DL180G5 на основе процессоров Intel Хеоп 5430 включает в себя: • два четырехъядерных процессора с тактовой частотой 2,6 ГГц; • 16 ГБ оперативной памяти; • дисковую подсистему RAID5, состоящую из 5 дисков SATA объ­ емом 500 ГБ каждый; • 10/100/1000 Base-T Ethernet интерфейс; • видеоадаптер, порт USB 2.0, порты мыши, клавиатуры.

АО

з. Классификации вычислительных систем

3. Классификации вычислительных систем 3.1. Классификация Флинна Самой ранней и наиболее известной является классификация архи­ тектур вычислительных систем, предложенная в 1966 г. М. Флинном, которая базируется на понятии потока. Под потоком понимается по­ следовательность элементов, команд или данных, обрабатываемая про­ цессором. На основе числа потоков команд и потоков данных Флинн выделяет четыре класса архитектур: SISD, MISD, SIMD, MIMD. 1. Класс SISD (single instruction stream / single data stream) — оди­ ночный поток команд и одиночный поток данных (рис. 14). К этому классу относятся прежде всего классические последова­ тельные машины, или иначе —машины фон-неймановского типа, на­ пример, P D P -11 или VAX 11/780. В таких машинах есть только один поток команд, все команды обрабатываются последовательно друг за другом, и каждая команда инициирует одну операцию с одним по­ током данных. Не имеет значения, что для увеличения скорости об­ работки команд и скорости выполнения арифметических операций может применяться конвейерная обработка, — как машина CDC 6600 со скалярными функциональными устройствами, так и CDC 7600 с конвейерными попадают в этот класс.

Рис. 14. С хем а систем ы класса SISD

41

Раздел А. Современные вычислительные системы

Многими исследователями подмечено, что в этот класс можно включить и векторно-конвейерные машины, если рассматривать век­ тор как одно неделимое данное для соответствующей команды. В таком случае в этот класс попадут и такие системы, как CRAY-1, CYBER 205, машины семейства FACOM ѴР и многие другие. 2. Класс SIMD (single instruction stream / multiple data stream) — одиночный поток команд и множественный поток данных (рис. 15).

Рис. 15. Схема систем ы класса S IM D

В архитектурах подобного рода сохраняется один поток команд, включающий, в отличие от предыдущего класса, векторные команды. Это позволяет выполнять одну арифметическую операцию сразу над многими данными — элементами вектора. Способ выполнения вектор­ ных операций не оговаривается, поэтому обработка элементов вектора может производиться либо процессорной матрицей, как в ILLIACIV, либо с помощью конвейера, как, например, в машине CRAY-1. Бес­ спорными представителями класса SIMD считаются матрицы про­ цессоров: ILLIAC IV, ICL DAP, Goodyear Aerospace MPP, Connection Machine 1 и т. п. В таких системах единое управляющее устройство контролирует множество процессорных элементов. Каждый процессорный элемент получает от устройства управле­ ния в каждый фиксированный момент времени одинаковую команду и выполняет ее над своими локальными данными. Классические про­ цессорные матрицы входят в этот класс, но можно включить в него и векторно-конвейерные машины, например CRAY-1. В этом случае каждый элемент вектора надо рассматривать как отдельный элемент потока данных.

42

3. Классификации вычислительных систем

3. Класс MISD (multiple instruction stream / single data stream) — множественный поток команд и одиночный поток данных (рис. 16).

Рис. 16. Схема системы класса M IS D

Определение подразумевает наличие в архитектуре многих процессо­ ров, обрабатывающих один и тот же поток данных. Однако ни Флинн, ни другие специалисты в области архитектуры компьютеров до сих пор не смогли представить убедительный пример реально существующей вычислительной системы, построенной на этом принципе. Ряд иссле­ дователей относят конвейерные машины к этому классу, однако это не нашло окончательного признания в научном сообществе. 4. Класс M IMD (multiple instruction stream / multiple data stream) — множественный поток команд и множественный поток данных (рис. 17).

Рис. 17. Схема системы класса M IM D

Этот класс предполагает, что в вычислительной системе есть не­ сколько устройств обработки команд, объединенных в единый ком­ плекс и работающих каждое со своим потоком команд и данных.

АЗ

Раздел А. Современные вычислительные системы

Класс MIMD чрезвычайно широк, поскольку включает в себя все­ возможные мультипроцессорные системы: Cm*, C.mmp, CRAYY-MP, Denelcor HEP, BBN Butterfly, Intel Paragon, CRAYT3D и многие дру­ гие. Интересно, что если конвейерную обработку рассматривать как выполнение множества команд (операций ступеней конвейера) не над одиночным векторным потоком данных, а над множественным ска­ лярным потоком, то все рассмотренные выше векторно-конвейерные компьютеры можно расположить и в этом классе. Предложенная схема классификации на сегодняшний день являет­ ся самой применяемой при начальной характеристике того или иного компьютера. Если говорится, что компьютер принадлежит классу SIMD или MIMD, то сразу становится понятен базовый принцип его работы, и в некоторых случаях этого бывает достаточно. Однако есть и явные недостатки. В частности, некоторые заслуживающие внимания архи­ тектуры, например, dataflow и векторно-конвейерные машины четко не вписываются в данную классификацию. Другой недостаток — это чрезмерная заполненность класса MIMD. Необходимо средство, более избирательно систематизирующее архитектуры, которые по Флинну попадают в один класс, но совершенно различны по числу процессо­ ров, природе и топологии связи между ними, по способу организации памяти и, конечно же, по технологии программирования. Наличие пустого класса (MISD) не стоит считать недостатком схемы. Такие классы, по мнению некоторых исследователей в области клас­ сификации архитектур, могут стать чрезвычайно полезными для раз­ работки принципиально новых концепций в теории и практике по­ строения вычислительных систем.

3.2. Дополнения Ванга и Бриггса к классификации флинна В книге К. Ванга и Ф. Бриггса* сделаны некоторые дополнения к классификации Флинна. Оставляя четыре ранее введенных базо­ вых класса (SISD, SIMD, MISD, MIMD), авторы внесли следующие изменения. * Hwang, К. Computer Architecture and Parallel Processing. New York : McGrawHill, 1984. P. 32-40.

3. Классификации вычислительных систем

Класс SISD разбивается на два подкласса: • архитектуры с единственным функциональным устройством, например P D P -11; • архитектуры, имеющие в своем составе несколько функцио­ нальных устройств: CDC 6600, CRAY-1, FPS АР-120В, CDC Cyber 205, FACOMVP-200. В класс SIMD также вводится два подкласса: • архитектуры с пословно-последовательной обработкой инфор­ мации: ILLIACIV, РЕРЕ, BSP; • архитектуры с разрядно-последовательной обработкой: STARAN, ICL DAP. В классе MIMD авторы различают: • вычислительные системы со слабой связью между процессора­ ми, к которым относят все системы с распределенной памятью, на­ пример Cosmic Cube; • вычислительные системы с сильной связью (системы с общей па­ мятью), куда попадают такие компьютеры, как C.mmp, BBN Butterfly, CRAYY-MP, Denelcor HEP.

3.3. Классификация в зависимости от структуры памяти Выделяют несколько типов построения многопроцессорных си­ стем (рис. 18). Симметричные м ультипроцессорны е систем ы (symmetrical multi­ processor system, SMP). В SMP системе все процессоры разделяют об­ щую шину и общую память, могут выполнять одну и ту же задачу, при­ чем задача может переходить от одного процессора к другому. Если один процессор отказывает, он может быть заменен другим. Необхо­ дим аппаратный протокол синхронизации кэшей всех процессоров. М асси вно-п араллельная архитектура (massive parallel processing, МРР). В МРР системе память физически разделена. Система состо­ ит из отдельных узлов содержащих процессор, локальный банк опе­ ративной памяти, коммуникационные процессоры или сетевые адап­ теры, доступ к банку оперативной памяти данного узла имеют только процессоры из этого же узла. Узлы соединяются специальными ком­ мутационными каналами. 45

Роздел А. Современные вычислительные системы

Рис. 18. К л асси ф и кац и я м ногопроцессорны х вы числительны х систем

Следует отметить, что SMP системы входят в труппу MIMD (multi instruction multi data) вычислительных систем в соответствии с клас­ сификацией Флинна. Поскольку эта классификация приводит к тому, что практически все виды параллельных систем (несмотря на их суще­ ственную разнородность) относятся к одной группе MIMD, для даль­ нейшей детализации класса MIMD предложена практически обще­ признанная структурная схема. В рамках этой схемы дальнейшее разделение типов многопроцес­ сорных систем основывается на используемых способах организации оперативной памяти в этих системах. Такой поход позволяет разли­ чать два важных типа многопроцессорных систем. Системы с общ ей (разделяемой, shared) памятью —процессоры могут разделять блок оперативной памяти. Преимуществами таких систем являются высокая скорость доступа к памяти и возможность использо­ вания привычной модели программирования. Недостатками — слож­ ность технической реализации, ограничивающая масштабируемость, а также возможность конфликтов при работе с общими данными. Одна из наиболее популярных технологий программирования для таких си­ стем — OpenMP (Open Multi-Processing). Системы с распределенной (distributed) памятью —у каждого из про­ цессоров своя оперативная память, к которой не может обратиться дру­

46

3. Классификации вычислительных систем

гой процессор. Это позволяет добиться высокой масштабируемости и обеспечивает отсутствие конфликтов между узлами. В то же время производительность может быть ограничена задержками и пропуск­ ной способностью сети для передачи данных между процессорами. Та­ кие системы требуют особой модели программирования, основанной на передаче сообщений. Примером технологии, реализующей такую модель, является МРІ (Message Parsing Interface). На рис. 19 схематически представлена архитектура многоядерных систем с общей и разделяемой памятью. а

б

Рис. 19. Архитектура м ногоядерны х систем: а — с общей памятью; б — с распределенной памятью

SMP система является системой с общей памятью. Архитектура SMP самая дорогая с точки зрения аппаратной реализации и самая де­ шевая с точки зрения разработки программного обеспечения. И нао­ борот, МРР системы почти не требуют аппаратных затрат, но являют­ ся самым дорогим решением с точки зрения разработки ПО.

47

Раздел А. Современные вычислительные системы

4. Архитектура многоядерных систем 4.1. Современные многоядерные процессоры На сегодняшний день на рынке представлены множество разных типов процессоров от разных производителей. Приведем таблицу с по­ пулярными процессорами (табл. 4). Перечисленные здесь процессоры используются в игровых системах, настольных компьютерах и высо­ копроизводительных ноутбуках. Ознакомившись с таблицей, мож­ но увидеть различия в количестве ядер и частоте каждого процессора. Таблица 4 Многоядерные процессоры для настольных компьютеров, представленные на рынке России в 2023 году Производитель

Модель процессора

Количество ядер

Максимальная частота, МГц

Intel

C ore І9-13900К

24

5800

AMD

R yzen97950X

16

5700

Intel

C ore І7 -12700

12

4900

AMD

Ryzen 7 570OX

8

4600

Intel

C ore І5-12400

6

4400

AMD

Ryzen 5 5600

6

4400

В таблице указаны далеко не все современные многоядерные про­ цессоры, а только малая часть, представленная на рынке России. Ниже приведем изображения некоторых многоядерных процессо­ ров и их характеристики: Процессор Intel Core І9-13900К Т актовая частота: 3,0 ГГц (м аксим альная 5,8 ГГц). Ч исло ядер: 8 производительны х ядер, 16 энергоэф ф ективны х ядер. К эш третьего уровня: 36 М Б (общ ий н а все ядра). Технологический процесс: Intel 7.

48

4 Архитектура многоядерных систем

Процессор AMD Ryzen 9 7950Х Т актовая частота: 4,5 ГГц (м аксим альная 5,7 ГГц). Ч исло ядер: 16. К эш третьего уровня: 64 М Б (общ ий н а все ядра). Технологический процесс: T SM C N5.

Процессор Apple M l Ultra Т актовая частота: 3.2 ГГц. Ч исло ядер: 16 производительны х ядер, 4 энерго­ эф ф ективны х ядра. К эш третьего уровня: 96 М Б. Технологический процесс: T SM C N5.

Примечание: С ведения о процессорах приведены с сайтов: T echP ow erU p: [сайт]. URL: h ttp s://clck.ru/33JkH A (дата обращ ения: 13.01.2023); TechPow­ erU p : [сайт]. U RL: http s://clck .ru /3 3 Jk H z (дата обращ ения: 13.01.2023); A p­ ple : [сайт]. U RL: https://clck.ru/33JkJz (дата обращ ения: 13.01.2023).

4.2. Архитектура Intel Sky lake Intel Skylake — микроархитектура процессоров x86-64 шестого по­ коления Intel Core для персональных компьютеров. Микропроцессоры производятся на технологическом процессе 14 нм. Первые процессо­ ры на этой архитектуре І7-6600К (4 ядра) и І7-6700К (4 ядра с под­ держкой Hyper-Threading) были выпущены в 2015 году. Процессоры Intel с шестого по десятое поколение (Skylake, Kaby Lake, Coffee Lake, Comet Lake) представляют ее развитие. Основные изменения вну­ три семейства состояли в увеличении тактовых частот, наращивании числа процессорных ядер (І9-10900К, выпущенный в 2020 году, име­ ет 10 ядер с поддержкой Hyper-Threading) и исправлении аппаратных ошибок и уязвимостей. Все процессоры этих поколений поддержива­ ют четвертое поколение оперативной памяти DDR4 SDRAM. Основ­ ные элементы архитектуры приведены на рис. 20.

49

50

______________ ________________________I

Модуль предсказания переходов (BPU) ----------------------------------------------------------------------- ►

Подсистема предварительной обработки

3

3S ■О I I

ю о

1

о.

о с и

о

ѵоио о.

со О со о

О Q.

3S

S сг

S

CD

Ct



CD

Z3

т О О

о- о

01 се о I—

ф

о.

ф

ф

У 0

ф

1Ш го §

и

сое га сС 3

о;

I

X

I

ф

гм
— задает лимит времени выполнения программы, по умолчанию 30 минут. • -N скол-во узлов> — задает число узлов (nodes) для задачи, если пользователю это важно. ОрепМР-программы обычно работают на одном узле. • -с (или -cpus-per-task=) — задает число логических процессоров (или ядер CPU), выделяемых на один процесс. • — mem-per-cpu= — задает минимальную память в расче­ те на одно ядро в мегабайтах; если не задано, то по умолчанию 1 ГБ. • — т е т = < м в > — задает общий лимит памяти на узле в мегабай­ тах. Эта опция исключает предыдущую. • _Р или -partition= — позволяет ука­ зать раздел (partition) кластера для запуска задачи. Основные разделы: tesla, ароііо, ѵІООи debug. Эти разделы покрывают весь кластер и вза­ имно не пересекаются, т. е. содержат разные узлы (см. главу о кластере «Уран»), Список всех разделов можно получить командой s inf о - s. • -w — позволяет указать конкретный узел для за­ пуска задачи. Интерактивный режим подразумевает ввод и вывод в реальном вре­ мени через интерфейс командной строки (консоль, терминал). Стан­ дартные потоки ввода, вывода и ошибок можно переадресовать в файл, используя перенаправление: srun myprogram < in.txt > o u t .txt 2> err.txt Команда sbatch предназначена для запуска программ в пакет­

ном режиме: sbatch [опции] --wrap="srun тры программы]"

[параме­

или sbatch [опции]

[параметры скрипта]

Скрипт для запуска ОрепМР-программы с 18 потоками на 18-ядер­ ном процессоре может выглядеть так: #!/bin/bash srun -р apollo -с 18 myprogram

Описание всех опций и примеры команд можно посмотреть с по­ мощью команды man sbatch. 63

Раздел Б. Технология ОрепМР

По умолчанию стандартные потоки вывода и ошибок направля­ ются в файл с именем slu rm -% j .o u t , где %j заменяется уникаль­ ным идентификатором запущенной задачи. Перенаправление пото­ ков можно выполнить, указав команде sbatch опции: • -input= • -output= • -error=

При запуске на кластере задача попадает в очередь заданий, и ей присваивается уникальный идентификатор. Для просмотра очереди задач и информации о кластере использу­ ются следующие команды: • squeue — просмотр очереди (информации о задачах, находя­ щихся в счете или в очереди на счет); • sacct — просмотр задач текущего пользователя за сутки (с на­ чала текущего дня); • s inf о — просмотр информации об узлах (прежде всего, о состо­ янии узлов: доступны, заняты, свободны,...); • scontrol — выдача детальной информации об узлах, разделах, задачах. • scancel — отмена выполнения задачи, ожидающей старта в оче­ реди или уже стартовавшей. Примеры использования: • scancel < id задачи1> < id задачи2> ...— убрать из оче­ реди задачи с указанными ID; • scancel -и — убрать из очереди все задачи пользователя; • scancel — state=PENDING

-и —

убрать из очереди ожидающие запуска задачи пользователя.

5.3. Компиляция и запуск параллельных программ на персональном компьютере Параллельные программы на языках C /C ++ можно скомпилиро­ вать и запустить на персональном компьютере с системой Windows, используя среду разработки Microsoft Visual Studio. Важно помнить, что встроенный компилятор Visual Studio полностью поддерживает только стандарт ОрепМР 2.0. 64

5. Использование ОрепМР в языках С и C++

Для компиляции параллельных программ нужно включить опцию ОрепМР Support в свойствах проекта на странице Language (рис. 25). X

Project Property Pages Configuration:

Platform:

Active(Release)

a Configuration Properties General Advanced Debugging Intel Libraries for oneAI VC++ Directories a C/C++

Configuration Manager...

No

Disable Language Extensions

Treat WChar_t As Built in Type Yes (/ZcwcharJ) Force Conformance in For Loop Scope Yes (/ZcforScope) Yes (/Zcinline) Remove unreferenced code and data Enforce type conversion rules Enable Run-Time Type Information Yes l/openmp)

General Optimization Preprocessor Code Generation External Includes Language Precompiled Heade Output Files Browse Information Advanced All Options Command Line > Manifest Tool > XML Document Genera

Actrve(x64)

C++ Language Standard C Language Standard

Default (ISO C++14 Standard) Default (Legacy MSVC)

Conformance mode Yes (/permissive-) Enable Experimental C++ Standard Libr.

Open MP Support Enable ОрепМР 2.0 language extensions,

(/openmp)

I

OK

I

Cancel

Apply

Рис. 25. В клю чение поддерж ки О репМ Р в M icrosoft Visual Studio

Кроме того, можно использовать бесплатные пакеты Intel опеАРІ Base Toolkit и one API НРС Toolkit, включающие компилятор Intel C++ Compiler. Данные пакеты поддерживают интеграцию в Visual Studio. Компилятор Intel полностью поддерживает стандарт ОрепМР 4.5. После установки можно переключить любой проект на компиля­ тор Intel C++ через страницу свойств (рис. 26). X Project Property Pages Configuration;

Active(Release)

л Configuration Properties

a

> > >

General Advanced Debugging Intel Libraries for oneAI VC++ Directories C/C++ General Optimization Preprocessor Code Generation External Includes Language Precompiled Heade Output Files Browse Information Advanced A i Options Command Line Linker Manifest Tool XML Document Genera

Platform; v

Active(xM)

Configuration Manager...

General Properties Output Directory Intermediate Directory

}(SolutionDir)S(Platform)\S(Configuration)\ }(Platform)\}(Configuration]\

Target Name Configuration Type

S(ProjectName) Application (.exe)

Windows SDK Version

10.0 (latest installed version) Visual Studio 2022 (v143)

C++ Language Standard CLanguage Standard

Default (ISO C++ 14 Standard) Default (Legacy MSVC)

Platform Toolset Specifies which build tools are being used to generatethis program.

[

OK

I

Cancel

Apply

Рис. 26. П ереклю чение используемого ком пилятора в M icrosoft Visual Studio 65

Раздел Б. Технология ОрепМР

Для поддержки ОрепМР нужно включить соответствующую опцию в разделе Language [Intel C++] (рис. 27). Project Property Pages Configuration;

X

Active(Release)

Intel Debugging Intel Libraries for oneAl VC+ + Directories j C/C++ General General [Intel C++] Debug [Intel C++] Optimization Optimization [Intel

Platform:

Active(x64)

Configuration Manager,,,

Replace Intel(R) CillcfTM) Plus Keywords No Disable All Intel Language Extensic ОрепМР Support C/C++ Language Support RecognizeThe Restrict Keyword Enable Use of ANSI Aliasing Rules in

No I Generate Parallel Code (/Qopenmp) C++17 Support (/Qstd=c++17) INIo 3' Yes (/Qansi-alias)

Code Generation Code Generation [Ir Language Language [Intel C++] Precompiled Heads I Precompiled Heade Output Files Browse Information Diagnostics [Intel C Advanced All Options Command Line

ОрепМР Support Enable ОрепМР language extensions.

(/Qopenmp, /Qopenmp_stubs)

[

OK

]

Cancel

Рис. 27. В клю чение поддерж ки О репМ Р п ри использовании ком пилятора Intel в Visual Studio

Для отладки программ можно использовать вариант этой опции, включающий последовательный режим (ключ / Qopenmp-stubs). В та­ ком случае компилятор проигнорирует директивы ОрепМР, но про­ грамма сможет вызывать библиотечные процедуры.

66

6. Переменные окружения

6. Переменные окружения Перед запуском программы некоторые настройки ОрепМР могут быть заданы значениями переменных окружения (переменных среды, Environment Variables) операционной системы. Наиболее часто используемой переменной окружения является o m p _ n u m _ t h r e a d s . Она задает количество потоков, которые будут создаваться в программе для выполнения параллельных областей. В Linux переменные среды устанавливаются командой export, на­ пример: export OMP_NUM_THREADS=

В командной строке Windows используется команда set: set OMP_NUM_THREADS=

Если значение переменной не задано, то количество потоков будет равным количеству логических процессоров, доступных программе. Чтобы сбросить переменную, можно присвоить ей пустое значение. При запуске программ непосредственно из Visual Studio можно про­ писать нужные значения переменных окружения в настройках проек­ та (рис. 28). Configuration: Active(Release)

v- Platform:

ActivefxM)

v

Configuration Manager...

Рис. 28. Задание перем енны х окруж ения в настройках проекта Visual Studio 67

Раздел Б. Технология ОрепМР

Обычно потоки автоматически распределяются по процессорам операционной системой. В стандарте ОрепМР 4.0 можно явно указать, как будут распреде­ ляться потоки по логическим ядрам/физическим ядрам/процессорам, и привязать потоки к виртуальным ОрепМР-процессорам (ОрепМР places), используя следующие переменные: OMP_PLACES = OMP PROC_BIND = Cclose|spread>

68

7. Библиотечные процедуры

7. Библиотечные процедуры Ч то б ы и сп о л ьзо вать следую щ ие п роц едуры в р ем ен и в ы п о л н ен и я (ru n tim e ) в п р о г р а м м е н а я з ы к а х C / C + + , н у ж н о п о д к л ю ч и т ь з а г о л о ­ в о ч н о й ф а й л co m p .h>. К о м ан д ы вы п о л н яю т следую щ ие дей стви я: • i n t o m p _ g e t _ n u m _ t h r e a d s () — в о зв р а щ а е т к о л и ч е с т в о п о т о ­ к о в , в ы п о л н я ю щ и х в д а н н ы й м о м е н т те к у щ у ю п а р а л л е л ь н у ю о б л асть; • i n t o m p _ g e t _ n u m _ p r o c s () — в о з в р а щ а е т к о л и ч е с т в о п р о ­ ц е с с о р о в , д о с т у п н ы х п р о гр а м м е ; • i n t o m p _ g e t_ th r e a d _ n u m ( ) — возвращ ает у н и к ал ьн ы й н о ­ м е р п о т о к а в т е к у щ е й п а р а л л е л ь н о й о б л ас т и ; • v o i d o m p _ s e t_ n u m _ t b r e a d s ( i n t n) — устанавливает число п о т о к о в , к о т о р ы е будут в ы п о л н я т ь п а р а л л е л ь н ы е о б л ас т и ; • d o u b l e o m p _ g e t _ w t i m e () — в о з в р а щ а е т в р е м я в с е к у н д а х , прош едш ее с н екоторого ф и кси рован н ого м ом ента, п остоян н ого в о в р е м я с у щ е с т в о в а н и я п р о г р а м м ы . Е с л и в ы зв а т ь д а н н у ю ф у н к ц и ю п е р е д и п о с л е н е к о т о р о г о у ч а с т к а п р о г р а м м ы , то р а з н о с т ь з н а ч е н и й буд ет р а в н а в р е м е н и в ы п о л н е н и я д а н н о г о у ч ас т к а. • d o u b l e o m p _ g e t _ w t i c k () — в о зв р а щ а е т д л и т е л ь н о с т ь с и с т е м ­ н о г о т а к т а в секу н д ах . М о ж н о и с п о л ь зо в а т ь к а к п о г р е ш н о с т ь за м е р о в врем ени.

69

Роздел Б. Технология ОрепМР

8. Директивы ОрепМР Директивы компилятора — основной способ использования техно­ логии ОрепМР. Программист должен явно добавлять их в программу, чтобы она выполнялась в параллельном режиме. В общем случае директива ОрепМР выглядит следующим образом: #pragma ошр [опцияі] [опция2] ... Здесь «#ргадша» — ключевое слово, указывающее, что конструк­ ция является директивой препроцессора, « о тр » — означает, что дан­

ная директива является директивой ОрепМР. Большинство директив действуют на один оператор или структур­ ный блок, перед которым они расположены. Директивы можно раз­ делить на три основные категории: • создание и управление параллельными областями; • распределение работы по потокам; • синхронизация потоков.

8.1. Директива parallel* • Директива указывает компилятору, что последующий структур­ ный блок (одна строка или блок внутри фигурных скобок) является параллельной секцией. При запуске секции создаются (fork) подчи­ ненные потоки. После завершения работы всех потоков секции подчиненные по­ токи уничтожаются и управление передается следующему структур­ ному блоку основного потока (join). Опции: • if () —условия для создания параллельной секции. Если опция не указана, параллельная секция создается всегда. • num_threads () — количество потоков, создава­ емых для выполнения параллельной секции. Если опция не указана, используется количество потоков по умолчанию. • shared () —указывается, какие переменные должны быть доступны для всех потоков.

70

8. Директивы OpenMP

• private () — указывается, каким перемен­ ным нужны индивидуальные копии в каждом потоке. Переменные в подчиненных потоках будут объявлены, но не инициализированы. • firstprivate () — указывается, каким пере­ менным нужны индивидуальные копии в каждом потоке. Перемен­ ные в подчиненных потоках инициализируются значениями из ос­ новного потока. • reduction (:) — указывает, что в каждом потоке должна создаваться индивидуальная копия переменной, после завершения структурного блока переменные будут объединены с ис­ пользованием заданной операции. Доступные операции: +, —, *, &, |, Л, &&, ||, min, max. Переменные будут инициализированы нейтраль­ ным значением для заданной операции. (Операции min и max не под­ держиваются в OpenMP 2.0. Кроме того, в 2.0 возможна редукция только единичных переменных, в более новых стандартах можно ра­ ботать с массивами). • default (shared|none) — указывается подход к переменным, объ­ явленным вне структурного блока. По умолчанию используется зна­ чение shared — все переменные, объявленные снаружи параллельной секции, будут общими для всех потоков, как объявленные через оп­ цию shared(). Поэтому обычно опцию shared() можно не использовать явно. При значении попе все внешние переменные, используемые вну­ три секции, но не указанные в опциях private(), shared(), reduction(), firstprivateO, lastprivate(), вызовут ошибку при компиляции.

8.2. Взаимодействие потоков. Директивы critical, single, master, atomic Директивы предназначены для управления выполнением участков кода внутри параллельной секции. Если нужно, чтобы участок кода выполнялся только одним потоком единовременно, то используется директива #pragma ошр critical. В каждый момент времени код критической секции выполняется только одним потоком. Другие потоки будут заблокированы, пока один из них выполняет код. После завершения работы одного потока в секции один

71

Роздел Б. Технология ОрепМР

из ожидающих потоков начинает выполнять код секции. Остальные продолжают ожидание. Обычно такой механизм используется, что­ бы избежать ошибок (условий гонок, Race Condition) при работе с об­ щими переменными. Однако использование последовательных участ­ ков кода в параллельной программе может снизить ее эффективность. Директива #pragma omp atomic может использоваться перед одиночной конструкцией присваивания. Она гарантирует коррект­ ную работу с общей переменной в левой части присваивания. Для это­ го на время выполнения оператора присваивание всем потокам, кроме выполняющего операцию, блокируется доступ. При этом вычисле­ ниям, проводящимся в правой части, не гарантируется атомарность. Если нужно, чтобы участок кода выполнялся только один раз, ис­ пользуется директива #pragma omp s i n g l e . Какой именно поток будет выполнять структурный блок, не определено. Все остальные по­ токи будет ожидать завершения блока, если не указать опцию nowa i t . Директива #pragma omp master выполняет структурный блок один раз, при этом только основным потоком. Все остальные потоки пропускают участок и продолжают работу со следующего фрагмента. Директива не осуществляет неявную синхронизацию.

8.3. Управление доступом к данным. Опции private и shared* • В ОрепМР переменные, используемые в параллельных областях, могут принадлежать к одному из двух классов: • private (частные, приватные, локальные) — имеют свои незави­ симые экземпляры в каждом потоке. Поток может менять значение своих локальных переменных, не влияя на значение переменных с тем же именем в других потоках. Все переменные, объявляемые внутри параллельной секции, по умол­ чанию будут локальными. • shared (общие) — существуют в единственном экземпляре и до­ ступны всем потокам. Если несколько потоков будут одновременно записывать значение общей переменной, не учитывая друг друга, не выполняя синхрони­ зацию, то возникнет условие гонок — значение переменной и резуль72

8. Директивы OpenMP

тат выполнения программы будут непредсказуемы. По умолчанию все переменные, объявленные вне параллельной области, останутся об­ щими при старте области. Тип доступа к переменным можно явно указать в опциях директи­ вы #ргаgma ошр parallel.

8.4. Распределение работы между потоками. Директива f o r В общем случае, для того чтобы добиться снижения времени выпол­ нения программы, недостаточно просто создать параллельную область. Рассмотрим следующую программу (см. Пример 2). Очевидно, что самый трудозатратный участок —выполнение цикла. Для ускорения необходимо разделить работу между потоками. ОрепМР дает программисту несколько способов распределения ра­ боты между запущенными потоками. Большинство конструкций, пред­ назначенных для распределения работы, не порождают новых потоков.

8.4.1. Ручное распределение работы Один из вариантов распределения заключается в ручном разделе­ нии работы, при этом используются номера потоков. Разделим все итерации цикла на фрагменты, число которых равно количеству по­ токов. После завершения цикла сложим все промежуточные резуль­ таты в общую переменную (см. Пример 2а).

8.4.2. Автоматическое распараллеливание циклов Директива #pragma omp for предназначена для автоматического распараллеливания выполнения цикла for. Компилятор автоматически распределит итерации цикла по потокам. При этом важно, чтобы полное число итераций было известно на момент входа в параллельную область. Для краткости многие директивы могут быть использованы в объ­ единенном виде, например, директива parallel for сразу создаст парал­ лельные потоки и распределит части цикла по ним. 73

Раздел Б. Технология ОрепМР

По умолчанию каждый поток приостановит работу после заверше­ ния структурного блока цикла. Программа продолжит работу, только когда все потоки завершат цикл (аналогично директиве barrier). В стандарте ОрепМР 2.0 возможно распараллеливание только для целочисленных счетчиков цикла. В ОрепМР 3.0 распараллеливание возможно для итераторов стандартной библиотеки C++. Опции: • private (); • firstprivate (); • reduction (:); • lastprivate () — указывает, что у перемен­ ных будут индивидуальные копии в каждом потоке. После заверше­ ния блока, переменным будут присвоены значения из потока, завер­ шившего цикл последним; • collapse () — указывает, что директи­ ва обрабатывает несколько тесно-вложенных циклов. Создается еди­ ное пространство итераций, которое распределяется по потокам, (ди­ ректива не поддерживается в ОрепМР 2.О.); • ordered — указывает, что в теле цикла будет использоваться ди­ ректива ordered (см. ниже); • nowait — отменяет синхронизацию в конце цикла. Потоки про­ должат работу, не дожидаясь завершения цикла во всех потоках; • schedule ( [,