Что такое суперкомпьютер

Суперкомпьютер

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

К примеру, немецкий центр вычислений SuperMUC состоит из 72 огромных стоек с блоками, в каждом из них по 4 маленьких блока в 8 рядах. В каждом таком блоке есть свой 4 отдельных узла - это по материнской плате с одним процессором и собственной памятью в каждом. В отличие от домашнего ПК, любой суперкомпьютер можно сделать бесконечно производительным, потому что блоки можно увеличивать произвольно, но все опирается на финансирование. С другой стороны, пользователи суперкомпьютеров - это первые, кто получает прямую выгоду от компьютерного прогресса, который они финансируют: размер суперкомпьютера не уменьшается, он по-прежнему занимает шкафы и залы, но со временем в один шкаф можно запихнуть все больше процессоров. Поэтому, если сейчас один шкаф содержит, к пример 4096 ядер процессоров, то раньше, еще когда не было многоядерных процессоров, туда влезало только пару сотен.

Здесь может возникнуть вопрос - а зачем это нужно? Для компьютерных игрушек хватает и простых ПК, правда? Поэтому, в первую очередь такими машинами пользуются ученые, которые имеют настолько сложные задачи, что их невозможно в разумное время посчитать на обычном ПК. А ученых очень много, и считать они вынужден много, поэтому такие компьютеры практически всегда загружены на 100%. Больше всего средств требуют физики элементарных частиц.

Хотя на самом деле, один человек не имеет доступа ко всем средствам компьютера, а лишь к определенной их части. На каждом суперкомпьютер установлена система управления задачами, которая выделяет каждому пользователю определенное количество памяти, процессоров и времени, и следит за тем, чтобы это распределение было более или менее справедливым. Например, если ученому выделено максимум 100 процессоров, то он может одновременно запустить или одну задачу на 100 ядрах, или, скажем, 4 задачи и использовать 25 ядер. При этом, если свободны только 30 ядер, то в первом случае задача будет висеть «в очереди», пока не освободятся 100 ядер, а во втором - одна 25-ядерная задача запустится. То есть, с одной стороны, маленькие задачи запускаются быстрее, а, с другой - считаются медленнее.

Чтобы получить доступ к SuperMUC, ваша задача должна потребовать минимум 3000 ядер одновременно. Здесь очень важную роль играет также code scaling, а именно увеличение скорости выполнения кода в зависимости от количества ядер. Не бывает такого, чтобы код на 2 ядрах выполнялся в 2 раза быстрее, чем на одном, а на 4 ядрах - в 4 раза быстрее, чем на одном. Почему не бывает? Ну потому что даже если код программы написан настолько идеально, что на каждом из 4 ядер будет выполняться ровно 1/4 нужного объема вычислений, все равно какое-то время будет тратиться на коммуникацию - на обмен данными между различными кусками программы. Да и вообще, это все достаточно сложно работает: по сути, параллельные вычисления заключаются в том, что, скажем, на 4 процессорах запускается 4 копии программы, и каждая копия умеет с помощью функций MPI определять, что она является копией с определенным идентификатором, и в зависимости от этого, в каждой из копий запускается на выполнение 4 различных части кода. Поэтому, чтобы получить максимальную пользу от многопроцессорности, программа должна быть очень хорошо и продуманно написана.

Как пользуются суперкомпьютерами?

В отличие от обычных компьютеров, к суперкомпьютерам никто не имеет физического доступа, кроме обслуживающего персонала, а расположены они в закрытых серверных залах с мощной системой охлаждения. А доступ к ним возможен только с помощью SSH (протокола удаленного доступа к командной оболочки). Как правило, никакого графического интерфейса не делают, хотя из командной строки можно запускать некоторые графические программы. Для доступа к суперкомпьютеру и и постановки ему задачи используют еще один самый обычный компьютер. На этом ПК установлена система управления задачами, с помощью которой ученый запускает задание на выполнение. К этому ПК также подключена, через сеть, большая система для хранения всех данных - винчестеры с терабайтами, где ученый записывает входящие файлы, и где, также, будут записаны исходные файлы.

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

Поэтому, в отличие от обычного компьютера, суперкомпьютер невозможно собрать самому на колене, этим обычно занимаются профессиональные компании, поставляющие комплексные (железо + софт) решения и оказывающие поддержку 24/7. Как видно из списка TOP500 производителей, лидерами являются IBM и Hewlett-Packard - это основные конкуренты на рынке. Также свою определенную долю имеют Cray, Dell и другие компании. Особенностью архитектуры является то, что на вычислительных нодах установлен не полноценен Линукс, а минималистская операционная система собственной разработки IBM, которая поддерживает только некий минимальный набор POSIX-инструкций и работает в одно-пользовательском режиме (single user mode). На компьютере, с которого ученые запускают задачи, установлен полноценный SUSE Linux, но сам код выполняется-то на узлах с той минимальной ОС. Кроме того, основным фактором, влияющим на скорость вычислений является скорость обмена всеми данными между компьютерными узлами и здесь разные производители между собой соревнуются, кто и что придумает.

Применение таких компьютерных монстров становится все более распространенным. Например, в Польше есть несколько крупных вычислительных центров, финансируемых из государственного бюджета. Это Академический компьютерный центр CYFRONET AGH в Кракове, Центр компьютерного моделирования Варшавского университета (ICM), Вроцлавский сетевой компьютерный центр (WCSS), Кроме вычислений, центры в Кракове, Варшаве и Познани выполняют еще одну важную функцию: раздают интернет всем государственным учреждениям: органам власти и самоуправления, школам, университетам, ментам. Особенно повезло жителям студенческого городка AGH, на территории которого находится Цифронет: они получили очень быстрый и бесплатный интернет в своих общежитиях. Кроме того, на серверах ICM и Цифронет хостится государственное интернет-телевидение TVP. Так что сфера применения таких машин очень широка.

Видео по теме