[Перевод] Как SpaceX использует GPU для обсчёта ракетных двигателей

image Илон Маск врывается в автомобильную и космическую индустрию с Tesla и SpaceX. Интересно, что первая полностью отказывается от двигателей внутреннего сгорания, в то время, как вторая наоборот, пытается изобрести новые технологии для сжигания топлива и осуществить пилотируемый полёт на Марс.На последней конференции GPU Technology Conference, организованной компанией Nvidia, мы узнали, что доставка группы людей на Марс и обратно — задача непростая. Одна из проблем такой миссии — необходимость в большом и эффективном ракетном двигателе, который сможет доставить много материала на орбиту, — так объяснил нам Адам Лихтл, директор исследовательской группы SpaceX. С командой из нескольких десятков программистов он пытается справиться со сложной задачей улучшить симуляцию сгорания внутри ракетного двигателя. Для укорачивания полётов к Марсу также нужен большой двигатель.«Одна из главных проблем — подверженность космонавтов воздействию радиации,- поясняет Лихтл. — Для полёта к марсу необходимо выждать нужное окно в соответствии с тем количеством энергии, которое может произвести ракета. Те, кто играл в Kerbal Space Program, знает, что для смены орбиты, к примеру, вокруг Земли, необходимо придать себе изменение скорости и сменить орбиту на ту, что пересекается с орбитой Марса. Нам нужны средства передвижения, дающие максимальное изменение скорости, чтобы путешествие вышло покороче. Второе препятствие, затрудняющее работу экспедиции на Марс, состоящей из людей, а не просто роботов — отсутствие инфраструктуры. Пионеры, пересекая новые земли, строят свои дома себе сами, и им необходимо добывать еду. Это довольно сложно сделать на Марсе.»

image

Вам не только нужно взять с собой кучу всего на Марс, чтобы поддерживать там колонию, но и как-то создать топливо на Марсе для возвращения на Землю. Всё это сказывается на разработке двигателя.

МКС весит 450 тонн и для её постройки понадобилось 36 полётов Шаттлов и пять запусков «Протонов». NASA Mars Design Reference Architecture хочет запустить 300 тонн материалов на орбиту и собрать там корабль для полёта на Марс. Это желательно сделать тремя полётами по 100 тонн. Постройка и заправка корабля на орбите Земли — сравнительно простое дело, но ракета должна уметь работать на метане, поскольку его можно синтезировать из воды Марса и двуокиси углерода из атмосферы Марса. Текущие двигатели Merlin 1D проекта SpaceX работают на керосине, у которого больше плотность и тяга. Он производится дистилляцией нефти.

И будто этих проблем мало, добавляется ещё одна. Вычислительная гидродинамика (ВГ) [computational fluid dynamics, CFD], программа для симуляции движения жидкости и газов и их горения внутри двигателей, плохо подходит для симуляции работы ракет.

«Метан — довольно простой углеводород, хорошо подходящий в качестве топлива,- говорит Лихтл. — Труность в разработке двигателя, который эффективно на нём работает. Но ВГ для ракетных двигателей чрезвычайно сложна».

SpaceX сотрудничает с различными институтами и Сандийскими национальными лабораториями в разработке собственного ПО для ВГ, которое позволит в будущем создавать улучшенные версии двигателей Merlin, подходящие для полёта на Марс и способные работать на метане.

Лихтл — хороший выбор главы разработки ракетных двигателей (по-моему, так это вообще работа мечты). В качестве дипломной работы в университете Карнеги Мелон он разработал симуляторы для физики высоких энергий, а затем работал в нац. лаборатории Брукхэвена по этой же тематике. Затем работал аналитиком и занимался стратегическим планированием в Морган Стенли, а потом в другой финансовой компании. Лихтл вошёл в команду SpaceX как главный инженер по двигателям два года назад, и поднялся до главы отдела разработки двигателей для полёта на Марс.

Стивен Джонс, главный разработчик ПО в SpaceX, работавший ранее инженером в Nvidia, ведёт проект по разработке собственного ПО для ВГ. Имени у программы пока нет, и техники, использующиеся в SpaceX, можно применять для улучшения всякого рода двигателей сгорания — даже автомобильных.

Существующее ПО для ВГ не приспособлено для обсчёта ракетНа фабрике в Техасе SpaceX пробует менять различные инжекторы и другие параметры, чтобы выжать наибольшую мощность из двигателей, и тестирует их каждый день. Тесты дорогие, и даже если вы понаставите датчиков по всей поверхности двигателя, вы всё равно не сможете узнать, что происходит внутри. Гораздо лучше симулировать все компоненты двигателя и поведение топлива, и свести набор вариантов установки инжекторов к минимуму, после чего уже строить реальные двигатель и тестировать несколько наиболее оптимальных вариантов.«Ещё одно свойство двигателей, усвоенное нами — нестабильность горения в результате распространяющихся волн давления и выхода химической энергии. Это всегда затрудняло разработку ракетных двигателей. Это проклятие индустрии. Двигатель начинает трястись, и либо разваливается, или просто трясётся так сильно, что никакую полезную нагрузку на него не установишь».

Эффективность автомобильных двигателей и турбин пытались повышать с помощью расчётов ВГ. Из-за их небольшого размера делать это гораздо проще, чем для больших ракетных двигателей. Поэтому нельзя просто взять ПО и масштабировать его.

На молекулярном уровне реакции в ракетном топливе происходят примерно за 10–9 — 10–11 секунд, а перенос тепла через адвекцию происходит на временных промежутках порядка 10–6 — 10–7 сек. Акустические вибрации в камере сгорания происходят на временных промежутках порядка 10–3 — 10–4 сек. Это слишком большая шкала для расчёта в ВГ-симуляции.

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

«Если начать делить сетку для расчётов ВГ на степени двойки, то необходимо будет поделить её около 20 раз, чтобы вместить такую шкалу длин,- говорит Лихт. Если попытаться однородно распределить решётку по всей камере сгорания, вам необходимо будет обрабатывать йоттабайты (1024) данных. Это нереально».

В связи с этим разработчики ракет моделируют происходящее либо с грубым приближением и множеством характеристик, либо более подробно, но на меньшем масштабе.

«Почему бы не сделать это одновременно? В турбулентности интересно то, что, несмотря на большой разброс масштабов, плотность потока низкая. Вам не нужно просчитывать всё до микронов в каждой точке. По своей природе она фрактальна. И фрактальность позволяет нам концентрировать вычислительные мощности там, где они нужнее. Это что-то вроде навороченного алгоритма сжатия».

Нужно только провести все расчёты на сжатых фрактальных данных без необходимости разжимать их. Для этого инженеры придумали технику под названием локальная фрактальная компрессия микроволн (wavelets local fractal compression). Для симуляций используется адаптивная решётка с разными разрешениями в разных местах. Обычно такие методики предполагают заранее заданные параметры решётки, но у SpaceX получилось сделать симуляцию с динамически адаптирующимися параметрами.

Для демонстрации ВГ, Джонс показал симуляцию топлива и окислителя, которые взрываются внутри коробки, и расчёт распространения ударных волн, которые отражаются и перемещаются внутри жидкости, приводя к огромному количеству фрактальных турбулентностей. (по ссылке — видео, симуляция начинается с 36 мин). В симуляции рассчитывается изменение плотности газов с шагом в несколько миллисекунд.

image

«Если бы вы сделали эти расчёты обычным методом по всей решётке, вам надо было бы обсчитать 300 миллионов узлов,- говорит Джонс. — А мы сделали это при помощи одного GPU, потому что мы рассчитываем параметры только в тех местах, где это необходимо, и алгоритм сам знает, где именно надо вести расчёт».

Хотя конкретный GPU не был назван, вероятно, это был Tesla GPU сопроцессор класса «Кеплер», и по-видимому, он использовал возможности параллельных вычислений для обсчёта решётки.

Вот ещё одна симуляция на одном GPU, показывающая возгорание газа и распределение температур (на видео с 37:45), где газ взрывается и отражается от стенок:

image

Жёлтые области — наиболее горячие. Джонс говорит, что можно сделать увеличение картинки в 60000 раз и там всё равно будут различимы внутренние структуры.

Лихтл говорит, что подобные техники пытались использовать раньше, и эти симуляции основаны на работах Джонатана Ригеля, профессора из Айовского университета.

«Однако без GPU и без нашей архитектуры даже простейшие симуляции приходилось бы обсчитывать на тысячах процессоров в течение месяцев. GPU кардинально ускоряет процесс. Хорошо, что в SpaceX нам разрешили начать с нуля в изготовлении ВГ. Зачем? Затем, что если вы немного ошибаетесь в классической версии симулятора ВГ, обычно это сходит вам с рук. А при симуляции сгорания, если вы где-то ошиблись, все процессы начинают идти по-другому».

Например, небольшая ошибка в температуре газа ведёт к большой погрешности в оценке его кинетической энергии, потому что их связывает экспоненциальная зависимость.

Ещё одна приятная особенность их ПО вкупе с GPU — они хорошо обсчитывают химические кинетические модели, описывающие двунаправленные химические реакции, происходящие при встрече топлива с окислителем. Сжигание водорода с кислородом — не простая реакция, приводящая появлению двух молекул воды из двух молекул водорода и одной — кислорода. Вам придётся просчитывать 23 возможные реакции и 11 промежуточных, чтобы обсчитать все возможные исходы. При сжигании метана с кислородом появляются 53 промежуточных реакций и 325 вариантов окончательных.

«Это вам не фигушки воробьям показывать,- говорит Лихтл. — Невозможно переоценить пользу параллельной архитектуры. Уменьшая количество необходимых точек сетки для расчёта, можно перебрасывать ценные вычислительные ресурсы на что-то более важное, например, на просчёт химических реакций».

Именно этим и занимается ПО от SpaceX, просчитывая химические реакции и турбулентность топлива в камере сгорания и на выходе из сопла (на видео с 43 минуты):

image

В данном случае показаны акустические свойства горения, включая диск Маха и кольца Маха, все полученные из математической модели, и довольно неплохо имитирующие реальное горение, показанное на фото слева верху. На выходе из сопла газы прозрачны, а скорость их превышает скорость звука. Сталкиваясь с ударной волной, они замедляются и сжимаются, становясь белыми.

Дальнейшая разработка софта предполагает масштабирование на множество GPU, работающих в кластерах.

«Сейчас код работает на одной машине. В ближайшее время мы займёмся распараллеливанием»,- говорит Лихтл.

Ждать, пока Nvidia доделает свой NVLink, нет необходимости. Сейчас они могут делать кластеры на основе шины PCI-Express. Также рассматриваются возможности использования MPI-протокола, когда разные сервера будут параллельно работать, обсчитывая данные для ВГ.

Промежуточным решением в ожидании NVLink может стать портирование софта на кластерах из процессоров Power8 от IBM, и использование сетевого интерфейса InfiniBand, который работает с процессорами через IBM’овский Coherent Accelerator Processor Interface, или CAPI. Эту архитектуру использует Министерство энергетики США в своих крупнейших суперкомпьютерах Summit и Sierra, выход которых намечен на 2017 год. Кроме того, существует разработка от Mellanox Technologies, сетевой интерфейс ConnectX-4, позволяющий работать с Power8 через CAPI на скоростях до 100 Гб/с. Существует несколько компаний, делающих систему OpenPower, с которыми SpaceX также сможет сотрудничать, если решит идти по этому пути.

Главное, что Лихтл хочет приобрести сервера со множеством GPU. Что не может не радовать компанию Nvidia.

© Habrahabr.ru