Владимир Пекунов - Технологии автоматического дедуктивного распараллеливания в языке Planning C

Тут можно читать онлайн Владимир Пекунов - Технологии автоматического дедуктивного распараллеливания в языке Planning C - бесплатно ознакомительный отрывок. Жанр: Прочая околокомпьтерная литература. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Владимир Пекунов - Технологии автоматического дедуктивного распараллеливания в языке Planning C краткое содержание

Технологии автоматического дедуктивного распараллеливания в языке Planning C - описание и краткое содержание, автор Владимир Пекунов, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Работа посвящена решению проблемы автоматического распараллеливания C-программ с применением средств построения языковых расширений языка Planning C 2.0. Предложены механизмы реализации расширений, доказана теорема об их реализуемости. Предложена новая технология распараллеливания тел циклов, состоящих из двух зависимых по данным частей. Предложена технология оптимизирующей векторизации многократно выполняемых циклов с расходящимися трассами итераций на векторных расширителях.

Технологии автоматического дедуктивного распараллеливания в языке Planning C - читать онлайн бесплатно ознакомительный отрывок

Технологии автоматического дедуктивного распараллеливания в языке Planning C - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Владимир Пекунов
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Соответственно, целью данной главы является определение набора языковых средств Planning C 2.0, на базе которых могут быть реализованы все вышеупомянутые этапы.

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

2.1. Дедуктивные макромодули: средства решения задач распараллеливания и генерации выходной программы

Первоначально в языке Planning C дедуктивные макромодули предназначались для гибкой генерации описаний вычислительных топологий (этим и объясняются некоторые их не вполне очевидные синтаксические особенности), впоследствии же их применение было расширено: в настоящее время дедуктивные макромодули используются для гибкой дедуктивной генерации произвольных фрагментов программы на основе логических правил, записанных на языке GNU Prolog , имеющем бесплатный и свободно распространяемый интерпретатор. Как будет показано в настоящей работе, дедуктивные макромодули вполне могут сгенерировать и полноценную параллельную программу.

Дедуктивный макромодуль является совокупностью статических и динамических (генерируемых на одной из стадий компиляции в ходе применения предикатов GNU-Prolog) элементов. Он оформлен в виде специального программного блока и имеет параметры, в зависимости от которых им генерируется фрагмент программного кода. Соответствующий код будет вставлен в программу в точке обращения к макромодулю, в котором будут указаны конкретные значения его параметров. Предполагается, что макромодуль будет генерировать код на этапе компиляции, точнее, на стадии препроцессинговой обработки. Соответственно, это накладывает определенные ограничения на возможные значения его параметров – это должны быть выражения, которые можно вычислить на этапе препроцессинга: предположим, что это выражения, содержащие исключительно именованные и неименованные константы, в том числе те, которые формируются в результате классических макроподстановок C/C++.

2.1.1. Синтаксис и семантика макромодуля

Предлагается следующий синтаксис декларации дедуктивного макромодуля (все элементы в описании могут разделяться пробелами):

« #» « def_module» « (» префиксная_строка» )» имя_модуля « (» [имя_параметра] {»,» имя_параметра}» )» « {»
(предикат | цель | произвольный_Planning_C_код)
{(предикат | цель | произвольный_Planning_C_код}
« }» «;»
предикат = « @» имя_предиката [» (» переменные_предиката» )»] [» : -» GNU_PROLOG_выражение]».»
цель = « @» « goal» « :-» GNU_PROLOG_выражение».»

Здесь произвольный_Planning_C_код должен представлять собой фрагмент синтаксически корректного языкового выражения, не содержащего символа « @». Это может быть описатель любого статического элемента генерируемого кода. GNU_PROLOG_выражение может содержать вызовы любых предикатов GNU Prolog, в том числе генерирующих консольный вывод – результаты этого вывода и будут использоваться в качестве сгенерированных фрагментов кода . В большинстве случаев вывод будет генерироваться предикатом write .

Обращение к макромодулю имеет формат:

имя_модуля « (» [значение_параметра] {»,» значение_параметра}» )» «;»

В точке обращении к макромодулю компилятором выполняются следующие действия :

а) вычисляются все параметры обращения;

б) значения параметров подставляются в текст модуля вместо соответствующих лексем – имен параметров;

в) из текста модуля исключаются все предикаты, из которых формируется текст логической GNU Prolog-программы;

г) фрагмент модуля, содержащий какую-либо из целей, заменяется результатом доказательства этой цели (то есть блоком выведенных на консоль в ходе доказательства строк) в контексте сформированной логической GNU Prolog-программы;

д) в программу на Planning C вместо обращения к макромодулю вставляется код, содержащий префиксную строку (которая может быть пустой) и результирующий текст модуля, обрамленный фигурными скобками.

Необходимо детализировать возможные типы параметров . Каждый параметр (после выполнения всех макроподстановок и подстановок значений констант, определенных в программе с помощью ключевого слова const) должен быть константным выражением, содержащим только неименованные константы . Такое выражение может быть числом/числовым выражением, или строкой (заключенной в апострофы), или списком, который может содержать числа, строки и другие списки. Числовые выражения вычисляются, применительно к результирующим значениям действуют следующие простые правила:

– целые числа так и считаются целыми;

– близкие к нулю вещественные константы считаются целочисленными нулями;

– близкие к целым вещественные значения считаются соответствующими целыми (с округлением);

– прочие значения считаются вещественными.

Развернутый в константное выражение параметр распознается по следующим правилам :

а) если он начинается с « [», то это список , который передается в макромодуль без изменения вплоть до» ]» с учетом сбалансированности по вложенным парам квадратных скобок;

б) если он начинается с « '», то это строка, которая передается без изменения вплоть до закрывающего апострофа « '» с учетом наличия в строке возможных пар апострофов, представляющих апостроф, являющийся одним из символов строки;

в) иначе делается попытка распознать параметр как число/числовое выражение.

Определение макромодуля может содержать обращения к иным макромодулям, записанным в той же форме «имя_модуля (параметры);». Таким образом, реализованы вложенные макромодули, с помощью которых можно (в некоторых случаях) сократить общий объем модулей и повысить гибкость их применения.

2.1.2. Расширение базовой семантики макромодуля: порождающее программирование

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

префиксная_строка « {» сгенерированный_макромодулем_код» }»

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Владимир Пекунов читать все книги автора по порядку

Владимир Пекунов - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Технологии автоматического дедуктивного распараллеливания в языке Planning C отзывы


Отзывы читателей о книге Технологии автоматического дедуктивного распараллеливания в языке Planning C, автор: Владимир Пекунов. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x