Скачок в компьютерной мощности к эре экзафлопсных технологий дался не так-то легко. Более ранние петафлопсные машины держались на двух технологических волнах. Первой был закон Мура, названный в честь Гордона Мура, который в 1965 г. заметил, что каждые 18–24 месяца количество транзисторов в микропроцессоре удваивается, и эта тенденция сохранялась более трех десятилетий[157]. Второй стало масштабирование Деннарда (в честь Роберта Деннарда), которое относится к способности увеличивать тактовую частоту (обработку в секунду) при уменьшении размера процессора[158].
Однако всему хорошему приходит конец. Масштабирование Деннарда сломалось примерно в 2005 г. Закон Мура также застрял. Год или два спустя последствия для высокопроизводительных вычислений были раскрыты американской группой Exascale, возглавляемой Питером Когге из Университета Нотр-Дам. Группа поняла, что прогнозируемая потребность в электроэнергии превышает гигаватт, потребляя столько же, сколько 110 миллионов светодиодов, 1,3 миллиона лошадей, около миллиона домов или, если верить фильму «Назад в будущее», достаточно, чтобы отправить автомобиль DeLorean в межвременное путешествие.
Чтобы избежать перегрева, для достижения высокой производительности теперь нужно использовать широкий подход (больше процессоров), а не глубокий (процессоры побыстрее). В результате экзафлопсные машины становятся «шире, а не шустрее»[159]. Суперкомпьютер – это не просто большой или быстрый компьютер: он работает совершенно по-другому, используя параллельную обработку вместо последовательной пошаговой, как в старомодных настольных компьютерах. Поэтому нет смысла сравнивать: суперкомпьютер и компьютер – не то же самое, что автомобиль «Формулы-1» и VW Golf. Он больше похож на целый парк VW Golf.
Таким образом, недостатки в масштабировании Мура и Деннарда означали, что наиболее очевидным способом увеличения производительности было распределение нагрузки между огромным количеством ядер или процессоров. Но это привело к головной боли с «параллелизмом»: координацией вычислений между миллиардами вычислительных объектов, учитывая, что каждый из них выполняет вычисления со скоростью миллиарда циклов в секунду. Учитывая недостатки традиционного кодирования, которое было нелегко масштабировать, задача выглядела устрашающе.
Сухой и мрачный вывод группы заключался в том, что существуют «конкретные серьезные консенсусные проблемы, для решения которых не существует очевидного технологического моста развития»[160]. Отчасти их пессимизм оправдался: регулярная десятилетняя пауза между появлением гигафлопсов, мегафлопсов, терафлопсов и петафлопсов к экзашкале увеличилась.
Этот барьер помогло преодолеть множество разработок. По словам Рика Стивенса, заместителя директора лаборатории Аргоннской национальной лаборатории недалеко от Чикаго, где совместно с Intel и Cray была разработана экзафлопсная машина Aurora, некоторые достижения в области аппаратного обеспечения были обусловлены конкуренцией в сфере бытовой электроники[161]. Элементы чипов сократились до нескольких нанометров (миллиардных долей метра), поэтому их схемы могли работать быстрее и эффективнее (для сравнения, ширина атома водорода составляет 0,1 нм). Искусственный интеллект обещает еще более эффективный дизайн чипов: на площади от десятков до сотен квадратных миллиметров разработчикам чипов придется втиснуть тысячи компонентов, таких как логика, память и процессоры, а также километры сверхтонких проводов[162].
В результате использования более эффективных чипов энергопотребление Aurora упало с примерно 1 ГВт энергии до примерно 60 МВт, хотя этого все еще достаточно для снабжения 60 000 домохозяйств[163]. Чтобы охладить его горячее сердце, воду берут из близлежащего судоходного канала и пускают по трубам шириной 3 фута. Инфраструктура охлаждения превышает размер самого компьютера в три раза.
Для быстрого и эффективного моделирования на экзафлопсной машине требуется «совместное проектирование», то есть адаптация архитектуры машины к программному обеспечению, и наоборот. Например, наиболее важные для программы данные должны храниться рядом с алгоритмом их обработки, чтобы преодолеть «узкое место фон Неймана» – ограниченную скорость передачи данных между процессором и памятью. Эта задача усложнилась по мере того, как архитектура суперкомпьютеров превратилась из множества идентичных процессоров в структуру, основанную на узлах. Подобно матрешкам, узлы содержат ряд процессоров, внутри которых имеется множество «ядер». В свою очередь, эти ядра содержат центральные процессоры (ЦП). В самых быстрых машинах, доступных сегодня, узлы также содержат ускорители – в основном графические процессоры, пришедшие из игровой индустрии, – которые могут выполнять множество арифметических операций гораздо быстрее, чем обычные ядра, и затрачивать гораздо меньше энергии на флопс. Эта гетерогенная архитектура означает, что важное оборудование в этих гигантах включает в себя межсоединения, сверхбыстрые связи между ядрами, ускорителями и узлами, а также программные протоколы и стандарты, такие как MPI или интерфейс передачи сообщений, для перемещения огромных объемов данных.
Хотя параллельная обработка позволяет разделить вычислительную задачу на мелкие задания на нескольких процессорах, эти задания все равно должны выполняться пошагово. В результате мы хотим понять, что вирус делает в клетке за минуты или часы, а молекулярно-динамические симуляции обычно ограничены всего несколькими наносекундами, хотя, если их оставить на дни или месяцы, можно достичь микросекунд и даже миллисекунд. В то время как некоторые предсказывают наступление экзафлопсной эры «вычислительных микроскопов», которые могли бы (конечно, с учетом хаоса) сделать моделирование миллиардов атомов доступным для понимания деталей взаимодействия молекул, нам необходимо найти способы ускорить эти молекулярно-динамические симуляции, которые имеют временной шаг порядка фемтосекунды – квадриллионной (или миллионной миллиардной) секунды[164].
Чтобы устранить узкое место «параллельности в пространстве», некоторые ученые-компьютерщики используют так называемые методы «параллельности во времени», которые восходят к работе 1960-х гг. Юрга Нивергельта из Иллинойсского университета в Урбане-Шампейне[165]. В то время как традиционные параллельные вычисления состоят из множества операций, выполняемых одновременно, подход «параллельно во времени» предполагает одновременное выполнение нескольких временных шагов. Части решения, полученные позднее во времени, могут быть вычислены итерационным способом до того, как будет известно более раннее решение. Одним из примеров является «метод стрельбы», при котором за грубыми оценками, которые можно быстро вычислить, следуют итеративные поправки, подобно тому, как наводчик приближается к цели с каждым выстрелом, в зависимости от того, куда приземляется каждый последующий снаряд. Это лежит в основе одного из самых известных подходов, работающих параллельно во времени, называемого парареалистическим алгоритмом[166].
Распространение параллельных вычислений на время и пространство помогло укротить турбулентность, которую Ричард Фейнман назвал самой важной нерешенной проблемой классической физики[167]. Питер и его коллеги показали, как преобразовать странный аттрактор, с которым мы столкнулись в предыдущей главе, в нестабильный хаос турбулентности жидкости, используя метод «параллельно во времени», который устраняет и последовательное интегрирование на протяжении многих временных шагов, и ошибки, которые впервые допустил Лоренц[168].
Но турбулентность создает особые проблемы даже для этого метода. Если энергия в потоке высока, а жидкость недостаточно вязкая, чтобы ее рассеивать, движение переходит от упорядоченного (ламинарный поток) к хаотическому (турбулентный поток), создавая водовороты, которые постоянно распадаются на более мелкие вихри и водовороты и т. д. В идеале хотелось бы смоделировать турбулентное движение до мельчайших уровней в так называемом масштабе Колмогорова.
Однако, хотя параллельная обработка, кажется, предлагает способ сделать это, сложность этих вычислений зависит примерно от куба (третьей степени) числа Рейнольдса – отношения между силами инерции и вязкими силами в жидкости – и это число для турбулентного потока может быть порядка миллиона, что делает численное моделирование недоступным для большинства компьютеров, хотя некоторые петамасштабные машины (JUGENE в Германии, Intrepid и Ranger в США) добились прогресса. С появлением экзафлопсных вычислений бурные детали турбулентности станут понятнее.