JAVA-ЭМУЛЯТОР ПАРАЛЛЕЛЬНОЙ ВЫЧИСЛИТЕЛЬНОЙ МАШИНЫ В КОМПЛЕКСЕ ДИСТАНЦИОННОГО ОБУЧЕНИЯ МЕТОДАМ РАЗРАБОТКИ

advertisement
JAVA-ЭМУЛЯТОР ПАРАЛЛЕЛЬНОЙ ВЫЧИСЛИТЕЛЬНОЙ МАШИНЫ В
КОМПЛЕКСЕ ДИСТАНЦИОННОГО ОБУЧЕНИЯ МЕТОДАМ РАЗРАБОТКИ
ПРОГРАММ ДЛЯ ВЫСОКОПРОИЗВОДИТЕЛЬНЫХ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ
А.В. Комолкин, С.А. Немнюгин, О.Л. Стесик, А.В. Захаров
Санкт-Петербургский государственный университет, г.Санкт-Петербург
Введение.
Из средств прикладного программирования для высокопроизводительных вычислительных систем, разработанных к настоящему времени, бесспорно применяемыми являются реализации протокола MPI. Причинами их
успеха стали, прежде всего, высокая эффективность, широкое распространение высокопроизводительных вычислительных систем (ВВС) кластерного типа, наличие эффективной и хорошо поддерживаемой бесплатной реализации
универсального применения (пакет MPICH). Положительные стороны стандарта de facto заставляют перекладывать
на пользователей и обслуживающий персонал кластерных систем преодоление недостатков MPI: избыток средств
передачи сообщений, отсутствие контроля со стороны системы за правильностью применения вызовов, и, как следствие, необходимость высоких затрат на обучение пользователей по формально составленной документации разработчиков.
Основной проблемой пользователя, начинающего работу с MPI, становятся неизбежные взаимные блокировки, ожидание принятия непосланных сообщений и посылка передачи сообщений, которых не ждут. Описание
процедур MPI, поставляемое с пакетом MPICH, отличается исключительной краткостью. Отладочный инструментарий пакета также не отличается дружественностью пользовательского интерфейса. Преодоление трудностей
начального этапа требует от пользователя незаурядного терпения и изрядного количества времени, проведенного за
консолью учебного кластера.
При дистанционном обучении трудности начального этапа работы с системой передачи сообщений на
уровне процедур специальных библиотек, подобных MPI, возрастают многократно.
Интеллектуальная среда для активного обучения.
Задача активного обучения принципам и методам создания параллельных алгоритмов и программ, их отладки и оптимизации, как показали несколько лет педагогической практики, является непростой даже в форме очного обучения в небольшой (8-10 учащихся) группе при непосредственной работе учащихся с учебной ВВС. Необходим комплекс электронных учебных пособий, помогающий быстро отыскать необходимую справку, проверить,
не прибегая к компиляции, программный код на наличие типичных ошибок, получить и оценить построенную в
рамках учебной программы схему обмена сообщениями с точки зрения тупиковых ситуаций. Такой комплекс поднимет эффективность очного обучения, в дистанционном же обучении он просто необходим.
В рамках работ, ведущихся в Санкт-Петербургском государственном университете на физическом факультете и в Междисциплинарном центре, создается интеллектуальная среда с удаленным доступом для разработки высокопроизводительных вычислительных приложений.
Планируется, что интеллектуальная среда будет представлять собой программно-аппаратный комплекс, состоящий из Web-сервера, программного эмулятора параллельного компьютера, информационной системы по параллельным алгоритмам, системы учебных курсов по параллельному программированию и системы удаленного
доступа к параллельному кластеру. На данном этапе реализована часть интеллектуальной среды, которая включает
курсы дистанционного обучения и прототип эмулятора параллельного компьютера.
Работа системы базируется на удаленном доступе к Web-серверу с использованием технологий сервлетов и
Java-апплетов, системе очередей для выполнения заданий на Linux-компьютере.
Интеллектуальная среда позволяет разрабатывать и отлаживать параллельные программы в режиме удаленного доступа с использованием минимальных программно-аппаратных средств, имеющихся в распоряжении
непосредственно у программиста. Использование такой среды ускоряет разработку параллельных программ, поскольку она предоставляет программисту учебные и информационные материалы и позволяет включать в текст
программ готовые блоки, реализующие стандартные параллельные алгоритмы. Кроме этого, использование этой
среды ограничивает нагрузку на реальные высокопроизводительные ресурсы при обучении, разработке и отладке
параллельных программ.
Курсы дистанционного обучения включают теоретические занятия (тексты для изучения), автоматизированные тесты и практические задания. Практические занятия выполняются на программном эмуляторе параллельного компьютера.
3
Задачи интеллектуальной среды на разных этапах обучения.
Эмулятор параллельного компьютера работает в трех режимах. В первом, самом жестком режиме, разработчику предоставляется возможность конструировать параллельную программу на языках C или FORTRAN из
заранее подготовленных блоков. Программист может единственным способом создать каждую из учебных программ. Контроль правильности "сборки" параллельной программы осуществляется автоматически. Программы реально не исполняются на ЭВМ, но программисту предоставляется результат их "работы", который выбирается из
базы данных, подготовленной по результатам работы этих программ на реальном параллельном кластере.
Второй режим работы эмулятора параллельного компьютера заключается в предоставлении программисту
возможности произвольно собирать параллельную программу из стандартных, заранее подготовленных блоков и
включать в текст программы собственный код. После разработки программа транслируется с языков C или
FORTRAN на язык Java и создается апплет, который передается для выполнения на компьютер пользователя. Компьютер пользователя должен иметь только исполнительную Java-машину (которая включается в распространенные
Internet-обозреватели), что освобождает его от необходимости установки на своем компьютере операционной системы UNIX и систем параллельного программирования. С другой стороны, такой подход позволяет освободить
ресурсы кластера от загрузки учебными и тестовыми программами.
В третьем режиме программист сам составляет параллельную программу и ставит ее в очередь на компиляцию и исполнение на Linux-ЭВМ. В данном случае одна ЭВМ, на которой установлены системы параллельного
программирования и исполнения, эмулирует работу параллельного кластера. При написании программ существуют
ограничения на размер и структуру программы. Не предусмотрена возможность сохранения текстов программ и
данных на ЭВМ. Программисты могут использовать параллельные подпрограммы, реализованные для некоторых
из описанных параллельных алгоритмов. Доступ к параллельному Linux-кластеру планируется осуществить в дальнейшем, после апробации данного режима работы эмулятора параллельного компьютера и тестирования используемой системы безопасности.
Принципы устройства эмулятора и работы с ним.
Эмулятор ВВС должен произвести грамматический разбор текста программы, написанной на языке
FORTRAN и произвести аналогичный код на языке Java. Моделирование обмена сообщениями должно приводить к
построению реализации класса, имитирующего коммуникатор MPI, связанный с комплексом объектов, наследующих класс Thread, соответствующих процессам MPI различных рангов. Все процедуры передачи сообщений реализуются как методы класса-коммуникатора. Передачи сообщений протоколируются, протокол сохраняется до конца
работы программы. Состояния блокировки находят отражение в полях класса-коммуникатора, которые контролируются отдельным подпроцессом, не связанным с подпроцессами исходной программы. Возникновение недопустимой ситуации должно приводить к генерации исключения, останавливающего выполнение программы с подробным описанием состояний передачи сообщений и выдачей протокола обмена.
Не предполагается, по крайней мере, на начальном этапе разработки, перенесение на язык Java всего многообразия процедур MPI. Скорее всего, придется ограничиться наиболее распространенными процедурами. Однако, особенности объектно-ориентированного программирования позволяют безболезненно дополнять и расширять
работающие программы и количество отраженных на языке Java процедур MPI – вопрос времени.
Более существенное ограничение связано с невозможностью воспроизвести в обозримое время Java-аналог
FORTRAN- программы значительного размера. Возможно, в дальнейшем будет выпущен не портативный вариант
эмулятора, который сможет обработать реальную научную вычислительную программу в разумное для потребителя время, но на настоящем этапе ставится задача построения аналогов для небольших учебных программ.
По этой же причине – невысокой скорости исполнения – придется ограничить число имитируемых процессоров. Даже при наличии реальных процессоров выигрыш во времени от распараллеливания не всегда проявляет
себя, а нити исполнения – это всего лишь подпроцессы одного процесса, переключение между контекстами которых только замедляет выполнение.
Несмотря на неизбежные ограничения, эмулятор ВВС с точки зрения обучения обладает рядом очевидных
преимуществ перед реальной MPI-системой: он позволяет произвести разбор программы еще на стадии разбора
исходного текста на FORTRAN'е; исполнение контролируется и аварийная ситуация сопровождается трассировкой
вызовов и протоколом передачи сообщений; для эмулятора не нужны кластер, FORTRAN, MPICH и система очередей; эмулятор помогает понять особенности отдельных операций обмена, тогда как использование реальной ВВС
требует наличия глубокого понимания сути вызываемых процедур.
Заключение.
4
Выбор для создания эмулятора ВВС языка программирования Java очевиден: относительная легкость программирования, переносимость байт-кода, поддержка подпроцессов, реализованная в Java, сравнительная простота
обработки текстовых массивов, приспособленность для работы в Internet – все, что требуется для поддержки практических занятий в дистанционном обучении программированию.
Авторы выражают благодарность Российскому фонду фундаментальных исследований за финансовую
поддержку (грант № 02-07-90332в).
5
Download