fd4fef6594f76e9406060caa2d0145b3.ppt
- Количество слайдов: 39
Распределенные базы данных, высокопроизводительные вычисления, грид и облачные технологии Лекция 11 Высокопроизводительные вычисления Желенкова О. П.
Высокопроизводительные вычисления. Потребности, ограничения, возможности Потребности вычислений опережают быстродействие существующих компьютерных систем. Оценка необходимой производительности для климатических моделей – 1012 операций или 1 Tflops Ограниченность роста производительности компьютеров Многоядерные высокопроизводительные процессоры Резкое снижение стоимости многопроцессорных вычислительных систем ◦ ПК на базе 4 -ядерного процессора Intel Core 2 Quad – 20 GFlops ($1500), ◦ Персональный мини-кластер T-Edge Mini на базе 4 -ядерных процессоров Intel Xeon – 240 GFlops ($20000)
Области, в которых высокопроизводительные вычисления имеют особую значимость: Невозможность или недопустимость натурных экспериментов: изучение процессов при ядерном взрыве или серьезных воздействий на природу Изучение влияния экстремальных условий (температур, магнитных полей, радиации и др. ) — старение материалов, безопасность конструкций, боевое применение Моделирование наноустройств и наноматериалов Науки о жизни — изучение генома человека, разработка новых лекарственных препаратов и т. п. Науки о Земле — обработка геоинформации: полезные ископаемые; селевая, сейсмическая и т. п. безопасность, прогнозы погоды, модели изменения климата. . . Моделирование при разработке новых технических устройств — инженерные расчеты Астрономия – космологические модели, моделирование звездных атмосфер, обработка наблюдений, задачи движения nтел
Науки о Земле Анализ изменений климата q q Состояние атмосферы Прогнозирование погоды
Науки о жизни q Геномика Новые лекарства и методы лечения q Поиск в базах данных
Инженерные расчёты Виртуальное проектирование q Оптимизация
Производительность суперкомпьютеров из TOP 500 и TOP 50
Статистика из TOP 50
Виды вычислительных систем
суперкомпьютер
кластер
Высокопроизводительные вычисления: Распределенные вычисления — способ решения трудоёмких вычислительных задач с использованием нескольких компьютеров, объединённых в параллельную вычислительную систему. Параллельные вычисления — такой способ организации компьютерных вычислений, при котором программы разрабатываются как набор взаимодействующих вычислительных процессов, работающих параллельно. Таким образом распределенные вычисления не могут производится на одной вычислительной машине, а параллельные вычисления могут производиться как на одной (многопоточность), так и на нескольких машинах. Явление открытых вычислительных систем следует выделить в отдельную тему и рассматривать как реализацию систем распределенного вычисления. Такие вычислительные системы (сети) чаще всего строятся на базе, так называемых GRID-систем (сетей), в русском языке иногда называются как системы метакомпьютинга (матавычисления).
Параллельные вычисления возможны при: Ø независимость функционирования устройств ЭВМ - устройств ввода-вывода, обрабатывающих процессоров и памяти, Ø избыточность элементов вычислительной системы: vиспользование специализированных устройств отдельные процессоры для целочисленной и вещественной арифметики, устройства многоуровневой памяти, vдублирование устройств ЭВМ - использование нескольких однотипных обрабатывающих процессоров, нескольких устройств оперативной памяти, Ø конвейерная реализация обрабатывающих устройств
Режимы выполнения независимых частей программы: ◦ многозадачный режим (режим разделения времени), при котором для выполнения нескольких процессов используется единственный процессор (данный режим является псевдопараллельным, в каждый момент времени исполняемым может быть единственный процесс), ◦ параллельное выполнение, когда в один и тот же момент времени может выполняться несколько команд обработки данных, что обеспечивается при наличии нескольких процессоров или при помощи конвейерных и векторных обрабатывающих устройств, ◦ распределенные вычисления, при которых для параллельной обработки данных используется несколько обрабатывающих устройств, достаточно удаленных друг от друга, а передача данных по линиям связи приводит к существенным временным задержкам.
Примеры параллельных вычислительных систем Суперкомпьютер – это вычислительная система, обладающая предельными характеристиками по производительности среди имеющихся в каждый конкретный момент времени компьютерных систем Кластер – группа компьютеров, объединенных в локальную вычислительную сеть (ЛВС) и способных работать в качестве единого вычислительного ресурса. Предполагает более высокую надежность и эффективность, нежели ЛВС, и существенно более низкую стоимость в сравнении с другими типами параллельных вычислительных систем (за счет использования типовых аппаратных и программных решений).
Первая часть полученного произведения — количество инструкций, выполняемых за один такт (IPC, Instruction Per Clock), вторая — количество тактов процессора в единицу времени, тактовая частота. Для увеличения производительности нужно или поднимать тактовую частоту, или увеличивать количество инструкций, выполняемых за один такт. Рост частоты остановился нужно увеличивать количество исполняемых за один такт инструкций.
В качестве основной характеристики компьютеров используется производительность – величина, показывающая, какое количество арифметических операций компьютер выполняет за единицу времени. Так, например, производительность одного из первых компьютеров EDSAC составляла всего около 100 операций в секунду, теперь же у одного из самых мощных российских суперкомпьютеров НИВЦ МГУ пиковая производительность оценивается в 400 триллионов операций/сек, т. е. производительность возросла в 4000 миллиардов раз. В то же время тактовая частота процессоров возросла со 10 КГц до 10 ГГц, т. е. всего в миллион раз. Причиной такой разницы является внедрение распараллеливания вычислительных процессов. Идея параллельной обработки данных как мощного резерва увеличения производительности вычислительных аппаратов была высказана Чарльзом Бэббиджем примерно за сто лет до появления первого электронного компьютера.
Принципиально важными решениями в повышении производительности вычислительных систем были: введение конвейерной организации выполнения команд; включение в систему команд векторных операций, позволяющих одной командой обрабатывать целые массивы данных; распределение вычислений на множество процессоров.
Разнообразие существующих в мире вычислительных систем можно разделить на пять классов: персональные компьютеры (Personal Computers – PC); рабочие станции (Workstations – WS); суперкомпьютеры (Supercomputers – SC); кластерные системы (Cluster Computers - CC); виртуальные кластеры (Virtual Clusters –VC).
Персональные компьютеры. Как правило, это однопроцессорные системы на платформе Intel или AMD, работающие под управлением однопользовательских операционных систем (Microsoft Windows и др. ). Рабочие станции. Это чаще всего компьютеры с RISC процессорами с многопользовательскими операционными системами, относящимися к семейству ОС UNIX. Содержат от одного до четырех процессоров. Поддерживают удаленный доступ. Могут обслуживать вычислительные потребности небольшой группы пользователей.
Суперкомпьютеры. Большие и, соответственно, чрезвычайно дорогие многопроцессорные системы. В большинстве случаев в суперкомпьютерах используются те же серийно выпускаемые процессоры, что и в рабочих станциях. Поэтому зачастую различие между ними не столько качественное, сколько количественное. Например, можно говорить о 4 -х процессорной рабочей станции фирмы SUN и о 64 -х процессорном суперкомпьютере фирмы SUN. Скорее всего, в том и другом случае будут использоваться одни и те же микропроцессоры.
Кластерные системы. В последние годы кластеры широко используются во всем мире как альтернатива суперкомпьютерам. Система требуемой производительности собирается из готовых серийно выпускаемых компьютеров, объединенных с помощью некоторого серийно выпускаемого коммуникационного оборудования. Виртуальные кластеры. В отличие от кластерных систем, которые имеют постоянный состав оборудования и компактно локализованы, виртуальные кластеры создаются на время выполнения задачи, имеют переменный состав и распределённую архитектуру.
Экспериментальные разработки по созданию многопроцессорных вычислительных систем (МВС) начались в 70 -х годах 20 века. Одной из первых таких систем стала разработанная в Иллинойском университете МВС ILLIAC IV, которая включала 64 (в проекте до 256) процессорных элемента (ПЭ), работающих по единой программе, применяемой к содержимому собственной оперативной памяти каждого ПЭ. Обмен данными между процессорами осуществлялся через специальную матрицу коммуникационных каналов. Эта особенность коммуникационной системы дала название “матричные суперкомпьютеры” целому классу МВС.
Более широкий класс МВС с распределенной памятью и с произвольной коммуникационной системой получил впоследствии название “многопроцессорные системы с массовым параллелизмом”, или МВС с MPP-архитектурой (MPP – Massively Parallel Processing). При этом, как правило, каждый из ПЭ MPP системы является универсальным процессором, действующим по своей собственной программе (в отличие от общей программы для всех ПЭ матричной МВС). Серийные образцы подобных систем, включавшие до 8192 ПЭ, не получили широкого распространения ввиду сложности программирования МВС с одним потоком управления.
Первые промышленные образцы мультипроцессорных систем появились на базе векторно-конвейерных компьютеров в середине 80 -х годов. Наиболее распространенными МВС такого типа были суперкомпьютеры фирмы Cray. Однако такие системы были чрезвычайно дорогими и производились небольшими сериями. В подобных компьютерах объединялось от 2 до 16 процессоров, которые имели равноправный (симметричный) доступ к общей оперативной памяти. В связи с этим они получили название симметричные мультипроцессорные системы (Symmetric Multi. Processing – SMP).
Как альтернатива дорогим мультипроцессорным системам на базе векторно-конвейерных процессоров была предложена идея строить эквивалентные по мощности многопроцессорные системы из большого числа дешевых серийно выпускаемых микропроцессоров. Однако очень скоро обнаружилось, что SMP-архитектура обладает весьма ограниченными возможностями по наращиванию числа процессоров в системе из-за резкого увеличения числа конфликтов при обращении к общей шине памяти. В связи с этим появилась идея снабдить каждый процессор собственной оперативной памятью, превращая компьютер в объединение независимых вычислительных узлов.
Такой подход значительно увеличил степень масштабируемости многопроцессорных систем, но в свою очередь потребовал разработки специального способа обмена данными между вычислительными узлами, реализуемого обычно в виде механизма передачи сообщений (Message Passing). Компьютеры с такой архитектурой являются наиболее яркими представителями MPP-систем. В настоящее время эти два направления или их комбинации являются доминирующими в развитии суперкомпьютерных технологий.
Нечто среднее между SMP и MPP представляют собой NUMA-архитектуры (Non Uniform Memory Access), в которых память физически разделена, но логически общедоступна. При этом время доступа к различным блокам памяти становится неодинаковым. В одной из первых систем этого типа Cray T 3 D время доступа к памяти другого процессора было в 6 раз больше, чем к своей собственной. В настоящее время развитие суперкомпьютерных технологий идет по четырем основным направлениям: qвекторно-конвейерные суперкомпьютеры, q. SMP-системы, q. MPP-системы, qкластерные системы.
Классификация вычислительных систем Классификация М. Флинна базируется на понятиях двух потоков команд и данных. Так выделяют четыре класса архитектур: q. SISD (Single Instruction Single Data) – один поток команд и один поток данных (классическая машина фон Неймана, однопроцессорные системы. q. SIMD (Single Instruction Multiple Data) – один поток команд и множественный поток данных (матричные компьютеры, в которых все процессорные элементы выполняют одну и ту же программу). MISD (Multiple Instruction Single Date) – множественный поток команд и один поток данных (М. Флинн не смог привести ни одного примера реально существующей системы, работающей на этом принципе. Некоторые авторы называют векторно-конвейерные компьютеры, что, однако, не получило широкой поддержки). MIMD (Multiple Instruction Multiple Date) – множественный поток команд и множественный поток данных (практически все современные многопроцессорные системы).
Симметричные мультипроцессорные системы (SMP) Характерной чертой многопроцессорных систем SMP-архитектуры является то, что все процессоры имеют прямой и равноправный доступ к любой точке общей памяти. Первые SMP-системы состояли из нескольких однородных процессоров и массива общей памяти, к которой процессоры подключались через общую системную шину.
Симметричные мультипроцессорные системы (SMP) Однако, даже в однопроцессорных системах самым узким местом является оперативная память, скорость работы которой значительно меньше скорости работы процессора. Чтобы сгладить этот разрыв, современные процессоры снабжаются скоростной буферной памятью (кэш-памятью), скорость работы которой значительно выше, чем скорость работы основной памяти. Недостатками SMP-систем является то, что их стоимость растет быстрее, чем производительность при увеличении числа процессоров в системе, и взаимное торможение при параллельном выполнении даже независимых программ из-за задержек при обращении к общей памяти.
Системы с массовым параллелизмом (МРР) Процессоры системах МРР имеют прямой доступ только к своей локальной памяти. Доступ к памяти других узлов реализуется с помощью механизма передачи сообщений. Такая архитектура устраняет одновременно проблему конфликтов при обращении к памяти и проблему когерентности кэш-памяти. Это дает возможность неограниченного наращивания числа процессоров в системе.
Системы с массовым параллелизмом (МРР) Оперативная память в MPP системах имеет 3 -х уровневую структуру: кэш-память процессора; локальная оперативная память узла; оперативная память других узлов. Возможность прямого доступа к данным, расположенным в других узлах отсутствует. Для их использования эти данные должны быть предварительно переданы на узел, который в данный момент в них нуждается. Это значительно усложняет программирование. Кроме того, обмены данными между узлами выполняются значительно медленнее.
Кластерные системы Широкое распространение кластерные технологии получили как средство создания систем суперкомпьютерного класса из составных частей массового производства, что значительно удешевляет стоимость вычислительной системы. Для создания кластеров обычно используются либо простые однопроцессорные персональные компьютеры, либо двух-, четырехили n-процессорные SMP-серверы. При этом не накладываются ограничения ни на состав, ни на архитектуру узлов. Каждый из узлов может функционировать под управлением своей собственной операционной системы. В тех случаях, когда узлы кластера неоднородны, то говорят о гетерогенных кластерах.
Кластерные системы При создании кластеров можно выделить два подхода: небольшие кластерные системы. В кластер объединяются полнофункциональные компьютеры, которые продолжают работать и как самостоятельные единицы, например, компьютеры учебного класса. мощный вычислительный ресурс. Тогда системные блоки компьютеров компактно размещаются в специальных стойках, а для управления системой и для запуска задач выделяется один или несколько полнофункциональных компьютеров, называемых хост-компьютерами.
Наличие общей (SMP-системы) или распределенной (MPP-системы) памяти является важнейшим фактором, определяющим способы параллельного программирования и структуру программного обеспечения. Например для SMP-системы единая UNIX-подобная операционная система, управляющая работой всего компьютера, функционирует в виде множества процессов. Каждая пользовательская программа также запускается как отдельный процесс. Операционная система сама распределяет процессы по процессорам. В принципе, для распараллеливания программ можно использовать механизм порождения процессов.
Однако этот механизм не очень удобен, поскольку каждый процесс функционирует в своем адресном пространстве, и основное достоинство этих систем – общая память – не может быть использован простым и естественным образом. Для распараллеливания программ используется механизм порождения нитей (threads) – легковесных процессов, для которых не создается отдельного адресного пространства, но которые на многопроцессорных системах также распределяются по процессорам. В языке C возможно прямое использование этого механизма для распараллеливания программ посредством вызова соответствующих системных функций.
Литература Баденко В. Л. Высокопроизводительные вычисления: учеб. пособие – СПб. : Изд-во Политехн. ун-та, 2010. – 180 с. Воеводин В. В. Суперкомпьютерная грань компьютерного мира http: //www. parallel. ru/vvv/intro 2 hpc. html Потапов В. В. Высокопроизводительные вычисления: проблемы и решения, https: //habrahabr. ru/post/117021/ список Top 500, http: //www. top 500. org список наиболее производительных вычислительных систем в России Top 50, http: //www. supercomputers. ru классификация вычислительных систем, http: //www. parallel. ru/computers/taxonomy
fd4fef6594f76e9406060caa2d0145b3.ppt