В.А. Фисун - Переход от эталонного представления языка программирования к конкретному языку (статья) (1127786)
Текст из файла
УДК 004.43Переход от эталонного представления языка программированияк конкретному языкуc В.А. Фисун1, 2○1Институт прикладной математики им. М.В. Келдыша РАН, Москва, 125047, Россия2МГТУ им. Н.Э. Баумана, Москва, 105005, РоссияИзложены особенности использования комментариев специального назначенияв алгоритмических языках для адаптации программ к вычислительной среде.Рассмотрены системы параллельного программирования, основанные на использовании спецкомментариев, языки Фортран HPF, Фортран DVM и система OpenMP.Ключевые слова: псевдокомментарии, Алгол, Фортран HPF, Фортран DVM,OpenMP.После появления в 60-х годах прошлого века алгоритмическихязыков высокого уровня — Алгол и Фортран — началась эра всеобщейформализации вычислительных алгоритмов на этих языках.
Особенноудобно это было делать на языке Алгол-60 [1] с его аппаратом рекурсивных процедур, динамических массивов и математическим стилемконструкций языка. Многочисленные периодические журналы выпускали описания программ вычислительных алгоритмов из различныхобластей науки и техники, собирались коллекции избранных алгоритмов в виде пакетов программ и библиотек. Этот фонд алгоритмови программ востребован до сих пор.Описание вычислительного алгоритма на алгоритмическом языке должно быть строгим и не допускать двусмысленного толкования.Эпиграф к описанию языка Алгол-60 гласит: «То, что вообще можетбыть сказано, может быть сказано ясно, а о чем невозможно говорить — о том следует молчать».
Однако при подготовке программ возникает необходимость в дополнительных языковых средствах для документирования и редактирования текстов программ. Наконец, припогружении программы в конкретную вычислительную среду желательно учитывать особенности архитектуры вычислителя.В стандарте языка Алгол-60 для таких целей кроме эталонногопредставления языка предусмотрены еще две формы: для публикации и конкретное. Для транслитерации различных представлений языка широко используется концепция уточнения конструкций эталонного языка спецкомментариями, которые позволяют сохранять корректность программы с точки зрения эталонного стандарта языка и в тоже время расширяют его возможности.1В.А.
ФисунВ языках программирования допускается использование комментариев, которые произвольно могут размещаться в любом местепрограммы. Этот аппарат применяется для неформального описанияреализуемого алгоритма, указания ссылок на авторов и т. д. Комментарии служат подсказкой программисту, и они «невидимы» (прозрачны)для транслятора. Однако существует особый вид комментариев, включаемых в тексты программ, — специальные комментарии. Тексты таких комментариев начинаются c зарезервированной комбинации символов, распознаваемой специальными трансляторами, для которыхэти псевдокомментарии являются директивами для исполнения.Специальные комментарии можно применять при подготовке текстов программ для добавления в текст макроопределений, аннотаций,дополнения текста возможностями библиотек, а также для работыс уже существующей программой, например, для получения документации или для верификации программы.
Популярными процедурамина уровне языка публикаций, основанного на спецкомментариях, являются системы автоматического документирования Doxygen, Epydoc,Javadoc, PHPdoc и др. Так, система Doxygen может готовить полнуюдокументацию к программе по ее исходному тексту и набору спецкомментариев. Спецкомментариями могут служить и некоторые другие виды комментариев. В языке Java комментарий TODO помещаетсяв нереализованный участок текста программы как указание о том, чтоданный фрагмент программы отсутствует.
Комментарий FIXME помечает замеченную ошибку, которую можно исправить позднее, а комментарий XXX — критическую ошибку в тексте программы, без исправления которой нельзя продолжать дальнейшую работу.Комментарии специального назначения используются также длярасширения возможностей эталонных языков при учете особенностейконкретной вычислительной среды выполнения программ. Вначалеэто были указания о семантических особенностях программ на эталонном языке, которые невозможно получить анализом текста автоматически. Специальные комментарии в конкретных представлениях языка позволяли трансляторам генерировать более эффективныйобъектный код. Примером одних из первых комментариев для исполнения могут служить спецкомментарии в отечественной системе программирования ТА-2, во входном языке транслятора с языкаАлгол-60 для ЭВМ класса М-20. Этими комментариями можно былопомечать нерекурсивные процедуры программы, задавать максимально возможную длину динамических массивов.Для мультипроцессорных кластеров были предложены комплексы спецкомментариев, включение которых в тексты программ с последовательного языка позволяют трансляторам получать параллельный объектный код.
Наиболее развитой системой спецкомментари2Переход от эталонного языка представления языка программирования. . .ев такого вида принято считать спецдирективы программного обеспечения фирмы CONVEX для кластера SPP1000, который являетсяклассическим примером мультипроцессорной архитектуры вычислителей с общей памятью.
Язык спецдиректив кластера имеет средствадля указания фрагментов программы, допускающих распараллеливание, и синхронизации выполнения параллельных процессов. Кромеобычных правил разделения данных процессов на локальные и глобальные данные в этой системе программирования можно учитыватьархитектурные особенности оперативной памяти cc-NUMA кластера SPP1000. Например, обработку «близкорасположенных» сегментов данных могут выполнять процессы, расположенные на таком жеуровне доступа. С этой проблемой так называемой миграции процессов по ядрам в многоядерных микропроцессорах приходится считаться в современных распределенных вычислениях. Для микропроцессоров фирмы НР кластера SPP1000 трансляторы с языков Фортрани Си учитывают спецдирективы для управления работой кэш памяти,межпроцедурной оптимизации, задания коэффициентов размножениятел циклов и т.
д. Существует даже директива, позволяющая передавать системе программирования указание пользователя о вероятностиперехода по метке в заданном условном операторе программы приее выполнении. Трансляторы CONVEXа в режиме О3 — «Распараллелить!» по тексту последовательных программ и без использованияспецдиректив могут генерировать параллельный объектный код. Конечно, техника ручного управления распараллеливанием последовательных программ позволяет получать более эффективные результаты.Возможность автоматического распараллеливания последовательных программ ограничивается системами программирования длявекторных машин и мультисистем с общей памятью, поэтому длясамых массовых вычислительных кластеров — МРР-систем — были востребованы средства ручной адаптации накопленного фондапоследовательных программ.
Многообразие мультипроцессорных систем и отсутствие языков параллельного программирования вызывалоестественный интерес к использованию для параллельного программирования конкретных расширений алгоритмических языков. Так,для программирования методом передачи сообщений для МРР-систембыли предложены языки Фортран GNS и Си GNS, полученные добавлением средства описания и идентификации параллельных процессов,коммуникационных операторов в основные конструкции эталонныхязыков.Самыми распространенными расширениями эталонных языковдля параллельного программирования, основанными на спецкомментариях, являются языки Фортран HPF, Фортран DVM и система3В.А. ФисунOpenMP (Open Multi-Processing).
Соответствующие комплексы разработаны и используются также для Си-систем программирования.Считается, что такие системы параллельного программирования позволяют использовать фонд последовательных программ, накопленныхна этих языках.Основная концепция системы программирования OpenMP состоитв организации распределенных вычислений на многопроцессорныхсистемах с общей памятью. OpenMP — набор директив, библиотечных процедур и системных переменных, которые предназначены дляпрограммирования многопоточных приложений с помощью спецкомментариев на языках Cи, Cи++ и Фортран. В языке Фортран признаком спецкомментария OpenMP является префикс !$омр, а в Си — директива #pragma omp. Использование специальных ключевых символов omp указывает на то, что эти команды относятся к OpenMP.Таким образом, директивы #pragma для работы с OpenMP имеютследующий формат:#pragma omp <директива>.OpenMP поддерживает директивы private, parallel, for,section, single, master, critical, flush, ordered, atomicи ряд других, которые определяют механизмы распараллеливаниявычислительных работ или задают конструкции синхронизации.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.