История суперкомпьютерного моделирования
Суперкомпьютерное моделирование возникло примерно в конце 40-х — начале 50-х годов XX века. Тогда компьютерная эра только зарождалась, появился первый компьютер ENIAC в Америке, а также первый российский компьютер, который сделал гениальный академик Лебедев. Но, разумеется, их использование было не столь широко, и в основном вычисления проводились с помощью большого количества девушек, которые сидели в очень большой комнате, напоминавшей спортзал, с арифмометрами в руках.
Осуществлять таким образом последовательные вычисления для решения больших вычислительных задач было очень тяжело. Поэтому математикам пришлось думать, как наиболее эффективно «распараллеливать вычислительный процесс». Сейчас этот термин считается современным. Все наши суперкомпьютерные системы используют распараллеленные алгоритмы. Но зародились они именно тогда, еще в начале 1950-х годов, с помощью арифмометров, когда другого варианта просто не было. Вычислительная техника развивалась одновременно с вычислительными методами, и это было связано с развитием ядерных программ.
1. Создание первого электронного вычислительного компьютера
Все прекрасно помнят, что было в конце войны. Происходили бомбардировки японских городов, после чего наше правительство вынуждено было срочно ввести ядерную программу, которую возглавил и сделал в кратчайшие сроки наш гениальный физик Курчатов. Но для этого пришлось приложить очень большие силы не только физиков, но и математиков-вычислителей и разработчиков компьютерной техники. Причем все это было очень секретно, поэтому о наших ядерных физиках, конструкторах авиационной и космической техники знали, а имя академика Лебедева, замечательного инженера и генерального конструктора Брука, не было никому известно. С американской стороны это был легендарный фон Нейман. Это человек, известный в математике, механике и компьютерной технике. Но все-таки первый электронный вычислительный компьютер был создан примерно в 1951 году школой академика Лебедева. Почти через год аналогичный полностью электронный компьютер знаменитого фон Неймана появился в Америке. Хотя первый компьютер, конечно, был сделан в Америке в 1946 году, но он был частично электронный, частично механический. А вот полностью электронный был сделан только в 1951 году.
2. Первые вычислительные методы Тут же появилась задача о последствиях распространения ядерного взрыва, которая решалась параллельно и у нас, и за океаном. Конечно, все велось по совершенно секретным программам, но сейчас все эти работы открыты и есть в студенческих учебниках. Тогда фактически начала развиваться так называемая теория разностных схем, решение дифференциальных уравнений в частных производных. Это основа уравнений математической физики, которые описывают основные физические процессы.
Вообще, очень многие физические процессы можно описать с помощью двух систем дифференциальных уравнений в частных производных. Одна система — уравнения Лагранжа — Эйлера механики сплошных сред, а вторая — очень хорошо известная физикам система электродинамики сплошных сред Максвелла. Хотя есть и другие уравнения, но очень большое количество физических задач решается с помощью этих систем уравнений.
Тогда же начали развиваться первые вычислительные методы. Выдающиеся исследователи в этой области — Лакс, Вендрофф, Курант, Годунов, Харлоу, Гельфанд, Белоцерковский — первый человек, который смог численно решить задачу об обтекании спускаемого в атмосфере аппарата, — академик Самарский, академик Дородницын, Яненко. Все эти люди параллельно развивали вычислительную технику и вычислительные методы.
Тогда появились знаменитые схемы Лакса, Лакса — Вендроффа, метод Годунова, который до сих пор не потерял актуальности, хотя прошло уже более 60 лет. Кроме того, был создан знаменитый метод Белоцерковского — Дородницына, который используется и сейчас. Тогда же были предложены схемы академика Самарского, по которым сейчас решаются многие математически сложные задачи.
3. Развитие вычислительной техники
Конечно, наличие этих задач подхлестывало развитие вычислительной техники. И у нас она развивалась очень неплохо. Примерно до середины 1960-х годов мы шли параллельно с американцами. Но потом некоторые, на мой взгляд, не совсем профессиональные решения в самых верхах правительства привели к тому, что развитие нашей техники и ее финансирование сокращалось и было в основном направлено на закупку американской вычислительной техники. Это было очень большой ошибкой, но наша вычислительная техника очень долго служила и работает до сих пор — в основном для решения специальных задач. Современные суперкомпьютеры — это очень мощные вычислительные системы. Скорость их работы уже достигает десяти и более петафлоп. Хотя буквально 3–5 лет назад речь шла о терафлопах. А сейчас уже заходит речь об экзафлопных задачах, то есть это 1018 операций с плавающей запятой в секунду. Сейчас это кажется фантастикой. Но такой же фантастикой несколько лет назад казались петафлопные, еще ранее — терафлопные и гигафлопные компьютеры.
4. Системы с распределенной памятью Мощность вычислительной техники увеличивается с поразительной скоростью. Правда, физики тоже не отстают, и с развитием вычислительной техники они ставят задачи соответствующей сложности. Последнее десятилетие дало удивительный скачок в решении сложнейших задач. Я могу перечислить только некоторые темы (все их перечислить невозможно), в которых применяется суперкомпьютерное моделирование.
Мы сейчас работаем на системах с распределенной памятью. Они очень хороши тем, что могут использовать много процессоров и обширную память, как, например, система MPI — самая распространенная на сегодняшний день в мире. Open MP — это очень хорошая система, но ее недостатком является ограниченное количество процессоров, которые можно использовать в вычислениях. Кроме того, в последние годы стала очень популярной система CUDA, которая работает на графических процессорах, у нее есть очень яркое свойство — она дает большое ускорение (в десятки раз) по сравнению с компьютерами на центральных процессорах. Но и есть, конечно же, недостаток — это ограниченная память.
5. Задачи, которые решаются с помощью суперкомпьютеров
С помощью суперкомпьютеров решаются различные задачи. Во-первых, системы уравнений механики сплошных сред. Что они собой представляют? Современный уровень в развитии численных методов и компьютерной техники позволяет решать трехмерные динамические задачи. Эти системы уравнений включают в себя, как правило, три закона сохранений, реологические соотношения, описывающие поведение среды или уравнения состояния. Эти уравнения могут быть гиперболического типа, тогда они описывают динамические или волновые процессы, которые происходят в среде. Также уравнения могут быть параболического типа. Это, как правило, диссипативные процессы, линейные или нелинейные, типа уравнений теплопроводности, вязкости. Возможны совместные гиперболические и параболические уравнения, что тоже бывает нередко. Бывают еще стационарные системы уравнений, это системы эллиптического типа, уравнения типа Лапласа — Пуассона, которые описывают стационарные вычислительные процессы, а также уравнения второго порядка по координатам. Их методы решения, как правило, итерационные, и они неплохо «параллелятся».
6. Применение вычислительных систем Чтобы задачу на таком суперкомпьютере можно было распараллелить, конечно, необходимо выполнение некоторого минимального набора условий. Во-первых, задача должна иметь свойство внутренней параллельности. Если вернуться к задачам механики и электродинамики сплошных сред, которыми описывают большинство физических процессов, то такими свойствами обладают явные разностные схемы для решения этих уравнений. Если мы берем более долгие процессы или уравнения параболического типа, которые решаются с помощью неявных схем, то они параллелятся уже сложнее.
Основное применение вычислительных систем — это моделирование сложных физических задач, процессов. Это нелинейные трехмерные динамические задачи, которые стало возможно решать буквально в последнее десятилетие. С этими задачами связаны такие области информатики, как 3D-компьютерная графика, без которой невозможен анализ результатов расчетов, сетевые технологии, оптимизация программ, интегрирование больших программных комплексов, создание параллельных алгоритмов и распределенные системы.
Специалист в нашей области должен знать очень много. Он должен быть прекрасным программистом, знать практически всю информатику, также он должен быть отличным математиком, знать численные методы и предметную область, в которой он работает. Сейчас наши суперкомпьютеры позволяют решать такие задачи, о которых раньше тяжело было говорить.
Полный текст статьи читайте на Postnauka.ru