Чаще всего при разговоре о высокопроизводительных параллельных вычислениях подразумевается, что для их выполнения нужны кластеры с большим числом узлов и процессорных ядер. Опыт компании RF Dynamics свидетельствует, что нередко можно обойтись и менее дорогостоящими решениями. Например, для гидродинамических расчетов в нефтегазовой отрасли неплохо подходят рабочие станции на новых процессорах Intel Xeon, причем достигается хорошая масштабируемость по производительности.

И это не теоретические выкладки, а базирующиеся на реальном опыте внедрения параллельных гидродинамических расчетов достаточно сложных моделей, сопровождаемых визуализацией практически в реальном времени, в компании «ВолгаУралНИПИгаз» (см. «Создание эффективной системы моделирования месторождений»). Уточнить подробности данного внедрения и обсудить тему в целом мы решили с Василием Шелковым, генеральным директором компании RF Dynamics.


Василий Шелков, генеральный директор RF Dynamics



— Пожалуйста, расскажите немного о себе, о компании Rock Flow Dynamics.

— Я окончил Факультет Общей и Прикладной Физики МФТИ, после 5-го курса уехал в аспирантуру в США и все годы до того, как мы основали компанию RF Dynamics, занимался наукой, физикой высоких энергий. Работал в разных лабораториях и университетах — в Техасе, в физической лаборатории Корнельского университета писал диссертацию, работал в Калифорнии, в Стэнфорде, в Беркли, в Нью-Йорке, в Брукхэвенской Национальной Лаборатории по программе Суперколлайдера в ЦЕРН. В общей сложности в Америке я провел 11 лет, и все мои работы были связаны с программированием, с анализом и обработкой больших объемов данных. Т.е. физика в проекции на высокопроизводительные вычисления. В общем, достаточно близко к тому, что мы делаем сейчас, но в несколько другом ракурсе. В конце концов, захотелось больше самостоятельности, более амбициозных задач и хотелось вернуться в Россию. Волею судеб я оказался в «ЮКОСе».

В то время, в Центре Анализа и Прогнозирования и работала часть людей, которые сейчас составляют ядро нашей компании. Они занимались решением задач гидродинамики, анализом, расчетами на компьютере виртуальных месторождений... Это гораздо дешевле и быстрее, чем бурить скважину, к тому же можно посчитать много вариантов. Основной причиной, почему вдруг нефтяная компания решила развивать непрофильный для себя проект разработки наукоемкого ПО, явилось то, что имеющееся на рынке известное ПО для подобных расчетов по ценовым показателям даже для такой большой компании оказалось слишком неподъемным, чтобы обеспечить им всех нуждающихся в моделировании сотрудников. Было решено оставить стандартное ПО для больших сложных моделей и разработать собственную систему для расчета маленьких простых моделей, которые тогда составляли основную массу в компании.

После «ЮКОСа» мы решили использовать наш опыт для создания принципиально нового продукта и попробовать запустить новый проект самостоятельно. Предпосылки для успеха были — задуманный проект при закладке предусматривал много нереализованных другими функциональных возможностей и идей. Сама концепция продукта предполагала высокую степень параллельности вычислений, большую интерактивность, расчеты серьезных объектов в реальном времени. Эти идеи оказались очень востребованы. Наши заказчики заинтересованы в том, чтобы ввести в мир моделирования своих сотрудников, которые знают, что они хотят сделать, но не знакомы с процессом моделирования, не проходили тренингов и т.п. В нашем случае все можно сделать, пользуясь мышкой и клавиатурой, не проходя многомесячные курсы обучения и не вдаваясь в детали заложенных в продукт алгоритмов.

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

К новой команде, появляющейся на рынке, всегда относятся поначалу скептически, особенно в области высокопроизводительных вычислений. Этот рынок, кстати, довольно консервативный, некоторые компании на нем представлены давно, а любой новый игрок вызывает множество сомнений. Считается, что подобные программы очень сложны, у новичков они протестированы недостаточно и где-то остаются ошибки; еще новичкам не верят, что они полностью все понимают, что в новых командах есть люди, которые могут все правильно реализовать. Доходит до смешного: некоторые западные специалисты в области моделирования месторождений открыто нам говорят, что рано мол еще России предлагать другим инновационное ПО, т.к. «мы (Россия), в этой области, только недавно с дерева слезли». А ведь в действительности-то все наоборот — значительное количество численных методов, активно использующихся в западных программных продуктах для моделирования месторождений, пришли именно из советской школы математики.

— Быть может, существующие продукты вполне устраивают потребителей?

— Компании обычно хотят получить новый продукт, который позволил бы им перевести работу на новый уровень. Сотрудники, работающие с месторождениями и вынужденные использовать Excel и бумагу, тоже хотят иметь дело с программами, в которых можно что-то серьезно моделировать. При этом ресурсы компаний ограничены, дать каждому качественный симулятор невозможно по затратам, ведь речь может идти о суммах в десятки миллионов долларов.

В случае с «ТНК-BP», «Газпромнефть», «ВолгоУралНИПИгаз» мы предоставили возможность еще раз посмотреть на привычные для них вещи и пересмотреть их в сторону более реалистичного моделирования. Софт, предназначенный для кластеров, очень дорог, поскольку кроме самой лицензии приходится доплачивать значительные суммы за каждое используемое ядро процессора, порядка 20-30 тыс. долларов. Получается, что с такой доплатой лицензия на программу со всеми графическими приложениями и т.п. при использовании на 8-ядерном сервере обходится чуть ли не в 400 тыс. Естественно, далеко не все могут столько вложить в оснащение рабочих мест, поэтому нередко покупаются лицензии для 1-2 ядер или вообще непараллельные версии программ. Это приводит к тому, что можно рассчитывать только маленькие модели. Инженеры не хотят, чтобы расчеты длились сутками, и стараются модели максимально упростить, в итоге теряется самое главное — реалистичность.

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

Получается, что связь между геологами и гидродинамиками, с точки зрения единства моделей, просто отсутствует. А тот софт, который мы делаем для многоядерных платформ, как раз и позволяет эту связь восстановить. Он дает возможность считать гидродинамику моделей в том виде, в котором они получены от геологов. В «ВолгоУралНИПИгаз», собственно, стали так делать благодаря нашему софту. Они начали работать на месторождениях «Оренбург Газпрома» и по другим контрактам фактически в той шкале, на тех моделях, на тех сетках, которые им дают геологи.

— А как вам удалось совместить возможности расчета по очень большим моделям с визуализацией практически в реальном времени и удобным пользовательским интерфейсом? При требованиях к вычислительным ресурсам всего лишь на уровне многоядерных рабочих станций?

— Прежде всего, команда с самого начала грамотно работала над архитектурой продукта. Ядро команды составляют выпускники Мехмата МГУ, их уровень таков, что такой коллектив было бы тяжело собрать в Штатах, например. Пришлось бы искать людей и собирать команду по крупицам, а так, чтобы в Кремниевой долине просто набрать 20 сотрудников такой квалификации было бы крайне сложно.

У нас всегда подразумевается, что все пишется параллельно. Если мы делаем новую функциональность, то с самого начала прорабатывается архитектура из предпосылки, что это будут параллельные расчеты. То ли мы обращаем матрицы многомиллионной размерности, то ли мы рассчитываем какой-то промежуточный элемент аналитики, который хотим визуализировать, то ли резервируем какие-то ресурсы на будущее и т.п. — все, что можно параллелизовать, сразу параллелизуется. Это изначально внедряется в дизайн программы. В дизайне подразумевается, что кроме твоего процесса будет еще тысяча процессов — всегда учитывается многопоточность. Концепции параллельных вычислений очень рано легли в наш софт и поэтому мы только один раз сделали глобальную его ревизию, когда применили новый графический интерфейс и библиотеки графики. А с тех пор умудряемся использовать преимущества С++, объектного дизайна, практически достраивая помодульно наш продукт, а не переписывая его время от времени с нуля. Такое было бы проблематично с фортрановским кодом, который в один прекрасный момент становится проще переписать, чем настроить.

В общем, правильная, современная архитектура, современный дизайн кода, упор на параллельность, что всегда часть процессов будет отсчитывать графику, часть процессов — математику... И в том, что это всегда нами подразумевалось, тоже большая заслуга сотрудничества с Intel. Если бы нам пять лет назад не сказали, что можно забыть про повышение частоты и считать, что с какого-то момента у нас будет не меньше 4 ядер, мы, возможно, по-другому бы строили проект и вообще не смогли бы прорваться на этот рынок. Что мы фактически делаем? Мы берем небольшую станцию, на 4 или 8 ядер (в следующем поколении может быть 32 ядра), и такая машина считает быстрее типичных кластеров с другим ПО.

— У работы с кластерным ПО, насколько я в курсе, есть и другие особенности...

— Да, во-первых, там нет никакой интерактивности. Во-вторых, кластеры очень быстро устаревают. Существующая система подразумевает, что вы получаете новую архитектуру, процессоры с другим количеством ножек, и через каждые 2 года приходится менять и память, и чипсет — все, одним словом. У нефтяных компаний приобретение кластера обычно занимает полгода-год, чтобы все согласовать и купить, а получается, что к моменту запуска он уже устаревает. Сделать его апгрейд, перейдя на новый процессор, удается только один раз (это как по модели tic-toc у Intel — когда каждые два года происходит смена архитектуры и технологической нормы, и эти процессы сдвинуты друг относительно друга на год, поэтому через год можно будет поставить процессоры новой архитектуры, а через два придется менять все). В случае с кластерами это приводит к тому, что не удается удерживаться на острие прогресса.

Если же вы используете рабочие станции, то это уже совсем другие деньги. Вам гораздо выгоднее, возможно, иметь с десяток 8- или 16-ядерных станций и позволить себе раз в 2 года их менять, платя по несколько тысяч долларов за каждую.

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

— То есть, если говорить о такой классификации параллельных систем: суперкомпьютерная установка (большой кластер), небольшой кластер, рабочая HPC-станция, то наиболее выгодными для решения определенного класса задач являются первые и последние?

— В принципе, да. В небольшом кластере уже потеряна прелесть настольной системы, но преимуществ мощного кластера еще нет. У нас есть решение, которое мы пытаемся внедрить. В нем на каждом узле будет идти параллельный расчет с общей памятью (на потоках, на тредах), а между узлами синхронизация расчетов будет выполняться через MPI. Такой гибридный вариант — кластерный/не кластерный. С нашей точки зрения, это позволит для расчетов моделей больших месторождений дополнительно вытянуть из существующего сегодня многоядерного железа ускорение с коэффициентом 4-6. То есть где-то в 5 раз увеличить отдачу от существующего кластера. Сейчас эта система находится в стадии тестирования.

Тем временем мы видим, что хорошо продаются настольные системы. Мы только что вернулись из компании, у которой стоят 8-ядерные компьютеры, купленные 2 года назад. Мы им сказали, что тогда еще не было эффективного распределения потоков данных по памяти, привезли и показали новую, не шумящую машину, у которой 6 ядер. В компании думали, что большой разницы между системами с 8 и 6 ядрами не будет, но запустили наш продукт, и выяснилось, что расчеты идут быстрее в 5 раз! Одна машина считает весь рабочий день, другая — за 40-50 минут справляется. Конечно, такое производит впечатление.

Возможность считать большие модели быстро как раз приводит к тому, что люди начинают усложнять модели. У них появляется бюджет времени, чтобы заставить модель просчитывать какие-то эффекты, которые раньше не считались. Какие эффекты мы предлагаем вставлять в реальные модели? Например, реалистично моделировать гидроразрыв пласта, обработку призабойной зоны. Можно уменьшать сетку, делать ее на геологической шкале. Загрублять сетку больше не нужно. Есть целый ряд задач, когда, используя лучшую производительность, удается повысить сложность модели, грубо говоря, на порядок. За счет этого качество моделирования, несомненно, улучшается. Когда работа выполняется гораздо качественнее, к ее результатам относятся все серьезнее.

Производительность очень важна. В конце концов, для того, чтобы модель настроить, чтобы данные, которые вы получаете по расчету, и реальные данные по истории месторождения совпадали. Это первый шаг, чтобы модель можно было использовать для прогнозов. Для такой адаптации модели типично необходимо от 50 до 300 расчетов, и каждый из них требует времени. Если вычисления ускоряются в 10 раз, то можно сделать в 10 раз больше расчетов, качественнее настроив модель.

— Какие задачи наиболее требовательны к производительности?

— К производительности чрезвычайно чувствительны такие задачи, как расчет газовых месторождений, где есть газоконденсат, который ведет себя очень капризно с точки зрения повышения и понижения давления. Он может выпадать, испаряться, засорять зону вокруг скважины. В таких случаях используется композиционное моделирование. Если нефть часто можно представить это один компонент, который имеет некоторые эффективные свойства (хотя в реальности это коктейль из углеводородов с разными свойствами), то для газа все сложнее, и композиционные расчеты требуют гораздо больше времени для расчета. Тут возможность быстрого расчета тоже позволяет уходить от грубых сеток к мелким, а все эффекты, связанные с фазовыми переходами и выпадением конденсата, как раз случаются вокруг скважины и нужна мелкая сетка или ее локальной измельчение.

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

Еще мы сейчас работаем над моделированием третичных методов извлечения нефти, так называемым «огненным заводнением» или «горением в пласте». Это когда в одну скважину закачивается воздух, а в другой появляется легкая нефть. Часть нефти сгорает, но появляющееся тепло вытапливает средние и тяжелые компоненты, они вытекают, и другая скважина их собирает. При этом все равно достигается экономический эффект, плюс появляется возможность добывать тяжелую нефть. В России много месторождений тяжелой нефти, которым все больше и больше будет уделяться внимания по мере того, как основные источники легкой нефти станут истощаться. Здесь тоже производительность становится вопросом №1. Мы смотрели на реальной модели, это наиболее сложные процессы, и если здесь появится возможность ускорить расчеты в 3-4 раза - это будет просто фантастика.

Тут срабатывает как раз идеология, продвигаемая разработчиками процессоров Intel, что быстродействие зависит от числа ядер и того, насколько хорошо распараллеливается ваша программа. Например, те же процессоры Nehalem EX, c частотами 2.4-2.6 ГГц. Большое количество ядер и эффективное взаимодействие по памяти между ними, которое вы с ними получаете, позволяет подняться на новый уровень производительности расчетов.

— Так может, будущее все же за кластерными системами?

— Мы пытаемся сейчас найти клиентов на масштабные кластерные решения, ведем их тестирование, это технологически интересная задача. Но проблема в том, что люди говорят: «Я хочу вот эту задачу, сегодня, сейчас ускорить в 5 раз, и у меня есть 4 тыс. долларов на железо». В таких случаях и выручает наш софт и наше сотрудничество с Intel. Мы говорим, что вот есть такое-то железо, которое мы прекрасно изучили и знаем, как его сконфигурировать для получения наибольшей отдачи, и наш софт на этой машине дает необходимое ускорение. За тот бюджет, который есть у заказчика. Однако без понимания того, что будет с компьютерами завтра, выйти на такой уровень разработок вряд ли возможно.

Возвращаясь к истории, замечу, что с самого начала мы делали ставку на интерактивность нашего продукта и небольшие модели. А потом поняли, что малые модели не будут востребованы, и переориентировались на «тяжелые» модели, постаравшись сохранить удобство и наглядность интерфейса. Пять лет назад, начиная заниматься большими расчетами, мы думали, что кластеры станут нашей специализацией, но, судя по российскому нефтяному рынку, видим, что с кластерами дело почти неподъемное. Реально хорошо сбалансированные, оптимальные по производительности параллельного софта кластерные системы — редкость. Многие просто не знают, как их лучше построить: вкладываются в одно, экономят на другом, теряя эффект от быстрых процессоров из-за узости сетевого интерфейса, например.

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

— Западные компании на высокоточное моделирование расходуют в разы больше средств. Это диктуется тем, что эра «простой» нефти постепенно заканчивается. Например, в Восточной Сибири геология гораздо сложнее, чем в Западной Сибири, очень много разломов, много солей, много эффектов, о которых раньше не приходилось заботиться, да и месторождения не настолько богатые. Это все приводит к тому, что для решения одной и той же задачи требуется значительно больше точности, необходимо рассчитать гораздо больше вариантов. В общем, либо сама задача становится сложнее, вы в нее закладываете более мелкие сетки, больше физики, либо надо делать многовариантные расчеты. Рассчитываются десятки геологических моделей, сотни гидродинамических, разные варианты тех вещей, которые вы не знаете...

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

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

Источник: IT Galaxy