Вопросы создания национальных и транснациональных высокопроизводительных телекоммуникационных и вычислительных инфраструктур занимают одно из приоритетных мест в государственной политике ведущих стран и в деятельности межгосударственных организаций [1, 2]. В США и Канаде, развитых странах Европы, Японии и Китае работы на этих направлениях ведутся в рамках государственных и международных программ. США рассматривают успехи в области создания сверхмощных комплексов и перспективы их применения как основу своего стратегического превосходства. Как следствие, суммарные затраты на НИОКР в этой области измеряются миллиардами, а деятельность в целом координируется в рамках так называемой Стратегической технологической инициативы. Аналогичный подход, с некоторым отставанием по времени, но с ориентацией на кооперацию в рамках международных программ, просматривается в странах Евроcоюза. Авторы делятся своими взглядами на проблемы, связанные с внедрением метакомпьютерного подхода к решению новых задач, сама постановка которых стала возможной благодаря развитию Internet.

Доминирующими направлениями в создании телекоммуникационных и вычислительных инфраструктур высокой производительности стали исследование, разработка и внедрение систем, основу которых составляют:

  • многопроцессорные массово-параллельные комплексы, объединенные высокоскоростной внутренней сетью (в том числе, высокопроизводительные вычислительные кластеры и суперкомпьютеры);
  • сетевая инфраструктура общего пользования, которую представляют Internet и сети нового поколения.

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

Обсуждаемый в этой статье инструментарий GRACE (www.cluster.msu.ru) разрабатывался и сейчас апробируется на базе традиционной кластерной архитектуры [5]. Авторы рассматривают возможность использования этого подхода к решению задач нового класса.

От суперкомпьютинга к метакомпьютингу

Идея метакомпьютинга стала активно обсуждаться в начале 90-х с появлением высокоскоростной сетевой инфраструктуры и началом проектирования и развертывания первой сверхскоростной опорной магистрали vBNS сети американского Национального научного фонда. Ее суть в самом общем изложении состоит в объединении ресурсов сети для решения отдельной задачи. Высокая степень масштабируемости позволяет варьировать задачу и подходы к ее реализации. Если в качестве цели рассматривается задача ведомственного или корпоративного масштаба, то для ее решения достаточно задействовать вычислительные ресурсы локальной или корпоративной сети. Однако задача уже по своей постановке может требовать исключительно больших ресурсов, которыми не располагает ни одна корпоративная сеть.

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

Однако в силу масштабности задач, которые необходимо решить для построения таких механизмов, простая по своей постановке идея метакомпьютинга стала обретать реальные черты только в последние пять-семь лет. Причин тому несколько.

  1. Успехи в развитии высокоскоростной сетевой инфраструктуры на основе волоконно-оптических линий связи, которые позволяют реализовать эффективную транспортную среду для передачи информации разной природы (данные, аудио, видео) в одном потоке.
  2. Совершенствование высокопроизводительных кластеров, суперкомпьютеров с массово-параллельной архитектурой и распределенной разделяемой памятью, поддерживающего их программного обеспечения.
  3. Появление с активным внедрением сетевых технологий во все сферы человеческой деятельности, беспрецедентным ростом Internet приложений, объективно связанных с необходимостью систематизации и поиска, обработки и манипулирования большими объемами динамично меняющейся, распределенной по Сети информации.

Проекты, в которых в той или иной степени реализуются метакомпьютерные подходы, охватывают сегодня широкий класс проблем: от исследовательских задач переборно-поискового характера (www.distributed.net; www.mersenne.org; www.setiathome.ssl.berkeley.edu), рекламно-маркетинговых задач (www.cerentis.com) до организации среды распределенных вычислений в Internet, включающей вычислительные комплексы, экспериментальные установки и системы визуализации (проект создания среды GRID, www.globus.org) и объединения ресурсов суперкомпьютерных центров (www.ccs.ornl.gov/MCP/; legion.virginia.edu). У каждой из задач своя специфика. Одни (например, переборно-поисковые) не предъявляют жестких требований к дисциплине взаимодействия вычислительных узлов и уже в ближайшее время могут быть доведены до практического применения. Другие ориентированы на активное взаимодействие узлов, причем с разной архитектурой и производительностью, на использование распределенной разделяемой памяти. Суммарные ресурсы, которые уже сегодня используются для решения подобных задач, превосходят мощности самых производительных суперкомпьютерных систем. Так, суммарная производительность компьютеров, вовлеченных в проект SETI@home (поиск внеземных цивилизаций с помощью распределенной обработки данных с радиотелескопа, setiafhome.ssl.berkely.edu), оценивается в 20 TFLOPS.

Отмечая широкий спектр задач, решение которых связывается с использованием метакомпьютерных подходов, остановимся на тех, что продиктованы потребностями Internet.

Метакомпьютинг и Сеть

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

Остановимся на общих подходах к разработке систем, обеспечивающих решение крупномасштабных задач с использованием инфраструктуры Internet на основе ее информационных ресурсов. Такие подходы должны учитывать обстоятельства, привнесенные Internet, как новым по сравнению с ранее существующей сетевой средой явлением. Главные из них:

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

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

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

Портал — способ интеграции приложений в Internet

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

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

Анализируя структурные свойства информации, доступной в сетях на базе Internet-технологий, следует отметить наличие как строго структурированных данных (базы на основе традиционных СУБД), не менее значительного, очень быстро растущего сегмента, содержащего квазиструктурированные данные (Web-сайты), так и пока незначительного, но быстро прогрессирующего и очень перспективного сегмента неструктурированной мультимедиа-информации. К обработке квазиструктурированных данных сводятся проблемы интеграции данных со строгой, но различной структурой, хранящихся в традиционных СУБД. Перспективные информационные модели связаны с подходами, основанными на механизмах объединения подобных разной структуры и приложений, содержащих подобные данные.

Таким образом, одной из важнейших для разработчиков информационных систем и контент-провайдеров выступает сегодня проблема управления квазиструктурированными данными: навигация и систематизация, поиск и модификация, поддержка целостности и безопасность. Известны разные подходы к решению таких задач [3]. Остановимся на некоторых особенностях подходов к описанию структур данных.

Один из перспективных методов описания модели квазиструктурированных данных основан на использовании стека XML. Среди различных сценариев его применения [4]: запросы и модификация данных; интерфейс к традиционным (строго структурированным) базам данных; формат представления данных или метаданных. Ключевой в этом перечне и одновременно наименее отработанной является так называемая манипуляционная составляющая модели данных, включающая механизмы навигации (в условиях апостериорной схемы), организации доступа к данным, чтения и, если необходимо, их модификации. Для этого необходимы:

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

Для эффективной навигации и анализа структур XML-данных механизмы и программные средства их реализации должны учитывать древовидный или графовый (обычно ориентированный граф с именованными ребрами) характер структур (схем), которыми лучше всего моделируются XML-базы данных. Представляется, что при выборе механизмов декларативных языков запросов к таким базам данных целесообразно ориентироваться на подходы, основанные на функциональном программировании [5]. Программа обработки запросов, реализованная на функциональном языке, способна обеспечить суперпозицию функций (включая рекурсивные, произвольной глубины и прозрачность по ссылкам), отражающую сложную структуру данных, приложений и служб, оперативно взаимодействующих между собой.

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

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

Система GRACE

Рассмотрим систему GRACE (Graph Reduction Approach for Cluster Environment), разрабатываемую в Центре телекоммуникаций и технологий Интернет Московского государственного университета [5]. Ряд идей, механизмов и инструментов, разрабатываемых в рамках GRACE, может использоваться для создания приложений метакомпьютинга.

GRACE появилась как результат разработки методов гибридизации функциональной модели вычислений и современных кластерных технологий. Исторически она является наследницей разработанной в ИПС РАН Т-системы (www.botik.ru/~t-system), и служит средством динамического распараллеливания программ, написанных на императивных языках, являющихся расширениями привычных Cи, Си++, Фортрана. GRACE базируется на параллельной редукции графов [6], одном из самых эффективных принципов реализации параллельных функционально-потоковых вычислительных схем.

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

Рассмотрим некоторые аспекты GRACE, которые делают эту систему интересной для реализации метакомпьютерных механизмов.

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

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

Сетевые протоколы. Внутренние принципы взаимодействия узлов базируются на стандартах MPI/IMPI, позволяющих организовать эффективный обмен данными через сеть и реализованных многими производителями в высокоскоростных сетях SCI, Myrinet и т.д. Однако предпосылки для расширений и иных сетевых протоколов остаются. В частности, для организации динамической реконфигурации вычислительного поля необходима как живучесть самого протокола взаимодействия, так и возможность распознать выход из строя отдельных узлов. В настоящий момент этот вопрос активно прорабатывается специалистами по параллельным вычислениям. Так, последняя версия LAM (Local Area Multicomputer), реализация MPI для протокола TCP/IP, поддерживает стандарт интерфейса IMPI, что позволяет эффективно объединять сильносвязанные кластеры по глобальным сетям, а также предусматривает несколько расширений, служащих для динамического изменения конфигурации кластера и получения уведомлений об отказах узлов.

Преобразование данных. В GRACE выделена абстракция «вычисление», обозначающая самодостаточную, готовую к исполнению сущность. «Вычисления» реализуются как активные сообщения и сродни активным агентам (это понятие известно в распределенных вычислениях). Активные сообщения служат хорошей основой для организации обмена между компьютерами, поскольку их структуры данных генерируются компилятором. Это позволяет зачастую все необходимые сведения о вычислении (функцию и аргументы) передать на другой компьютер одним сообщением, и также одним сообщением получить результат. Такого рода взаимодействия в GRACE между узлами с одинаковой архитектурой происходят практически без лишнего копирования данных, поскольку структура, отражающая пересылаемое вычисление переводится в транспортную форму путем модификации в ней нескольких полей (например, преобразования адресов в относительные смещения). Разумеется, такая схема работоспособна лишь в однородных сетях.

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

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

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

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

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

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

  1. Инициатор транзакции собирает информацию о готовности всех объектов выполнить те действия по модификации их локальных данных, которые требуются в данной транзакции. Это обеспечивается вызовом функции подготовки к фиксации транзакции. Каждый объект в распределенной системе на этой стадии должен убедиться в отсутствии конфликтов на своей стороне и, в случае успеха, записать действия по модификации данных в надежную память.
  2. Каждый объект вызывает функцию, возвращающую признак разрешения фиксации транзакции, передавая ей в качестве аргумента признак своей готовности. Эта функция обрабатывается инициатором, и, в случае, если все объекты готовы к фиксации, записывает разрешение на фиксацию в надежную память, а также возвращает это разрешение всем ожидающим его объектам.

Как нетрудно заметить, в предложенной схеме с результатами чистых функций ассоциируется выполнение тех или иных сторонних действий по модификации данных. Это довольно известный прием, позволяющий включить в функциональную модель так называемые сторонние эффекты. В последние годы теория функционального программирования обогатилась такими понятиями, как монадические операции и монотонные объекты (www.dcs.gla.ac.uk), которые позволяют включить в функциональную модель многие алгоритмические схемы со сторонними эффектами (изменение внешних данных). Однако подобные расширения следует использовать с осторожностью: ответственность за соблюдение функциональной семантики при этом ложится на программиста.

Заключение

Приведенный перечень задач и подходов к их решению далеко не полон. Создание крупномасштабных распределенных комплексов на основе мониторинга и управления ресурсами является очень важной проблемой, решение которой в значительной степени опирается на механизмы метакомпьютинга. Опыт работ над их созданием показывает, что высокопроизводительные кластеры являются прекрасной аппаратной платформой для подобных систем. Автоматическое динамическое распараллеливание программ, реализующих сложные запросы на обработку разноструктурированных распределенных данных вместе с поддержкой отказоустойчивости и кэширования, а также рядом других преимуществ, которые обеспечиваются системой GRACE, создают условия для построения высокопроизводительных систем на базе глобальных и локальных вычислительных сетей. Такие работы проводятся сейчас в рамках открытого исследовательского проекта, в котором наряду с МГУ представлены группы из других вузов и научных центров РАН. Ученые и технические специалисты, аспиранты и студенты, заинтересованные в использовании и развитии средств GRACE, могут принять участие в этих работах.

Литература

[1] Васенин В. Internet: от настоящего к будущему. «Открытые системы», 2000, № 12

[2] Васенин В.А. Высокопроизводительные научно-образовательные сети России. Настоящее и будущее. — М.: Изд-во МГУ, 1999, 32 с.

[3] Гринев М. Системы управления полуструктурированными данными. «Открытые системы», 2000, № 5

[4] Гринев М, Кузнецов С. XML модели данных, языки запросов к XML базам данных и представление метаданных. Вторая всероссийская молодежная школа «Суперкомпьютерные вычисления — информационные технологии в физических и химических исследованиях». Сборник лекций, Черноголовка, 2000

[5] Абрамов С.М., Васенин В.А., Мамчиц Е.Е., Роганов В.А., Слепухин А.Ф. Динамическое распараллеливание программ на базе параллельной редукции графов. Архитектура программного обеспечения новой версии Т-системы. «Высокопроизводительные вычисления и их приложения». Труды Всероссийской научной конференции, Черноголовка, 2000

[6] Филд A., Харрисон П. Функциональное программирование. М.: Мир, 1991, 637 с.

Валерий Васенин (vasenin@msu.ru), Владимир Роганов (var@msu.ru) — сотрудники Центра телекоммуникаций и технологий Internet МГУ им. М.В. Ломоносова