В результате использования более эффективных чипов энергопотребление Aurora упало с примерно 1 ГВт энергии до примерно 60 МВт, хотя этого все еще достаточно для снабжения 60 000 домохозяйств[163]. Чтобы охладить его горячее сердце, воду берут из близлежащего судоходного канала и пускают по трубам шириной 3 фута. Инфраструктура охлаждения превышает размер самого компьютера в три раза.
Для быстрого и эффективного моделирования на экзафлопсной машине требуется «совместное проектирование», то есть адаптация архитектуры машины к программному обеспечению, и наоборот. Например, наиболее важные для программы данные должны храниться рядом с алгоритмом их обработки, чтобы преодолеть «узкое место фон Неймана» – ограниченную скорость передачи данных между процессором и памятью. Эта задача усложнилась по мере того, как архитектура суперкомпьютеров превратилась из множества идентичных процессоров в структуру, основанную на узлах. Подобно матрешкам, узлы содержат ряд процессоров, внутри которых имеется множество «ядер». В свою очередь, эти ядра содержат центральные процессоры (ЦП). В самых быстрых машинах, доступных сегодня, узлы также содержат ускорители – в основном графические процессоры, пришедшие из игровой индустрии, – которые могут выполнять множество арифметических операций гораздо быстрее, чем обычные ядра, и затрачивать гораздо меньше энергии на флопс. Эта гетерогенная архитектура означает, что важное оборудование в этих гигантах включает в себя межсоединения, сверхбыстрые связи между ядрами, ускорителями и узлами, а также программные протоколы и стандарты, такие как MPI или интерфейс передачи сообщений, для перемещения огромных объемов данных.
Хотя параллельная обработка позволяет разделить вычислительную задачу на мелкие задания на нескольких процессорах, эти задания все равно должны выполняться пошагово. В результате мы хотим понять, что вирус делает в клетке за минуты или часы, а молекулярно-динамические симуляции обычно ограничены всего несколькими наносекундами, хотя, если их оставить на дни или месяцы, можно достичь микросекунд и даже миллисекунд. В то время как некоторые предсказывают наступление экзафлопсной эры «вычислительных микроскопов», которые могли бы (конечно, с учетом хаоса) сделать моделирование миллиардов атомов доступным для понимания деталей взаимодействия молекул, нам необходимо найти способы ускорить эти молекулярно-динамические симуляции, которые имеют временной шаг порядка фемтосекунды – квадриллионной (или миллионной миллиардной) секунды[164].
Чтобы устранить узкое место «параллельности в пространстве», некоторые ученые-компьютерщики используют так называемые методы «параллельности во времени», которые восходят к работе 1960-х гг. Юрга Нивергельта из Иллинойсского университета в Урбане-Шампейне[165]. В то время как традиционные параллельные вычисления состоят из множества операций, выполняемых одновременно, подход «параллельно во времени» предполагает одновременное выполнение нескольких временных шагов. Части решения, полученные позднее во времени, могут быть вычислены итерационным способом до того, как будет известно более раннее решение. Одним из примеров является «метод стрельбы», при котором за грубыми оценками, которые можно быстро вычислить, следуют итеративные поправки, подобно тому, как наводчик приближается к цели с каждым выстрелом, в зависимости от того, куда приземляется каждый последующий снаряд. Это лежит в основе одного из самых известных подходов, работающих параллельно во времени, называемого парареалистическим алгоритмом[166].
Распространение параллельных вычислений на время и пространство помогло укротить турбулентность, которую Ричард Фейнман назвал самой важной нерешенной проблемой классической физики[167]. Питер и его коллеги показали, как преобразовать странный аттрактор, с которым мы столкнулись в предыдущей главе, в нестабильный хаос турбулентности жидкости, используя метод «параллельно во времени», который устраняет и последовательное интегрирование на протяжении многих временных шагов, и ошибки, которые впервые допустил Лоренц[168].
Но турбулентность создает особые проблемы даже для этого метода. Если энергия в потоке высока, а жидкость недостаточно вязкая, чтобы ее рассеивать, движение переходит от упорядоченного (ламинарный поток) к хаотическому (турбулентный поток), создавая водовороты, которые постоянно распадаются на более мелкие вихри и водовороты и т. д. В идеале хотелось бы смоделировать турбулентное движение до мельчайших уровней в так называемом масштабе Колмогорова.