Основы многопоточного и распределенного программирования

       

Инструментальные средства параллельного программирования


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

В этом разделе описаны два дополнительных вида программного инструментария: для из­мерения и визуализации производительности приложений и для создания географически распределенных метавычислений. В последнем разделе представлен учебный пример по ме-такомпьютерной инфраструктуре Globus — одному из самых новых и амбициозных наборов инструментальных средств. В конце главы в исторической справке приведены ссылки на бо­лее подробную информацию по всем видам инструментов.

12.4.1. Измерение и визуализация производительности

Цель параллельных вычислений — решить задачу быстрее. Общее время, затраченное на вычисления, подсчитать легко. Намного труднее определить, где именно тратится время на вычисления, и, следовательно, определить узкие места. Решать проблемы такого рода помо­гает инструментарий для визуализации и измерения производительности.

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

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

Часть 3. Синхронное параллельное программирование

выполнения. Чтобы использовать Paradyn, разработчику приложения достаточно скомпоновать свою программу с библиотекой Paradyn. При запуске программы система Paradyn начинает поиск таких узких мест на высоком уровне, как чрезмерная блокировка при синхронизации, задержки в работе с памятью или при вводе-выводе. Обнаружив проблемы, Paradyn автоматически вставляет дополнительные средства, чтобы найти причины проблемы (вставка производится непосредст­венно в машинную программу). Paradyn представляет результаты пользователю в виде "консультации по производительности", в которой пытается ответить на три следующих вопро­са. Почему программа выполняется медленно? Где именно в программе есть проблемы с произ­водительностью? При каких условиях проблема возникает? Пользователь может сам искать от­веты на эти вопросы или позволить Paradyn провести полное автоматическое исследование.

И в Pablo, и в Paradyn используется графика, позволяющая разработчику делать видимы­ми аспекты производительности при выполнении программы. Графические пакеты исполь­зуются во многих приложениях, что позволяет программистам "увидеть" результаты по ходу вычислений. Например, при имитации движения п тел можно отображать на экране переме­щение тел или при моделировании потока жидкости использовать линии и цвета, чтобы ви­деть структуру и скорость потоков.


Еще один класс инструментов визуализации идет дальше и позволяет программисту управлять приложением, изменяя переменные программы по мере выполнения вычислений, и влиять на его дальнейшее поведение. Autopilot — пример недавно разработанного инструментария для управления вычислениями. Данные о производительно­сти в реальном времени, которые дает Autopilot, используются в связанной с ним системе Virtue, реализующей среду погружения (виртуальную реальность). Autopilot и Virtue реализо­ваны на основе частей набора инструментов Pablo. Они также используют систему Globus (описанную далее) для широкомасштабного взаимодействия.

12.4.2. Метакомпьютеры и метавычисления

Большинство параллельных вычислений выполняются на отдельных машинах с мульти­процессором или в группе машин, объединенных в локальную сеть. В идеале процессоры не выполняют другие приложения, и сеть изолирована от другой нагрузки. В локальных вычис­лительных сетях многие машины подолгу не заняты, например ночью. Периоды простоя можно продуктивно использовать, запуская "долгоиграющие" параллельные приложения, в частности, основанные на парадигме "управляющий-рабочие" (раздел 9.1). Такое исполь­зование поддерживается программной системой Condor, которая получила свое название от крупного хищника и ведет "охоту" на свободные машины в сети, захватывая их.



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



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

Глава 12. Языки, компиляторы, библиотеки и инструментальные средства                       481

Метавычисления обусловлены желанием некоторых пользователей иметь доступ к ресур­сам, недоступным в среде одномашинных вычислений. Это свойство присуще некоторым ти­пам приложений:30

•    распределенные сверхвычисления, которые связаны с решением задач больших объе­мов и не помещаются на одном суперкомпьютере или могут выиграть от выполнения их разных частей на разных компьютерных архитектурах;

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

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

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

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



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

Более умеренным вариантом метавычислительной системы является Schooner. Она под­держивает настольные суперкомпьютерные приложения. Ключевым аспектом Schooner явля­ется язык определения интерфейса, не зависящий от языка программирования и машины; он используется для генерации интерфейсного кода, связывающего программные и аппаратные компоненты в приложении. Другой ключевой аспект Schooner — система времени выполне­ния, которая поддерживает и статическую, и динамическую конфигурации компонентов в приложении. Например, если удаленная машина оказывается перегруженной во время работы приложения или еще одна машина в сети становится доступной, пользователь может дина­мически перестроить приложение, чтобы адаптировать его к произошедшим изменениям.

12.4.3. Учебные примеры: инструментальный набор Globus

Globus— это новый, чрезвычайно амбициозный проект, позволяющий конструировать обширное множество инструментальных средств для построения метавычислительных при­ложений. Руководителями данного проекта являются Ян Фостер (Ian Foster) из Argonne Na­tional Labs и Карл Кессельман (Carl Kesselman) из USC's Information Sciences Institute. Их со­вместные разработки буквально охватывают весь земной шар.

Цель проекта Globus — обеспечить базовый набор инструментов для разработки переноси­мых высокопроизводительных сервисов, поддерживающих метавычислительные приложения.



30 Список представлен руководителями проекта Globus Фостером и Кессельманом в [Foster and Kes­selman, 1997]. Проект Globus описан в следующем разделе.

482                                                      Часть 3. Синхронное параллельное программирование

Таким образом, Globus основывается на возможностях таких более ранних систем, как PVM, MPI, Condor и Legion, значительно их расширяя. Проект также связан с разработкой способов приме­нения высокоуровневых сервисов к изучению низкоуровневых механизмов и управлению ими.

Компоненты инструментального набора Globus изображены на рис. 12.4. Модули набора выполняются на верхнем уровне метакомпьютерной инфраструктуры и используются для реализации сервисов высокого уровня. Метакомпьютерная инфраструктура, или испыта­тельная модель, реализована программами, соединяющими компьютеры. Группой Globus были построены два экземпляра такой инфраструктуры. Первый, сетевой эксперимент I-WAY, был создан в 1996 г. Он объединил 17 узлов в Северной Америке, его использовали 60 групп для разработки приложений каждого из четырех классов, описанных в предыдущем разделе. Вторая метакомпьютерная инфраструктура GUSTO (Globus Ubiquitous Supercomputing Testbed) была построена в 1997 г. как прототип вычислительной сети, состоящей из 15 узлов, и впоследствии премирована за развитие быстродействующих распределенных вычислений.

Сервисы высокого уровня

Adaptive Wide Area Resource Environment (AWARE) — адаптивная распределенная среда ресурсов

Интерфейс MPI, языковые интерфейсы,

CAVE-среды и другие Другие сервисы

Legion, Corba и другие

Модули инструментального набора Globus взаимодействие

размещение и распределение ресурсов сервисы ресурсов информации аутентификация создание процессов доступ к данным

Метакомпьютерная инфраструктура I-WAY, GUSTO и другие

Рис. 12.4. Компоненты и структура инструментального набора Globus

Инструментальный набор Globus состоит из нескольких модулей (см. рис. 12.4).

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


В основе его лежит библиотека взаимодействий Nexus.

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

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

•     Модуль аутентификации обеспечивает механизмы, используемые для подтверждения подлинности пользователей и ресурсов. Эти механизмы, в свою очередь, используются как строительные блоки в сервисах, например, санкционирования доступа.

•     Модуль создания процессов инициирует новые вычисления, объединяет их с уже иду­щими вычислениями и управляет их завершением.

Глава 12. Языки, компиляторы, библиотеки и инструментальные средства                         483

• Модуль доступа к данным обеспечивает скоростной удаленный доступ к постоянной памяти, базам данных и параллельным файловым системам. Этот модуль использует механизмы библиотеки взаимодействий Nexus.

Модули набора Globus помогают реализовывать сервисы приложений высокого уровня. Одним из таких сервисов является так называемая адаптивная распределенная среда ресурсов — Adaptive Wide Area Resource Environment (AWARE). Она содержит интегрирован­ный набор сервисов, в том числе "допустимые метавычислениями" интерфейсы для реализа­ции библиотеки MPI, различные языки программирования и инструменты для создания вир­туальных сред (constructing virtual environments — CAVE). Среди сервисов высокого уровня есть и разработанные другими, включая упомянутую выше систему метавычислений Legion и реализации CORBA (Common Object Request Broker Architecture).

Инструментальный набор Globus — это новый развивающийся проект, так что его описа­ние изменяется по мере разработки приложений и поддержки сервисов. Заинтересованный читатель может получить информацию о текущем состоянии и последних достижениях про­екта Globus, посетив его Web-сайт по адресу www.globus. org.


Содержание раздела