Стивен Хокинг - Джордж и код, который не взломать
Глава шестая
На следующий день, когда Джордж проснулся – а проснулся он поздно, – в доме было непривычно тихо. Даже негодующие крики, какими близнецы каждое утро встречали свой завтрак, не доносились с кухни. Джордж потянулся под одеялом, пошевелил пальцами ног – и вспомнил свой вчерашний день: Анни с её проектом про то, как жизнь попала на Землю из космоса, обезумевшие банкоматы, которые плюются деньгами… Надо наконец выяснить, что происходит! Спрыгнув с кровати, Джордж быстро оделся и помчался вниз.
Сцена, которую он увидел, была поистине идиллической. Юнона и Гера мирно, кротко сидели на стульчиках и ели завтрак, не плюясь и не фыркая. Он совершенно растерялся. Обычно кухня во время завтрака близнецов походила на театр военных действий. Каким образом демоны превратились в ангелов?
Мама и папа улыбались Джорджу. Видя, как вытянулось его лицо, мама совсем развеселилась.
– Мы ведь тебе говорили, что однажды они вырастут и поумнеют, – сказала она.
– Что, за одну ночь?!
– Видишь ли, – снисходительно сказал папа, – дети быстро меняются. Ты был точно та…
Но договорить папа не успел: домашний кексик, описав причудливую траекторию, врезался ему прямо в челюсть. По кухне разлетелись крошки, а близнецы залились счастливым смехом. За первым кексом последовал второй, потом третий; они бомбардировали бедного папу, как обломки космической породы – молодую Солнечную систему.
Джордж счёл это удачным моментом для бегства. Он выскользнул за дверь, ведущую из кухни в сад, и крикнул:
– Я к Анни!
Он пролез сквозь дыру в заборе и помчался к двери соседской кухни. Там, как обычно, было открыто, и Джордж влетел в дом с радостным криком:
– Приве-е-ет!
Ответный Аннин «приве-е-ет» донёсся из кабинета Эрика, где хранился Космос, компьютер высочайшего интеллекта. Со второго этажа слышались звуки скрипки – одна и та же музыкальная фраза, снова и снова. Это означало, что Сьюзен сейчас дома и готовится к концерту. Когда Анни была младше, её мама работала учительницей музыки, но недавно стала играть в оркестре и всё чаще уезжала с ним на гастроли.
Конечно же, Анни восседала на горе подушек напротив Космоса. Этот компьютер был их верным другом и помощником и не раз выручал из беды. Правда, он не всегда работал безупречно: однажды, прокладывая Джорджу и Анни путь домой, Космос не справился в одиночку, и если бы не помощь другого суперкомпьютера, друзья остались бы на веки вечные в далёкой – совсем не Солнечной! – системе планет. А ещё раньше Космос чуть не взорвался от перегрузки, вытаскивая Эрика из чёрной дыры. Случались дни, когда этот компьютер вёл себя капризно и непредсказуемо…
И сегодня был как раз такой день.
Что такое суперкомпьютер?Что такое флопс?
Каждый год появляются всё более и более мощные компьютеры. Один из способов сравнить мощности двух компьютеров – проверить, сколько операций с плавающей запятой (floating point operations, сокращённо «флопс») они могут совершить за секунду.
Одна большая система
Какими бы мощными ни были сегодня процессоры, можно попробовать построить гораздо более мощный компьютер, соединив несколько процессоров вместе. Суперкомпьютер – это компьютер исключительной производительности, построенный путём объединения множества процессоров в одну большую систему. Каждый процессор выполняет свою часть работы параллельно с остальными.
Связать процессоры – значит объединить их в сеть; зачастую достаточно просто соединить компьютеры (даже на большом расстоянии) сетями, подобными телефонным, или через интернет.
Чрезвычайно параллельная задача
Для решения некоторых задач вычисления можно разбивать на части так, чтобы процессоры работали над своими «кусочками» независимо друг от друга. Такие задачи называют чрезвычайно параллельными (ещё говорят, что задачу можно «легко распараллелить»). В таких случаях сеть нужна только для того, чтобы раздать процессорам задания и в конце получить от них ответы.
Но недостаточно уметь решать такие задачи, чтобы называться суперкомпьютером, – ведь большинство интересных задач не являются чрезвычайно параллельными. Процессорам приходится обмениваться промежуточными данными; суперкомпьютер должен уметь одновременно решать и обычные задачи, и «распараллеленные» независимые задачки. Этим суперкомпьютер отличается и от обычных компьютеров, связанных в сеть, и от больших серверов.
Хороша ли сеть?
Чем качественнее сеть, тем производительнее параллельные вычисления. Качество сети определяется:
• пропускной способностью – количеством информации, которое можно передать за секунду (чем больше, тем лучше);
• задержкой – временем между отправкой сигнала и получением ответа (чем меньше, тем лучше).
Доступ к памяти
Суперкомпьютер можно получить, организовав процессоры одним из нескольких способов.
Системы с симметричной многопроцессорной обработкой (SMP – Symmetric Multiprocessor)
В этих системах процессоры единообразно подключаются к общей (разделяемой) памяти суперкомпьютера. Каждый процессор имеет доступ ко всей памяти. Сделать такую систему сложно и очень дорого, особенно если она большая.
Системы с неравномерным доступом к памяти (NUMA – Nonuniform Memory Access)
В таких системах производительность тем хуже, чем дальше процессор от памяти, которую он хочет прочитать или в которую ему нужно писать. Как и SMP, эти системы используют разделяемую (общую для всех процессоров) память, и программисту приходится заботиться о том, чтобы данные хранились как можно ближе к процессору, который их использует. Системы NUMA дешевле, чем SMP.
Интерконнект
Это специальная высококачественная сеть для соединения изолированных компьютеров (в такой сети их обычно называют узлами). Процессор в одном узле не видит памяти в других узлах, поскольку это суперкомпьютер не с общей, а с распределённой памятью. Программисту приходится добавлять в программу код для передачи данных между узлами. Суперкомпьютеры, в которых для узлов используются обычные компьютеры, называются кластерами.
Современные компьютерные системы
Зачастую современные компьютеры включают в себя элементы, которые раньше имелись только в суперкомпьютерах. Например, у одного процессора может быть несколько ядер, и каждое действует как отдельный процессор – это система SMP, где несколько ядер имеют непосредственный доступ к общей памяти. У более дорогих компьютеров есть несколько разъёмов для процессоров, каждый из которых – своего рода система
NUMA, где одному разъёму соответствует набор ядер и их память.
Графический процессор (GPU) для суперкомпьютеров
Это новшество по вкусу всем любителям компьютерных игр. Оно необычайно быстро «создаёт» пиксели для экрана во время игры. Благодаря своей архитектуре эти процессоры идеально подходят для некоторых видов задач в суперкомпьютерах.
Флопс, мегафлопс… экзафлопс!
1 мегафлопс = 1 миллион флопс.
1 гигафлопс = 1 миллиард флопс (1000 мегафлопс).
1 терафлопс = 1000 гигафлопс.
1 петафлопс = 1000 терафлопс.
1 экзафлопс = 1000 петафлопс.
Глядя на эту табличку, легко увидеть, как выросла производительность компьютеров в последние несколько десятилетий:
• 1998: компьютер с одним процессором способен достичь производительности в 500 мегафлопс.
• 2007: множество одиночных процессоров, которые могут «разогнаться» до 10 гигафлопс.
• 2013: есть компьютеры с двумя процессорами по восемь ядер, каждое из которых теоретически имеет производительность в 20 гигафлопс. Таким образом, максимальная производительность всей системы – 320 гигафлопс. По сути, это система NUMA: общая память, шестнадцать независимых ядер… Но сегодня никому и в голову не придёт называть это суперкомпьютером – разве что мы соединим в одну сеть несколько сотен таких машин.
• Существует список пятисот самых мощных суперкомпьютеров – Top500 (www.top500.org), который обновляется дважды в год. Сейчас, на момент написания книги, большинство машин из этого списка находятся на уровне нескольких сотен терафлопс.
Однако в первой строке списка -машина с 33862,7 терафлопс (33,8627 петафлопс). Это несравненно мощнее компьютеров конца XX века!