La tecnología de programación grafo-simbólica es una tecnología para diseñar y codificar algoritmos de software basados en una representación gráfica de programas, con el objetivo de automatizar total o parcialmente los procesos de diseño, codificación y prueba de software .
La tecnología de programación gráfica simbólica es un lenguaje de programación gráfico que permite describir algoritmos paralelos utilizando un gráfico de control y generar códigos de programa automáticamente.
El modelo está representado por un cuádruple , donde es un conjunto de datos de un área temática determinada, es un conjunto de operadores definidos sobre datos de un área temática, es un conjunto de predicados que actúan sobre estructuras de datos de un área temática, es un conjunto dirigido gráfico etiquetado. es el conjunto de vértices del gráfico. Cada vértice está etiquetado con un operador local . El gráfico tiene un conjunto de arcos de control y un conjunto de arcos de sincronización . es una relación sobre conjuntos de vértices y arcos que determina la forma en que están conectados. Un arco de control que conecta dos vértices y tiene tres etiquetas: predicado , prioridad y tipo de arco . Cada arco de sincronización está marcado con un mensaje .
Un tipo de arco se define como una función cuyos valores tienen la siguiente semántica:
El funcionamiento del modelo comienza con la ejecución de un operador que marca el vértice inicial . El desarrollo del proceso computacional descrito por el modelo está asociado con transiciones de vértice a vértice a lo largo de arcos de control. En este caso, la transición a lo largo del arco de control solo es posible si el predicado con el que se marca es verdadero. Si varios predicados que marcan arcos que salen de un vértice se cumplen al mismo tiempo, la transición se realiza a lo largo del arco de mayor prioridad.
Para describir el paralelismo, se introduce el concepto de rama paralela : un subgrafo de un grafo que comienza con un arco paralelo (el tipo de este arco es ) y termina con un arco que termina (el tipo de este arco es ). , donde es el conjunto de vértices de rama, es el conjunto de arcos de control de rama, es la relación entre los conjuntos de vértices de rama y arcos que determina la forma en que están conectados. Los arcos que emanan de los vértices de la rama paralela , también pertenecen a la rama . Al codificar el algoritmo descrito utilizando el modelo propuesto, cada rama paralela genera un proceso separado: un conjunto de subrutinas ejecutadas secuencialmente en uno de los procesadores del sistema de computación paralela. El modelo gráfico generalmente contiene varias ramas paralelas, cada una de las cuales forma un proceso separado. En este sentido, el modelo de computación paralela se puede representar como una unión de varias ramas paralelas. Por lo tanto, la paralelización de los cálculos solo es posible en el nivel del modelo gráfico. Los cálculos dentro de cualquier actor se realizan secuencialmente.
En la tecnología GSP para objetos, agregados, se utiliza un esquema de monitoreo para organizar los cálculos. El método se basa en el control centralizado del proceso informático, realizado por un programa especial: una máquina gráfica.
La máquina gráfica es universal para cualquier algoritmo. La información inicial para la máquina gráfica es el modelo del gráfico de control de proceso computacional descrito anteriormente. A medida que analiza el modelo, ejecuta actores y agregados en el orden apropiado, evalúa valores predicados y administra el tiempo. Para cada rama paralela, se lanza una copia de la máquina gráfica, que es un proceso separado en el sistema informático.
La tecnología GSP utiliza un estándar para organizar una interfaz de información entre módulos. El estándar está garantizado por la implementación de siete reglas básicas:
El entorno de ejecución del programa selecciona la máquina en la que se lanzará el proceso responsable de almacenar las variables POP globales. Dadas las características del hardware y la topología del CS, este puede ser el nodo con la mayor cantidad de RAM o el nodo central, que tiene el tiempo de acceso mínimo desde cualquiera de los otros nodos del clúster. La ventaja de este enfoque es que el recurso de memoria en los nodos informáticos se ahorra significativamente, ya que la memoria se asigna a los nodos solo para aquellas variables que se utilizan.
La idea presentada de organizar el almacenamiento e intercambio de datos entre procesos paralelos está orientada al modelo de paso de mensajes, en el que cada proceso trabaja con datos locales. Por ejemplo, el estándar MPI implica que los procesos intercambian datos solo como resultado de enviarlos en forma de mensajes.
El método descrito de intercambio de datos requiere la introducción del concepto de un administrador de datos, una subrutina que realiza las funciones de almacenamiento, lectura y modificación de datos de dominio.
El administrador de datos se ejecuta en un proceso separado del programa paralelo. En ramas paralelas del modelo gráfico, para leer o escribir algunos datos, se accede al administrador de memoria mediante un conjunto de mensajes. El primer mensaje envía una solicitud para leer o escribir un dato en particular. Cada variable del POP recibe un número único por el cual el administrador de memoria puede identificarla. En el caso de una lectura, la rama paralela procede a esperar una respuesta del administrador de datos. Al escribir, el segundo mensaje envía el nuevo valor de la variable. El administrador de datos por turnos recibe y procesa solicitudes de sucursales paralelas.