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

СИЛЬНАЯ МАСШТАБИРУЕМОСТЬ МОДЕЛИ ОКЕАНА ПОД УПРАВЛЕНИЕМ CMF - ЗАВИСИМОСТЬ ВРЕМЕНИ ВЫПОЛНЕНИЯ НЕСКОЛЬКИХ ШАГОВ МОДЕЛИ В ЗАВИСИМОСТИ ОТ ЧИСЛА ЯДЕР СУПЕРКОПЬЮТЕРА

СИЛЬНАЯ МАСШТАБИРУЕМОСТЬ МОДЕЛИ ОКЕАНА ПОД УПРАВЛЕНИЕМ CMF - ЗАВИСИМОСТЬ ВРЕМЕНИ ВЫПОЛНЕНИЯ НЕСКОЛЬКИХ ШАГОВ МОДЕЛИ В ЗАВИСИМОСТИ ОТ ЧИСЛА ЯДЕР СУПЕРКОПЬЮТЕРА

Для облегчения совместного процесса разработки нами создан фреймворк CMF (Compact Modeling Framework), задача которого – отделение кода физических процедур (работа физиков) от сервисных и низкоуровневых действий модели, таких как MPI-коммуникации, работы с файловой системой, сбора диагностики и т.д. (работа программистов).

CMF предоставляет пользователю слоты для физического кода и доступ к некоторым полезным методам. При этом конкретная реализация многих процессов скрыта от пользователя и может меняться с появлением новых технологий. Фреймворк способен осуществлять препроцессинг модели, ее выполнение на суперкомпьютере (главная задача) и постпроцессинг/визуализацию. 

Создание совместной модели

Поддержка одной модели является важной, но, скорее, второстепенной задачей CMF. Сегодня в мире наблюдается тенденция к существенному усложнению моделей: отдельные разработки для океана, атмосферы, льда, почвы, и т.д. объединяются в совместные модели и становятся моделями земной системы.

Как объединить совершенно различный код разных научных групп? Как обеспечить связь компонентов в смысле обмена массивами физических величин (например, осадков от атмосферы ко льду или таяния из модели льда в океан)? Для решения этих задач был создан CMF 2.0, в который была введена поддержка произвольного числа моделей и внедрен новый сервисный компонент – каплер (англ. couple – объединять). Каплер представляет собой своего рода сервер, контролирующий общение компонентов между собой и работающий за них с файловой системой. Поскольку каплер поддерживает множество больших параллельных моделей и обеспечивает потоки данных между ними, он также должен быть полностью параллельным.

СЛЕВА - ОБЩИЙ ВИД КОМПЛЕКСА (ПРЕПРОЦЕССИНГОВАЯ, ВЫЧИСЛИТЕЛЬНАЯ И ПОСТРОЦЕССИНГОВАЯ СТАДИИ); СПРАВА - ОБЪЕДИНЕНИЕ ПАРАЛЛЕЛЬНЫМ КАПЛЕРОМ (ЗДЕСЬ С 4 ЯДРАМИ) НЕСКОЛЬКИХ МОДЕЛЕЙ В ЕДИНУЮ СИСТЕМУ

СЛЕВА - ОБЩИЙ ВИД КОМПЛЕКСА (ПРЕПРОЦЕССИНГОВАЯ, ВЫЧИСЛИТЕЛЬНАЯ И ПОСТРОЦЕССИНГОВАЯ СТАДИИ); СПРАВА - ОБЪЕДИНЕНИЕ ПАРАЛЛЕЛЬНЫМ КАПЛЕРОМ (ЗДЕСЬ С 4 ЯДРАМИ) НЕСКОЛЬКИХ МОДЕЛЕЙ В ЕДИНУЮ СИСТЕМУ

Дальнейшее развитие

Текущие разработки связаны с созданием CMF 3.0. В новой версии старая архитектура с центральным хабом-каплером заменена на сервис-ориентированную архитектуру, предназначенную для более гибкого развития сервисов и их логической изоляции (например, выделение системы ввода-вывода или ассимиляции как отдельного сервиса системы). Кроме того, CMF 3.0 поддерживает создание иерархических моделей на вложенных сетках (например, океан-море).