Paralelización e instrumentación en un marco de programación orientado a grafos de productor.

Un método implementado por ordenador para ejecutar un programa de aplicación escrito en un código orientado a objetos, comprendiendo el método:

instanciar un productor con una salida que es actualmente de interés como parte de un grafo de productor, donde el código orientado a objetos incluye métodos y declaraciones de dependencia del productor, donde la declaración de dependencia del productor para un método determinado es identificar en tiempo de ejecución un conjunto de cero o más productores, donde un productor es una construcción instanciada de tiempo de ejecución, donde cada productor se instancia a partir de una combinación respectiva de una instancia

(108) específica de una clase y un método (104) específico de esa clase e identifica dicha instancia específica y dicho método específico, donde la ejecución de un productor da como resultado el método identificado por ese productor que se ejecuta en la instancia identificada por ese productor;

intentar generar automáticamente, en respuesta a dicha instancia, un resto del grafo de productor a través de la vinculación, y la instanciación si es necesario, de otros productores en base a las declaraciones de dependencia del productor de los métodos identificados por los productores ya en el grafo de productor; y

ejecutar los productores en el grafo de productor para determinar la salida actual para el productor de interés, donde dicha ejecución comprende

paralelizar la ejecución de al menos dos de los productores en el grafo de productor, usando un tiempo de ejecución, en base a las dependencias entre los productores en el grafo de productor.

Tipo: Patente Internacional (Tratado de Cooperación de Patentes). Resumen de patente/invención. Número de Solicitud: PCT/EP2007/010407.

Solicitante: MUREX S.A.S.

Nacionalidad solicitante: Francia.

Dirección: 8 RUE BELLINI 75116 PARIS FRANCIA.

Inventor/es: CHAMIEH,FADY, EDDE,ELIAS.

Fecha de Publicación: .

Clasificación Internacional de Patentes:

  • SECCION G — FISICA > COMPUTO; CALCULO; CONTEO > TRATAMIENTO DE DATOS DIGITALES ELECTRICOS (computadores... > Disposiciones para el control por programa, p. ej.... > G06F9/44 (Disposiciones para ejecutar programas específicos)
  • SECCION G — FISICA > COMPUTO; CALCULO; CONTEO > TRATAMIENTO DE DATOS DIGITALES ELECTRICOS (computadores... > Detección de errores; Corrección de errores; Monitorización... > G06F11/34 (Registro o evaluación estática de la actividad del computador, p. ej. de las interrupciones o de las operaciones de entrada-salida)

PDF original: ES-2473765_T3.pdf

 

google+ twitter facebook

Fragmento de la descripción:

Paralelizaciïn e instrumentaciïn en un marco de programaciïn orientado a grafos de productor

Antecedentes Campo

Realizaciones de la invenciïn relacionados al campo de los ordenadores, y mïs especïficamente, al campo de la programaciïn y la ejecuciïn de cïdigo enun entorno de ejecuciïn.

Antecedentes Programaciïn orientada a objetos La programaciïn orientada a objetos es un paradigma de programaciïn de ordenadores. La idea detrïs de la programaciïn orientada a objetos es que un programa de ordenador pueda ser visto como un compendio de unidades individuales (llamadas objetos o instancias) que actïan entre sï, en oposiciïn a la manera tradicional donde un programa puede ser visto como una colecciïn de funciones, o simplemente como una lista de instrucciones al ordenador. Un objeto es un mecanismo de lenguaje para el enlace de datos con los mïtodos que operan sobre esos datos. Cada objeto es capaz de ser llamado a travïs de mïtodos, datos de procesamiento, y proporcionando resultados con otros objetos. Cada objeto puede ser visto como una mïquina independiente o un actor con un papel o responsabilidad distinta.

Un lenguaje reflexivo orientado a objetos es un lenguaje de programaciïn que tiene un conjunto particular de caracterïsticas (por ejemplo, clases, objetos/instancias, herencia, reflexiïn, etc.) , mientras que un lenguaje reflexivo basado en objetos a veces se utiliza para etiquetar un lenguaje de programaciïn que tiene algïn subconjunto de esas caracterïsticas (por ejemplo, objetos) . Para los propïsitos de este documento, las frases "cïdigo fuente orientado a objetos" y "cïdigo orientado a objetos" se utilizan para referirse al cïdigo escrito en un lenguaje que tiene estas caracterïsticas (por ejemplo, cïdigo escrito en un lenguaje reflexivo orientado a objetos, cïdigo escrito en un lenguaje reflexivo basado en objetos) . Si bien los lenguajes del procedimiento, lenguajes no reflexivos orientados a objetos, y lenguajes no reflexivos basados en objetos son lenguajes de programaciïn que normalmente no soportan estas caracterïsticas, se pueden utilizar tïcnicas de transformaciïn para proporcionar estas caracterïsticas (por ejemplo, a travïs de la emulaciïn) para codificar escritas correctamente en los dos lenguajes, y por lo tanto, estas tïcnicas transforman estos lenguajes en un lenguaje reflexivo basado en objetos o en un lenguaje reflexivo orientado a objetos. (Estas tïcnicas no necesitan emular todas las caracterïsticas de los lenguajes orientados a o basados en objetos, sino que sïlo pueden emular las caracterïsticas que sean de interïs para el resto de este documento) . Para los propïsitos de este documento, las frases "cïdigo fuente orientado a objetos" y "cïdigo orientado a objetos" tambiïn se utilizan para referirse a este mïtodo transformado, de cïdigo de lenguaje no reflexivo orientado a objetos, y no reflexivo basado en objetos. A modo de ejemplo, y no de limitaciïn, este documento describe principalmente un cïdigo fuente orientado a objetos escrito en un lenguaje reflexivo orientado a objetos. Ademïs, los tïrminos objeto e instanciase utilizan indistintamente en este documento.

Utilizado principalmente en programaciïn orientada a objetos, el tïrmino mïtodo se refiere a un trozo de cïdigo que estï exclusivamente asociado, ya sea con una clase (llamados mïtodos de clase, mïtodos estïticos o mïtodos de 45 fïbrica) o con un objeto (llamado mïtodos de instancia) . Al igual que un procedimiento en lenguajes de programaciïn de procedimiento, un mïtodo usualmente consiste en una secuencia de instrucciones para realizar una acciïn, un conjunto de parïmetros de entrada para parametrizar las acciones, y, posiblemente, un valor de salida de algïn tipo que se devuelve.

Cuando los programadores escriben un programa utilizando un lenguaje orientado a objetos, el cïdigo resultante puede ser visto conceptualmente como que incluye cuatro tipos bïsicos de cïdigo. El primer tipo incluye comandos que operan en instancia (s) de entrada para proporcionar instancia (s) de salida (referidos aquï como cïdigo de "transformaciïn") ; tïpicamente escrito como mïtodos (referidos aquï como mïtodos de "transformaciïn") . El segundo tipo incluye comandos de instanciaciïn de instancias que hacen que el entorno de ejecuciïn cree instancias de 55 clases (indicados aquï como cïdigo de "instanciaciïn de instancias") . El tercer tipo incluye comandos de manipulaciïn de la propiedad (indicados aquï como cïdigo de "preparaciïn de datos") para invocar mïtodos de acceso de propiedad, mutaciones, etc.) De las instancias anteriores. El cuarto tipo incluye secuencias de comandos que causan que la secuenciaciïn de invocaciïn del mïtodo usando las instancias correspondientes (cuando las instancias apropiadas incluyen las instancias para utilizar como argumentos, las instancias son utilizadas por los 60 mïtodos de instancia y las instancias de clases meta utilizadas por los mïtodos de clase) para especificar quï mïtodos de transformaciïn de quï instancias que invocan, en quï orden, y con quï parïmetros de quï instancias responden a los cambios introducidos por el cïdigo de preparaciïn de datos (indicados aquï como cïdigo "de secuenciaciïn de invocaciïn manual") . El cïdigo de secuenciaciïn de invocaciïn manual se escribe a veces como mïtodos separados de los mïtodos de transformaciïn, y por lo tanto, la invocaciïn manual del cïdigo de 65 secuenciaciïn incluye secuencias de comandos de invocaciïn de mïtodos de transformaciïn. Un programa tïpicamente itera entre el cïdigo de preparaciïn de datos y cïdigo de secuenciaciïn de invocaciïn manual (que tambiïn puede sumergirse en el cïdigo de instanciaciïn de instancias) , que a su vez invoca el cïdigo de transformaciïn (que tambiïn puede sumergirse en el cïdigo de instanciaciïn de instancias y los tipos de cïdigo de preparaciïn de datos) . Cabe seïalar que esta es una representaciïn conceptual de un programa, y por lo tanto, no debe ser tomada como absoluta respecto a cïmo ver un programa.

Entorno de ejecuciïn El tïrmino de entorno de ejecuciïn se utiliza para referirse a un programa o una librerïa de cïdigo bïsico que ejecuta otro cïdigo escrito en el mismo y/o en un lenguaje diferente. Por lo tanto, un entorno de ejecuciïn es una colecciïn de funciones de utilidad que apoyan un programa mientras se estï ejecutando, incluyendo el trabajo con el sistema operativo para proporcionar servicios tales como funciones matemïticas, de entrada y de salida. Esto hace que sea innecesario para los programadores reescribir continuamente las capacidades bïsicas especificadas en un lenguaje de programaciïn o proporcionada por un sistema operativo. Puesto que la demarcaciïn entre un entorno de ejecuciïn y un sistema operativo pueden confundirse, el tïrmino entorno de ejecuciïn se utiliza aquï para referirse al cïdigo separado del sistema operativo y/o cïdigo que forma parte de este.

Los primeros entornos de ejecuciïn, como el de FORTRAN, ofrecen caracterïsticas tales como operaciones matemïticas. Otros lenguajes aïaden caracterïsticas mïs sofisticadas, por ejemplo, recolector de basura (gestiïn de memoria) , a menudo en asociaciïn con soporte para objetos. Lenguajes mïs recientes tienden a tener sistemas en tiempo de ejecuciïn considerablemente mïs grandes y con mïs funcionalidades. Muchos lenguajes orientados a objetos tambiïn incluyen un sistema conocido como "despachador" y "cargador de clases". La Mïquina Virtual de Java (JVM) es un ejemplo de este entorno de ejecuciïn: tambiïn interpreta o compila los programas de Java portïtiles binarios (byte-cïdigo) entiempo de ejecuciïn. El entorno de ejecuciïn de lenguaje comïn (CLR) es otro ejemplo de un entorno de ejecuciïn.

Marco de programaciïn... [Seguir leyendo]

 


Reivindicaciones:

1. Un mïtodo implementado por ordenador para ejecutar un programa de aplicaciïn escrito en un cïdigo orientado a objetos, comprendiendo el mïtodo:

instanciar un productor con una salida que es actualmente de interïs como parte de un grafo de productor, donde el cïdigo orientado a objetos incluye mïtodos y declaraciones de dependencia del productor, donde la declaraciïn de dependencia del productor para un mïtodo determinado es identificar en tiempo de ejecuciïn un conjunto de cero o mïs productores, donde un productor es una construcciïn instanciada de tiempo de ejecuciïn, donde cada productor se instancia a partir de una combinaciïn respectiva de una instancia (108) especïfica de una clase y un mïtodo (104) especïfico de esa clase e identifica dicha instancia especïfica y dicho mïtodo especïfico, donde la ejecuciïn de un productor da como resultado el mïtodo identificado por ese productor que se ejecuta en la instancia identificada por ese productor;

intentar generar automïticamente, en respuesta a dicha instancia, un resto del grafo de productor a travïs de la vinculaciïn, y la instanciaciïn si es necesario, de otros productores en base a las declaraciones de dependencia del productor de los mïtodos identificados por los productores ya en el grafo de productor; y

ejecutar los productores en el grafo de productor para determinar la salida actual para el productor de interïs,

donde dicha ejecuciïn comprende paralelizar la ejecuciïn de al menos dos de los productores en el grafo de productor, usando un tiempo de ejecuciïn, en base a las dependencias entre los productores en el grafo de productor.

2. El mïtodo de la reivindicaciïn 1, donde paralelizar la ejecuciïn de los al menos dos de los productores en el grafo de productor comprende:

identificar un conjunto de productores listos entre los productores en el grafo de productor;

determinar un modo de ejecuciïn de cada productor del conjunto de productores listos;

hacer que cada productor del conjunto de productores listos se ejecute en un modo de ejecuciïn correspondiente.

3. El mïtodo de la reivindicaciïn 2, donde el modo de ejecuciïn es uno de entre un modo local de ejecuciïn, un modo de multiprocesamiento y un modo multihilo.

4. El mïtodo de la reivindicaciïn 2, que comprende ademïs:

crear una tarea para cada productor en el conjunto de los productores listos; y

hacer que la tarea se ejecute en el modo de ejecuciïn del productor correspondiente.

5. El mïtodo de la reivindicaciïn 4, donde la tarea de cada productor del conjunto de productores listos comprende una referencia a un productor correspondiente y una referencia a una salida del productor correspondiente.

6. El mïtodo de la reivindicaciïn 2, donde determinar el modo de ejecuciïn de cada productor del conjunto de productores listos comprende:

comprobar un ajuste del modo de ejecuciïn de un mïtodo identificado por un productor correspondiente; anular el ajuste del modo de ejecuciïn del productor correspondiente si un usuario final selecciona otro modo de ejecuciïn en al menos una de entre una clase base, un mïtodo base y una instancia base;

anular el ajuste del modo de ejecuciïn del productor correspondiente en base a un productor por productor si un ajuste del modo de ejecuciïn correspondiente del productor correspondiente se ha cambiado en el grafo de productor; y

anular el ajuste del modo de ejecuciïn correspondiente en el grafo de productor con un modo de ejecuciïn predeterminado si el tiempo de ejecuciïn se ha establecido para anular globalmente el modo de ejecuciïn correspondiente con el modo de ejecuciïn predeterminado.

7. El mïtodo de la reivindicaciïn 1, que comprende ademïs:

adquirir mïtricas relacionadas con la ejecuciïn de los productores en el grafo de productor usando el tiempo de ejecuciïn en base a un productor por productor en respuesta a una solicitud de instrumentaciïn, que comprende,

medir el tiempo de ejecuciïn de los productores en el grafo de productor en base a un productor por productor.

8. El mïtodo de la reivindicaciïn 7, donde adquirir mïtricas comprende ademïs:

medir el tiempo de ejecuciïn de los productores en el grafo de productor en base a un trabajo, donde un trabajo comprende una pluralidad de productores que deben multiprocesarse.

9. El mïtodo de la reivindicaciïn 8, donde adquirir mïtricas comprende ademïs:

evaluar por comparaciïn la ejecuciïn local con la ejecuciïn distante del trabajo en respuesta a una solicitud de evaluaciïn comparativa, que comprende,

ejecutar la pluralidad de productores localmente;

medir el tiempo de ejecuciïn local de la pluralidad de productores;

enviar el trabajo a un grid de procesadores, donde el grid de procesadores ejecuta la pluralidad de productores sustancialmente en paralelo;

medir un tiempo de ejecuciïn total del trabajo;

comparar el tiempo de ejecuciïn local con el tiempo de ejecuciïn distante total; y

medir el tamaïo de los flujos de entrada y el tamaïo de los flujos de salida en base a un productor por productor.

10. Un aparato que comprende:

un tiempo de ejecuciïn dispuesto para ejecutar un cïdigo orientado a objetos con declaraciones de dependencia del productor para mïtodos y ajustes del modo de ejecuciïn de los mïtodos, donde un productor es una construcciïn instanciada de tiempo de ejecuciïn, donde cada productor se instancia a partir de una combinaciïn respectiva de una instancia (108) especïfica de una clase y un mïtodo (104) especïfico de esa clase e identifica dicha instancia especïfica y dicho mïtodo especïfico, donde la ejecuciïn de un productor da como resultado el mïtodo identificado por ese productor que se ejecuta en la instancia identificada por ese productor, donde cada declaraciïn de dependencia del productor para un mïtodo determinado es identificar en tiempo de ejecuciïn un conjunto de cero o mïs productores, y donde dicho tiempo de ejecuciïn incluye:

un mïdulo de generaciïn de grafos de productores automatizado para recibir una designaciïn de un productor de interïs, para aïadir el productor de interïs como parte de un grafo de productor, y para generar automïticamente un resto del grafo de productor a travïs de la vinculaciïn, y la instanciaciïn cuando sea necesario, de otros productores en base a las declaraciones de dependencia del productor de los mïtodos identificados por los productores que ya estïn en el grafo de productor; y

un mïdulo de ejecuciïn de grafo de productor automatizado para ejecutar los productores en el grafo de productor en el orden indicado por el grafo de productor para determinar una salida del productor de interïs, y el mïdulo de ejecuciïn de grafo de productor automatizado comprende,

un mïdulo de paralelizaciïn dispuesto para hacer que al menos dos de la pluralidad de productores se ejecuten en paralelo.

11. El aparato de la reivindicaciïn 10, donde el mïdulo de ejecuciïn de grafo de productor automatizado comprende ademïs:

un mïdulo de ejecuciïn local acoplado al mïdulo de paralelizaciïn para hacer que un productor que tiene un modo de ejecuciïn de la ejecuciïn local se ejecute localmente.

12. El aparato de la reivindicaciïn 11, donde el mïdulo de ejecuciïn de grafo de productor automatizado comprende ademïs un mïdulo de adquisiciïn de mïtricas para medir el tiempo de ejecuciïn local del productor que tiene el modo de ejecuciïn de la ejecuciïn local si se solicita la instrumentaciïn.

13. El aparato de la reivindicaciïn 10, donde el mïdulo de ejecuciïn de grafo de productor automatizado comprende ademïs:

un mïdulo multihilo acoplado al mïdulo de paralelizaciïn para iniciar un mecanismo de agrupaciïn de hilos y para alimentar los hilos disponibles con tareas multihilo correspondientes a los productores que tienen un modo de ejecuciïn de multihilo.

14. El aparato de la reivindicaciïn 13, donde el mïdulo de ejecuciïn de grafo de productor automatizado comprende ademïs un mïdulo de adquisiciïn de mïtricas para medir el tiempo de ejecuciïn de cada uno de los productores que tienen el modo de ejecuciïn de multihilo si se solicita la instrumentaciïn.

15. El aparato de la reivindicaciïn 10, donde el mïdulo de ejecuciïn de grafo de productor automatizado comprende ademïs:

un mïdulo de multiprocesamiento acoplado al mïdulo de paralelizaciïn para instanciar un trabajo, para serializar tareas de multiprocesamiento correspondientes a los productores que tienen un modo de ejecuciïn de multiprocesamiento, para serializar las entradas y las instancias subyacentes de las tareas de multiprocesamiento, para aïadir las tareas de multiprocesamiento serializadas y las entradas serializadas y las instancias subyacentes serializadas al trabajo, y para proporcionar el trabajo a un despachador de grid, despachando el despachador de grid el trabajo a un grid que tiene una pluralidad de procesadores para ejecutar las tareas de multiprocesamiento en el trabajo.

16. El aparato de la reivindicaciïn 15, donde el mïdulo de ejecuciïn de grafo de productor automatizado comprende ademïs un mïdulo de adquisiciïn de mïtricas para medir el tiempo de ejecuciïn de cada una de las tareas de multiprocesamiento correspondientes a los productores que tienen el modo de ejecuciïn de multiprocesamiento, el tiempo y el tamaïo de serializaciïn de las entradas, las salidas y las instancias de la tarea de multiprocesamiento dentro del trabajo, el tiempo y el tamaïo de deserializaciïn de las entradas, las salidas y las instancias de la tarea de multiprocesamiento dentro del trabajo, y el tiempo de ejecuciïn de las tareas de multiprocesamiento dentro del trabajo si se solicita la instrumentaciïn.

17. El aparato de la reivindicaciïn 16, donde, en respuesta a una solicitud de evaluaciïn comparativa, el mïdulo de adquisiciïn de mïtricas debe medir el tiempo de ejecuciïn local de las tareas de multiprocesamiento, para comparar el tiempo de ejecuciïn local de las tareas de multiprocesamiento con el tiempo de ejecuciïn del trabajo, y derivar las mïtricas de comparaciïn.

18. El aparato de la reivindicaciïn 10, donde el tiempo de ejecuciïn comprende ademïs:

una estructura 1049 de decisiïn configurable basada en un productor acoplada al mïdulo de paralelizaciïn para almacenar un modo de ejecuciïn en base a una combinaciïn de una o mïs de entre una clave de clase, una clave de instancia, y una clave de mïtodo de un cliente de tiempo de ejecuciïn, donde el mïdulo de generaciïn de grafo de productor automatizado puede funcionar para determinar el modo de ejecuciïn en base a las selecciones del modo de ejecuciïn, los ajustes del modo de ejecuciïn, y un ajuste de anulaciïn del tiempo de ejecuciïn, si los hay.

19. El aparato de la reivindicaciïn 10, donde el tiempo de ejecuciïn comprende ademïs:

una estructura de grafo de productor acoplada al mïdulo de generaciïn de grafo de productor automatizado y al mïdulo de ejecuciïn de grafo de productor automatizado para almacenar las salidas de la pluralidad de productores, los ajustes del modo de ejecuciïn, y las mïtricas adquiridas, si los hay.

20. El aparato de la reivindicaciïn 10, donde el tiempo de ejecuciïn comprende ademïs:

una estructura de ajuste del tiempo de ejecuciïn para almacenar los ajustes de anulaciïn del modo de ejecuciïn global.

21. Un medio legible por mïquina que comprende una aplicaciïn escrita en un cïdigo orientado a objetos, incluyendo el cïdigo orientado a objetos:

una pluralidad de definiciones de clases que incluye cada una un conjunto de uno o mïs mïtodos, y

una declaraciïn de dependencia del productor para cada mïtodo de dicho conjunto de mïtodos,

donde la declaraciïn de dependencia del productor para uno dado de dichos mïtodos se usa por un tiempo de ejecuciïn para identificar al tiempo de ejecuciïn, con un conjunto de cero o mïs dependencias del productor, un conjunto de cero o mïs productores, y donde un productor es una construcciïn instanciada del tiempo de ejecuciïn, donde cada productor se instancia a partir de una combinaciïn respectiva de una instancia (108) especïfica de una clase y un mïtodo (104) especïfico de esa clase e identifica dicha instancia especïfica y dicho mïtodo especïfico, donde la ejecuciïn de un productor da como resultado el mïtodo identificado por ese productor que se ejecuta en la instancia identificada por ese productor, donde las dependencias del productor representan una secuencia de ejecuciïn de los productores para el tiempo de ejecuciïn, de manera que las dependencias del productor permiten que se paralelice la ejecuciïn de la aplicaciïn usando el tiempo de ejecuciïn.

22. El medio legible por mïquina de la reivindicaciïn 21, donde el cïdigo fuente orientado a objetos incluye ademïs:

un ajuste del modo de ejecuciïn para cada mïtodo de dichos conjuntos de mïtodos.

23. El medio legible por mïquina de la reivindicaciïn 22, donde el modo de ejecuciïn es uno de entre un modo de ejecuciïn local, un modo de multiprocesamiento, y un modo multihilos.

24. El medio legible por mïquina de la reivindicaciïn 22, donde uno o mïs de la pluralidad de las definiciones de clases incluyen ademïs:

uno o mïs ajustes del modo de ejecuciïn proporcionados en la anotaciïn.

25. El medio legible por mïquina de la reivindicaciïn 21, donde el cïdigo fuente orientado a objetos incluye ademïs:

un comando de ajuste del modo de ejecuciïn del tiempo de ejecuciïn de anulaciïn para anular el modo de ejecuciïn a nivel del tiempo de ejecuciïn.

26. El medio legible por mïquina de la reivindicaciïn 21, donde el cïdigo fuente orientado a objetos incluye ademïs:

un comando de ajuste del modo de ejecuciïn del productor de anulaciïn para anular el modo de ejecuciïn en base a un productor por productor.

27. El medio legible por mïquina de la reivindicaciïn 21, donde el cïdigo fuente orientado a objetos incluye ademïs:

28. Un programa de ordenador que, cuando se ejecuta por un procesador, hace que el procesador realice un mïtodo de acuerdo con una cualquiera de las reivindicaciones 1 a 9.

un comando de ajuste del modo de ejecuciïn del ïrbol de decisiïn configurable para anular el modo de ejecuciïn en base a al menos uno de entre una clase, un mïtodo y una instancia.