Речь идет о распределенных сетевых вычислениях. Зародившись в виде связей между отдельными организациями, содружество сетей превратилось в Internet, а паутина Web приучила всех к мысли, что файлы различных форматов одинаково доступны независимо от того, где они находятся территориально - в Сахаре или Антарктиде.

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

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

В будущем наверняка начнет развиваться направление, получившее излишне красивое, на мой взгляд, название "метакомпьютинг". Одними из первых с этой инициативой выступили Ларри Смарр, в начале 90-х занимавший пост директора американского Национального центра суперкомпьютерных приложений, и Чарльз Катлет. Данное ими определение: "Метакомпьютер - это сеть географически распредленных гетерогенных вычислительных ресурсов, объединенных программным обеспечением таким образом, что все эти ресурсы могут использоваться столь же легко, как и в одном ПК" - оказалось чрезвычайно удачным и может считаться классикой жанра. Дело, конечно, не в красивых словах - авторы метакомпьютинга предлагают вообще убрать сеть, сделав ее прозрачной для пользователей, и формулируют следующую конечную цель: "Пользователи вообще не будут знать, что они используют какой-то другой компьютер, кроме стоящего на их рабочем столе, но при этом получат реальную возможность дотянуться по транснациональным сетям до любых необходимых им вычислительных ресурсов". Для пользователей, программистов и приложений сети не существует, имеются только ресурсы - универсальные и специальные процессоры, неограниченная внешняя память, общая файловая система и устройства ввода/вывода.

Идея метакомпьютинга возникла достаточно давно, но исходила она не от ведущих компьютерных производителей, а из академических и университетских кругов и государственных структур. Сейчас во многих крупных университетских центрах Америки и Европы ведутся работы по созданию метакомпьютера. Часть этих разработок, которые находятся на разной стадии развития, постепенно становится коммерческими, например средства управления кластерами и платформы управления. Государственным организациям метакомпьютинг даст неограниченные вычислительные мощности, столь необходимые для работы систем, обеспечивающих национальную безопасность, моделирующих экологические задачи, природные катаклизмы, предсказывающие погоду. Гранты под подобные проекты выделяют такие солидные организации, как Национальный научный фонд, NASA, DARPA и Министерство энергетики США. Масштабы метакомпьютерной деятельности можно представить на примере, пожалуй, самого известного проекта - GUSTO. К началу 1998 года в него входило 17 узлов (США, Гавайи, Швеция, Германия), 330 компьютеров с 3600 процессорами, имеющих суммарную производительность 2 TFLOPS.

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

Первая область применения метакомпьютинга - запуск традиционных, но "жадных" к ресурсам программ и приложений на адекватных вычислительных мощностях. Уже первые попытки использования для этих целей традиционных сетевых технологий показали, что при отсутствии соответствующей инфраструктуры для реализации проектов требуются героические усилия разработчиков. Таков был, в частности, итог исследований, проводимых на известном стенде I-WAY. Требовалось решить не такую уж сложную задачу: всего лишь наладить обработку в реальном времени изображений, поступающих с метеорологических спутников. Передаваемые с орбиты данные направлялись в программу обнаружения облаков (она выполнялась на удаленном суперкомпьютере), а затем на графическую станцию для рендеринга.

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

Усилия многих исследователей в области метакомпьютинга направлены на то, чтобы доказать возможность эффективной работы параллельных приложений в условиях ненадежных коллективно используемых сетей. Корень зла, однако, все-таки не в сетях. Основной проблемой остается создание параллельных программ. С появлением таких инструментальных средств, как PVM, MPI, параллельных версий языков Cи и Фортран, ситуация улучшилась, тем не менее разработка и отладка программ с параллельными процессами все еще чрезвычайно затруднена. Это основное препятствие для расширения сферы применения метакомпьютерных сетевых вычислений.

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


Виктор Коваленко - сотрудник Института прикладной математики им. М. В. Келдыша РАH. С ним можно связаться по электронной почте kvn@keldysh.ru