Next:1. ОБЗОР АРХИТЕКТУР МНОГОПРОЦЕССОРНЫХ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ
Up:СОДЕРЖАНИЕ
Prev:СОДЕРЖАНИЕ

ВВЕДЕНИЕ

Прошло немногим более 50 лет с момента появления первых электронных вычислительных машин - компьютеров. За это время сфера их применения охватила практически все области человеческой деятельности. Сегодня невозможно представить себе эффективную организацию работы без применения компьютеров в таких областях, как планирование и управление производством, проектирование и разработка сложных технических устройств, издательская деятельность, образование - словом, во всех областях, где возникает необходимость в обработке больших объемов информации. Однако наиболее важным по-прежнему остается использование их в том направлении, для которого они собственно и создавались, а именно, для решения больших задач, требующих выполнения громадных объемов вычислений. Такие задачи возникли в середине прошлого века в связи с развитием атомной энергетики, авиастроения, ракетно-космических технологий и ряда других областей науки и техники.

В наше время круг задач, требующих для своего решения применения мощных вычислительных ресурсов, еще более расширился. Это связано с тем, что произошли фундаментальные изменения в самой организации научных исследований. Вследствие широкого внедрения вычислительной техники значительно усилилось направление численного моделирования и численного эксперимента. Численное моделирование, заполняя промежуток между физическими экспериментами и аналитическими подходами, позволило изучать явления, которые являются либо слишком сложными для исследования аналитическими методами, либо слишком дорогостоящими или опасными для экспериментального изучения. При этом численный эксперимент позволил значительно удешевить процесс научного и технологического поиска. Стало возможным моделировать в реальном времени процессы интенсивных физико-химических и ядерных реакций, глобальные атмосферные процессы, процессы экономического и промышленного развития регионов и т.д. Очевидно, что решение таких масштабных задач требует значительных вычислительных ресурсов [1].

Вычислительное направление применения компьютеров всегда оставалось основным двигателем прогресса в компьютерных технологиях. Не удивительно поэтому, что в качестве основной характеристики компьютеров используется такой показатель, как производительность - величина, показывающая, какое количество арифметических операций он может выполнить за единицу времени. Именно этот показатель с наибольшей очевидностью демонстрирует масштабы прогресса, достигнутого в компьютерных технологиях. Так, например, производительность одного из самых первых компьютеров EDSAC составляла всего около 100 операций в секунду, тогда как пиковая производительность самого мощного на сегодняшний день суперкомпьютера Earth Simulator оценивается в 40 триллионов операций/сек. Т.е. произошло увеличение быстродействия в 400 миллиардов раз! Невозможно назвать другую сферу человеческой деятельности, где прогресс был бы столь очевиден и так велик.

Естественно, что у любого человека сразу же возникает вопрос: за счет чего это оказалось возможным? Как ни странно, ответ довольно прост: примерно 1000-кратное увеличение скорости работы электронных схем и максимально широкое распараллеливание обработки данных.

Идея параллельной обработки данных как мощного резерва увеличения производительности вычислительных аппаратов была высказана Чарльзом Бэббиджем примерно за сто лет до появления первого электронного компьютера. Однако уровень развития технологий середины 19-го века не позволил ему реализовать эту идею. С появлением первых электронных компьютеров эти идеи неоднократно становились отправной точкой при разработке самых передовых и производительных вычислительных систем. Без преувеличения можно сказать, что вся история развития высокопроизводительных вычислительных систем - это история реализации идей параллельной обработки на том или ином этапе развития компьютерных технологий, естественно, в сочетании с увеличением частоты работы электронных схем.

Принципиально важными решениями в повышении производительности вычислительных систем были: введение конвейерной организации выполнения команд; включение в систему команд векторных операций, позволяющих одной командой обрабатывать целые массивы данных; распределение вычислений на множество процессоров. Сочетание этих 3-х механизмов в архитектуре суперкомпьютера Earth Simulator, состоящего из 5120 векторно-конвейерных процессоров, и позволило ему достичь рекордной производительности, которая в 20000 раз превышает производительность современных персональных компьютеров.

Очевидно, что такие системы чрезвычайно дороги и изготавливаются в единичных экземплярах. Ну, а что же производится сегодня в промышленных масштабах? Широкое разнообразие производимых в мире компьютеров с большой степенью условности можно разделить на четыре класса:

Условность разделения связана в первую очередь с быстрым прогрессом в развитии микроэлектронных технологий. Производительность компьютеров в каждом из классов удваивается в последние годы примерно за 18 месяцев (закон Мура). В связи с этим, суперкомпьютеры начала 90-х годов зачастую уступают в производительности современным рабочим станциям, а персональные компьютеры начинают успешно конкурировать по производительности с рабочими станциями. Тем не менее, попытаемся каким-то образом классифицировать их.

Персональные компьютеры. Как правило, в этом случае подразумеваются однопроцессорные системы на платформе Intel или AMD, работающие под управлением однопользовательских операционных систем (Microsoft Windows и др.). Используются в основном как персональные рабочие места.

Рабочие станции. Это чаще всего компьютеры с RISC процессорами с многопользовательскими операционными системами, относящимися к семейству ОС UNIX. Содержат от одного до четырех процессоров. Поддерживают удаленный доступ. Могут обслуживать вычислительные потребности небольшой группы пользователей.

Суперкомпьютеры. Отличительной особенностью суперкомпьютеров является то, что это, как правило, большие и, соответственно, чрезвычайно дорогие многопроцессорные системы. В большинстве случаев в суперкомпьютерах используются те же серийно выпускаемые процессоры, что и в рабочих станциях. Поэтому зачастую различие между ними не столько качественное, сколько количественное. Например, можно говорить о 4-х процессорной рабочей станции фирмы SUN и о 64-х процессорном суперкомпьютере фирмы SUN. Скорее всего, в том и другом случае будут использоваться одни и те же микропроцессоры.

Кластерные системы. В последние годы широко используются во всем мире как дешевая альтернатива суперкомпьютерам. Система требуемой производительности собирается из готовых серийно выпускаемых компьютеров, объединенных опять же с помощью некоторого серийно выпускаемого коммуникационного оборудования.

Таким образом, многопроцессорные системы, которые ранее ассоциировались в основном с суперкомпьютерами, в настоящее время прочно утвердились во всем диапазоне производимых вычислительных систем, начиная от персональных компьютеров и заканчивая суперкомпьютерами на базе векторно-конвейерных процессоров. Это обстоятельство, с одной стороны, увеличивает доступность суперкомпьютерных технологий, а, с другой, повышает актуальность их освоения, поскольку для всех типов многопроцессорных систем требуется использование специальных технологий программирования для того, чтобы программа могла в полной мере использовать ресурсы высокопроизводительной вычислительной системы. Обычно это достигается разделением программы с помощью того или иного механизма на параллельные ветви, каждая из которых выполняется на отдельном процессоре.

Суперкомпьютеры разрабатываются в первую очередь для того, чтобы с их помощью решать сложные задачи, требующие огромных объемов вычислений. При этом подразумевается, что может быть создана единая программа, для выполнения которой будут задействованы все ресурсы суперкомпьютера. Однако не всегда такая единая программа может быть создана или ее создание целесообразно. В самом деле, при разработке параллельной программы для многопроцессорной системы мало разбить программу на параллельные ветви. Для эффективного использования ресурсов необходимо обеспечить равномерную загрузку всех процессоров, что в свою очередь означает, что все ветви программы должны выполнить примерно одинаковый объем вычислительной работы. Однако не всегда этого можно достичь. Например, при решении некоторой параметрической задачи для разных значений параметров время поиска решения может значительно различаться. В таких случаях, видимо, разумнее независимо выполнять расчеты для каждого параметра с помощью обычной однопроцессорной программы. Но даже в таком простом случае могут потребоваться суперкомпьютерные ресурсы, поскольку выполнение полного расчета на однопроцессорной системе может потребовать слишком длительного времени. Параллельное выполнение множества программ для различных значений параметров позволяет существенно ускорить решение задачи. Наконец, следует отметить, что использование суперкомпьютеров всегда более эффективно для обслуживания вычислительных потребностей большой группы пользователей, чем использование эквивалентного количества однопроцессорных рабочих станций, так как в этом случае с помощью некоторой системы управления заданиями легче обеспечить равномерную и более эффективную загрузку вычислительных ресурсов.

В отличие от обычных многопользовательских систем для достижения максимальной скорости выполнения программ операционные системы суперкомпьютеров, как правило, не позволяют разделять ресурсы одного процессора между разными, одновременно выполняющимися программами. Поэтому, как два крайних варианта, возможны следующие режимы использования n-процессорной системы:

  1. все ресурсы отдаются для выполнения одной программы, и тогда мы вправе ожидать n-кратного ускорения работы программы по сравнению с однопроцессорной системой;
  2. одновременно выполняется n обычных однопроцессорных программ, при этом пользователь вправе рассчитывать, что на скорость выполнения его программы не будут оказывать влияния другие программы.

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

В силу ряда причин из перечисленных выше 4-х классов вычислительных систем в России достаточное распространение получили только персональные компьютеры, и соответственно ситуация с освоением технологий работы с этими компьютерами более или менее благополучная. Компьютерный парк систем, относящихся к классу мультипроцессорных рабочих станций и, особенно, к классу суперкомпьютеров, чрезвычайно мал. Вследствие этого наметилось существенное отставание в подготовке специалистов в области программирования для таких систем, без которых, в свою очередь, невозможно эффективное использование даже имеющегося компьютерного парка. В этом плане весьма показателен опыт эксплуатации в Ростовском государственном университете многопроцессорной системы nCUBE 2S. Система была установлена в Ростовском госуниверситете в 1997 г., однако потребовалось более 2-х лет, прежде чем на ней заработали первые реальные параллельные прикладные программы, предназначенные для решения задач математического моделирования. Более того, в значительной степени это оказалось возможным только после включения в программное обеспечение nCUBE 2S мобильной среды параллельного программирования MPI и основанных на ней библиотек параллельных подпрограмм. Учитывая, что моральное старение компьютеров в настоящее время происходит очень быстро, столь длительный период освоения, конечно, недопустим. В качестве оправдания отметим, что это был первый опыт эксплуатации таких систем не только в Ростовском университете, но и вообще в России, поэтому практически отсутствовала какая-либо литература по данному вопросу. К счастью, оказалось, что накопленное программное обеспечение легко переносится на другие многопроцессорные системы, а освоенные технологии программирования имеют достаточно универсальный характер.

Данное пособие адресовано тем, кто желает ознакомиться с технологиями программирования для многопроцессорных систем. В нем не обсуждаются сложные теоретические вопросы параллельного программирования. Скорее это практическое руководство, в котором авторы попытались систематизировать свой собственный опыт освоения этих технологий. Мы, конечно, ни в коей мере не претендуем на полноту освещения данной темы. Речь в основном пойдет о системах, подобных nCUBE 2S - системах с распределенной памятью. К числу таких систем относятся и широко распространенные в настоящее время кластерные системы.

По своей структуре пособие состоит из трех частей. В первой части приводится обзор архитектур многопроцессорных вычислительных систем (МВС) и средств их программирования. Рассматриваются вопросы, связанные с повышением производительности вычислений. В заключительных главах первой части рассматриваются архитектура и средства программирования вычислительных систем суперкомпьютерного центра Ростовского госуниверситета: МВС nCUBE 2S и гетерогенного вычислительного кластера. Вторая часть пособия полностью посвящена рассмотрению наиболее распространенной среды параллельного программирования - коммуникационной библиотеки MPI, ставшей в настоящее время фактическим стандартом для разработки мобильных параллельных программ. Третья часть, по сути, представляет собой методическое руководство по работе с библиотеками параллельных подпрограмм ScaLAPACK и Aztec. Первая из них предназначена для работы с плотными матрицами общего вида, а вторая - для решения больших систем линейных уравнений с разреженными матрицами.

Введение мы завершим определением некоторых понятий, используемых в литературе по технологиям высокопроизводительных вычислений.

Единицы измерения объема данных:
1 байт = минимальная адресуемая единица информации = 8 бит
1 Кб (килобайт) = 1024 байт
1 Мб (мегабайт) = 1024 Кб
1 Гб (гигабайт) = 1024 Мб

Единицы измерения производительности вычислительных систем:
1 Mflops (мегафлопс) = 1 миллион оп/сек
1 Gflops (гигафлопс) = 1 миллиард оп/сек
1 Tflops (терафлопс) = 1 триллион оп/сек



Next:1. ОБЗОР АРХИТЕКТУР МНОГОПРОЦЕССОРНЫХ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ
Up:СОДЕРЖАНИЕ
Prev:СОДЕРЖАНИЕ