В.А. Фисун - Переход от эталонного представления языка программирования к конкретному языку (статья) (1127786), страница 2
Текст из файла (страница 2)
Если программа, содержащая директивы OpenMP, скомпилирована Си,Си++, Фортран-компиляторами в режиме обработки эталонного языка с игнорированием спецкомментариев, то полученный объектныйкод будет выполняться как последовательный. В настоящее времяпрактически все ведущие производители многоядерных процессоровподдерживают систему OpenMP в компиляторах на своих платформах.Для класса распределенных вычислений разработана система параллельного программирования DVM, основанная на модели параллелизма по данным (МПД).
Описываемые далее целеуказания этойразработки определены в работе [2]. В этой модели отсутствуют понятие процесса и явная передача сообщений или явная синхронизация.Согласно этой модели данные последовательной программы распределяются по узлам (процессорным элементам) вычислительного кластера, а последовательная программа преобразуется в параллельнуюверсию программы с использованием модели передачи сообщений либо модели с общей памятью. Такая модель параллелизма освобождаетпрограммиста от рутинной и трудоемкой работы по распределениюглобальных массивов на локальные массивы процессов, по управлению передачей сообщений и синхронизации доступа к общим данным.
Разработчики системы DVM приводят примеры высокой эффективности реализации многих алгоритмов научно-технических расчетов с помощью МПД.4Переход от эталонного языка представления языка программирования. . .Первой попыткой использования МПД для программированиянаучно-технических расчетов явилась разработка языка Fortran HighPerformance — Фортран HPF. Директивы распределения данных последовательной программы по узлам кластера и другие параллельныедирективы оформляются в виде спецкомментариев языка Фортран.Стандарт HPF разрабатывался на основе теоретических исследований и базировался на идее полной автоматизации распараллеливаниявычислений и синхронизации работы с общими данными.
Однакопервые реализации HPF показали неэффективность языка для рядасовременных методов вычислений (в частности, для нерегулярныхвычислений). В следующей версии стандарта HPF была предпринята попытка ручного управления эффективностью параллельноговыполнения программ. В ней определены средства распределениявычислений и спецификации общих редукционных переменных.Модель параллелизма DVM также базируется на МПД.
Аббревиатура DVM отражает два названия модели: распределенная виртуальная память (Distributed Virtual Memory) и распределенная виртуальнаямашина (Distributed Virtual Mashine). Эти названия указывают на возможность адаптации модели DVM как для систем с общей памятью,так и для систем с распределенной памятью. В отличие от стандартаHPF в системе DVM не ставилась задача полной автоматизации распараллеливания вычислений и синхронизации работы с общими данными. Программист полностью управляет эффективностью выполнения параллельной программы с помощью низкоуровневых спецификаций.
Высокоуровневая модель DVM не только снижает трудоемкостьразработки параллельных программ, но и определяет единую формализованную базу для систем поддержки выполнения, отладки, оценки и прогноза производительности программ. Эта программа помимоописания алгоритма обычными средствами языков Си или Фортрансодержит правила параллельного выполнения этого алгоритма.
Правила — спецкомментарии — оформляются синтаксически таким образом, что они являются «невидимыми» для стандартных компиляторов с последовательных языков Си и Фортран и не препятствуютвозможности выполнения и отладки DVM-программы как обычнойпоследовательной программы. Компилятор переводит программу наязыке C-DVM (Fortran DVM) в программу на стандартном языке Cи(Фортран), расширенную функциями системы поддержки выполнения DVM-программ. Библиотека процедур системы поддержки должна входить в состав математического обеспечения вычислителя привыполнении DVM-программ, она использует для организации межпроцессорного взаимодействия стандартные коммуникационные библиотеки (MPI, PVM, Router).5В.А.
ФисунПрогноз дальнейшей судьбы комментариев для исполнения, спецкомментариев как средства перехода от эталонного представленияязыка к языку конкретного представления следует рассматриватьс учетом их места в процессе развития систем программирования.Спецкомментарии в программах, ориентированные на последовательные ЭВМ, служат полезными дополнениями к механизмам управления процессом трансляции программ. Спецкомментарии позволяютуказывать на фрагменты программ, для которых, возможно, необходимо или рекомендуется применение особых алгоритмов генерации объектного кода. Так как эти алгоритмы существенно машинноориентированные, то унификация и стандартизация таких спецкомментариев затруднительна, однако они всегда будут востребованы дляоптимизации объектного кода.Спецкомментарии уровня поддержки параллельного программирования позволяют получить параллельный объектный код (с возможностью выполнять свою последовательную программу на параллельныхвычислителях) по тексту программы на эталонном последовательномязыке (с возможностями отладки, модификации и сопровождения одного варианта текста программы).
Впервые такие удобства обеспечили спецкомментарии для векторных вычислителей — от С-120 доCray-машин. Однако эффект этого аппарата спецкомментариев скрадывали встроенные в трансляторы системы векторизации. Основанные на алгоритмах Лэмпорта и Кука векторизаторы [3] могли находить и учитывать большинство векторных операций в программе притрансляции, а доля ручной доработки программы с помощью спецкомментариев была невелика.Программы на последовательных языках для многопроцессорныхкластеров превращались (а большинство и сейчас превращаются)в параллельные путем внесения в тексты программ после их реструктуризации директив обмена сообщениями (в основном, системыMPI) между процессами. До появления специализированных системи языков адаптация последовательных программ к кластерным архитектурам вычислителей остается основным средством параллельного программирования, а одним из таких методов адаптации является использование спецкомментариев.
Наиболее успешной работойв этой области была автоматизация программирования для мультипроцессорных систем с общей памятью. Спецкомментарии системыпрограммирования кластера SPP1000 были унифицированы, дополнены, стандартизованы и объявлены системой параллельного программирования OpenMP. Размещение в последовательных программахспецкомментариев OpenMP позволяет получать параллельный объектный код для вычислительных систем с общей памятью.
Проекты6Переход от эталонного языка представления языка программирования. . .Фортран HPF и DVM — дополнения соответствующими спецкомментариями эталонного языка программирования для параллельногопрограммирования многопроцессорных кластеров матричной архитектуры. Применение спецкомментариев данного класса переводитпоследовательную программу в ранг параллельной программы с сохранением единого текста и c предположением об эквивалентностирезультатов параллельных и последовательных вычислений.В свое время В. В. Воеводин [4], говоря о стиле программирования, приводил пример простого векторного вычисления тремя вариантами алгоритмически эквивалентных циклических конструкций,которые различаются временем выполнения на порядки.
Диапазонывариаций времени счета OpenMP программ и ее элементов, объемиспользуемой оперативной памяти могут расширяться. Поэтому дляэффективного управления динамикой выполнения программы системой спецкомментариев определены дополнительные механизмы. Однако использование в параллельной программе возможностей полного аппарата спецкомментариев OpenMP не позволяет в ряде случаевсохранять ее эквивалентность последовательной программе. Поэтому предположение о возможности возвращения к последовательному варианту параллельной программы для ее отладки и тем болеео сопровождении только одного варианта программы следует считать преувеличением возможностей системы OpenMP.
Наконец, система OpenMP обеспечивает параллельное программирование толькодля мультипроцессорных систем с общей памятью и не применимак матричным вычислителям. Система спецкомментариев DVM имеетсредства настройки для оптимального управления динамикой выполнения параллельной версии программы на уровне систем интерпретации, а не на уровне эталонного языка. Так как этапу внесения в текстпоследовательной программы спецкомментариев предшествует работа по реструктуризации программы для параллельного выполнения,то разрыв между алгоритмически эквивалентными версиями программы увеличивается еще больше.
Параллельная версия последовательной программы, полученная с помощью спецкомментариев, — всегда другая программа. Это не удивительно, так как даже трансляцияпоследовательной программы с включенным режимом оптимизацииприводит иногда к генерации объектного кода, результаты счета которого могут не совпадать с результатами счета кода, полученным безоптимизации.Система спецкомментариев имеет непосредственное отношениек эволюции языков программирования. Практика внедрения языковпрограммирования с широкими новыми возможностями таких, какАлгол-68, Ада не получила развития, в частности, из-за большогоразрыва между уровнями классических и обобщенных языков для7В.А.