Графо-символическое программирование

Графо-символическое программирование

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

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

Содержание

Концептуальное описание модели

Модель представляется четверкой <D, F, P, G>, где D — множество данных некоторой предметной области, F — множество операторов, определенных над данными предметной области, P — множество предикатов, действующих над структурами данных предметной области, G = \left \{ A, \mathit \Psi, \mathit \Phi, R \right \} — ориентированный помеченный граф. A = \left \{A_1, A_2, ..., A_n\right \} — множество вершин графа. Каждая вершина A_i помечена локальным оператором f_i\left (D \right)\in F. На графе задано множество дуг управления \mathit \Psi = \left \{ \mathit \Psi_{1i1}, \mathit \Psi_{1i2}, ..., \mathit \Psi_{jm} \right \} и множество дуг синхронизации \mathit \Phi = \left \{ \mathit \Phi_{1i1}, \mathit \Phi_{1i2}, ..., \mathit \Phi_{jm} \right \}. R — отношение над множествами вершин и дуг, определяющее способ их связи. Дуга управления, соединяющая любые две вершины A_i и A_j, имеет три метки: предикат p_{ij}(D) \in P, приоритет k \left (\mathit \Phi_{ij} \right ) \in N и тип дуги T \left (\mathit \Phi_{ij} \right ) \in N. Каждая дуга синхронизации \mathit \Phi_{ij} помечена сообщением \mu_{ij} \in N.

Тип дуги \mathit \Psi_{ij} определяется как функция T \left (\mathit \Phi_{ij} \right ) \in \left \{1,2,3 \right \}, значения которой имеют следующую семантику:

  • T \left (\mathit \Phi_{ij} \right ) = 1 – последовательная дуга (описывает передачу управления на последовательных участках вычислительного процесса);
  • T \left (\mathit \Phi_{ij} \right ) = 2 – параллельная дуга (обозначает порождение нового параллельного вычислительного процесса);
  • T \left (\mathit \Phi_{ij} \right ) = 3 – терминирующая дуга (завершает параллельный вычислительный процесс).


Функционирование модели начинается с выполнения оператора f_0 \left (D \right ), помечающего начальную вершину A_0.Развитие вычислительного процесса, описываемого моделью, ассоциируется с переходами из вершины в вершину по дугам управления. При этом переход по дуге управления возможен лишь в случае истинности предиката, которым она помечена. Если несколько предикатов, помечающих исходящие из вершины дуги, одновременно становятся истинными, переход осуществляется по наиболее приоритетной дуге.

Для описания параллелизма вводится понятие параллельной ветви \mathit \beta - подграфа графа G, начинающегося параллельной дугой (тип этой дуги T \left (\mathit \Phi_{ij} \right ) = 2) и заканчивающегося терминирующей дугой (тип этой дуги T \left (\mathit \Phi_{ij} \right ) = 3). \mathit \beta= \left \{ A_{\mathit \beta}, \mathit \Psi_{\mathit \beta}, R_{\mathit \beta} \right \}, где A_{\mathit \beta} – множество вершин ветви, \mathit \Psi_{\mathit \beta} – множество дуг управления ветви, R_{\mathit \beta} – отношение над множествами вершин и дуг ветви, определяющее способ их связи. Дуги, исходящие из вершин параллельной ветви \mathit \beta, принадлежат также ветви \mathit \beta. При кодировании алгоритма, описанного с помощью предлагаемой модели, каждая параллельная ветвь порождает отдельный процесс – совокупность подпрограмм, исполняемых последовательно на одном из процессоров параллельной вычислительной системы. Графическая модель обычно содержит несколько параллельных ветвей, каждая из которых образует отдельный процесс. В этом смысле модель параллельных вычислений можно представить как объединение нескольких параллельных ветвей. Таким образом, распараллеливание вычислений возможно только на уровне граф-модели. Вычисления в пределах любого актора выполняются последовательно.

Граф-машина

В технологии ГСП для объектов – агрегатов – используется мониторная схема организации вычислений. В основу способа положено централизованное управление процессом вычислений, осуществляемое специальной программой – граф-машиной.
Граф-машина универсальна для любого алгоритма. Исходной информацией для граф-машины служит, описанная выше, модель графа управления вычислительным процессом. Анализируя модель, она выполняет в соответствующем порядке акторы и агрегаты, вычисляет значения предикатов и управляет синхронизацией. Для каждой параллельной ветви запускается по одному экземпляру граф-машины, которая представляет собой отдельный процесс в вычислительной системе.

  1. Работа граф-машины начинается с выполнения актора в корневой вершине.
  2. Затем строится список дуг, исходящих из текущей вершины. Этот список просматривается граф-машиной последовательно, начиная с самой приоритетной дуги. Вычисляется значение предиката, помечающего дугу, и в случае его истинности, происходит переход к обработке следующей вершины. В результате обработки параллельной дуги в отдельном процессе запускается другая граф-машина, обрабатывающая порождаемую данной дугой параллельную ветвь.
  3. После запуска всех параллельных ветвей происходит переход в вершину, в которой они терминируются.
  4. Родительская граф-машина ожидает завершения выполнения всех дочерних граф-машин, если не задано альтернативное условие.

Межмодульный интерфейс параллельного обмена данными

Стандарт хранения и использования данных в ГСП

В технологии ГСП используется стандарт при организации межмодульного информационного интерфейса. Стандарт обеспечивается выполнением семи основных правил:

  1. Вводится единое для всей предметной области программирования (ПОП) хранилище данных, актуальных для всей области. Полное описание данных размещено в словаре данных ПОП. Любые переменные, не описанные в словаре данных, считаются локальными данными для тех объектов ГСП, где они используются.
  2. В пределах ГСП описание типов данных размещается централизовано в архиве типов данных.
  3. Данные, актуальные для формируемого программного приложения, объединяются в единую универсальную структуру - класс TPOData.
  4. В базовых модулях в качестве механизма доступа к данным допускается только передача параметров по адресу, ссылающемуся на универсальную структуру данных.
  5. Привязка данных объектов ПОП к формальным параметрам базовых модулей реализована в паспортах объектов ПОП.
  6. В технологии ГСП не рекомендуется использовать иные способы организации межпрограммных связей по данным.
  7. Данные в ПОП могут быть общими и локальными. Память под общее данное выделяется в менеджере памяти, и все процессоры имеют доступ к этой переменной. Память под локальную переменную выделяется на каждом процессоре, и только этот процессор может читать и изменять её значение.

Способ реализации общей памяти в ГСП

В среде выполнения программы выбирается машина, на которой будет запущен процесс, отвечающий за хранение глобальных переменных ПОП. Учитывая аппаратные особенности и топологию ВС, это может быть узел с наибольшим объемом оперативной памятью или центральный узел, имеющий минимальное время доступа от любого из остальных узлов кластера. Преимущество данного подхода в том, что значительно экономится ресурс памяти на вычислительных узлах, т.к. на узлах память выделяется только под те переменные, которые используются.

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

Описанный способ обмена данными требует введения понятия диспетчера данных – подпрограммы, выполняющей функции хранения, чтения и модификации данных предметной области.

Диспетчер памяти

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

См. также


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Полезное


Смотреть что такое "Графо-символическое программирование" в других словарях:

  • ГСП — может означать: газосигнализатор полевой (см. Датчики загазованности) гвардейский стрелковый полк гиростабилизированная платформа генератор стирания и подмагничивания гладкоствольная пушка глубинное сейсмическое профилирование Государственная… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»