DE102005056186B4 - Control of computational processes - Google Patents

Control of computational processes Download PDF

Info

Publication number
DE102005056186B4
DE102005056186B4 DE200510056186 DE102005056186A DE102005056186B4 DE 102005056186 B4 DE102005056186 B4 DE 102005056186B4 DE 200510056186 DE200510056186 DE 200510056186 DE 102005056186 A DE102005056186 A DE 102005056186A DE 102005056186 B4 DE102005056186 B4 DE 102005056186B4
Authority
DE
Germany
Prior art keywords
components
message
runtime
data structure
component
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE200510056186
Other languages
German (de)
Other versions
DE102005056186A1 (en
Inventor
Johannes Behr
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Original Assignee
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV filed Critical Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Priority to DE200510056186 priority Critical patent/DE102005056186B4/en
Publication of DE102005056186A1 publication Critical patent/DE102005056186A1/en
Application granted granted Critical
Publication of DE102005056186B4 publication Critical patent/DE102005056186B4/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

Verfahren zur Steuerung der parallelen Ausführung von Rechenprozessen, wobei
a) die Rechenprozesse durch einen Grafen beschrieben sind,
a1) wobei der Graf eine Datenstruktur (12) aufweist, die Knoten und Verknüpfungen zwischen den Knoten umfasst,
a2) wobei die Knoten Komponenten (14–32) mit ausführbarem Programmcode und Nachrichtenschnittstellen entsprechen,
a3) wobei die Verknüpfungen Nachrichtenwegen zwischen den Nachrichtenschnittstellen von Komponenten (14–32) entsprechen,
a4) wobei sich die Datenstruktur (12) zur Laufzeit der Rechenprozesse ändern kann,
b) eine Laufzeitumgebung (5) die Datenstruktur des Grafen und den lauffähigen Programmcode der Komponenten (14–32) einliest und gegebenenfalls zur Laufzeit Informationen über eine Veränderung des Grafen erhält,
c) die Laufzeitumgebung (5) zur Laufzeit parallelisierbare Prozessketten (A; B) von über Nachrichtenwege verknüpfte Komponenten (14–32) danach ermittelt, dass die parallelisierbaren Prozessketten (A; B) keine aktuell aktiven Nachrichtenwege zu anderen Prozessketten aufweisen,
d) die Laufzeitumgebung (5) darauf hin entscheidet, welche der ermittelten parallelisierbaren Prozessketten parallel...
Method for controlling the parallel execution of arithmetic processes, wherein
a) the computational processes are described by a count,
a1) the graph having a data structure (12) comprising nodes and links between the nodes,
a2) wherein the nodes correspond to components (14-32) with executable program code and message interfaces,
a3) where the links correspond to message paths between the message interfaces of components (14-32),
a4) whereby the data structure (12) can change during runtime of the computing processes,
b) a runtime environment (5) reads in the data structure of the count and the executable program code of the components (14-32) and optionally receives information about a change in the count at runtime,
c) the runtime environment (5) at runtime parallelisable process chains (A; B) of components linked via message paths (14-32) then determines that the parallelizable process chains (A; B) have no currently active message paths to other process chains,
d) the runtime environment (5) decides which of the determined parallelizable process chains runs in parallel ...

Figure 00000001
Figure 00000001

Description

Die Erfindung betrifft ein Verfahren und ein Computerprogramm zur Steuerung der parallelen Ausführung von Rechenprozessen, insbesondere von Rechenprozessen, die in Computern oder Computernetzen ausgeführt werden.The The invention relates to a method and a computer program for the control parallel execution of computer processes, in particular of computer processes, in computers or computer networks become.

Die Erfindung betrifft beispielsweise Echtzeitsimulationen und Mixed-Reality-Systeme. Für solche Anwendungen werden zunehmend Computersysteme mit mehreren separaten Prozessoreinheiten (processing units) eingesetzt. Dabei kann es sich um mehrere CPUs und/oder mehrere Prozessoren zur Verarbeitung von grafischen Daten handeln. Häufig werden dabei Daten auf mehrere Bildschirme und/oder Projektoren ausgegeben.The The invention relates, for example, to real-time simulations and mixed-reality systems. For such Applications are increasingly computer systems with several separate Processor units (processing units) used. It can be multiple CPUs and / or multiple processors for processing act graphic data. Often this data is on multiple screens and / or projectors output.

Die weitere Steigerung der Leistung von mikroelektronischen Prozessoren stagniert bei Taktraten von ca. 3,5 GHz. Zumindest mit vertretbarem Aufwand können die Taktraten nicht wesentlich darüber hinaus erhöht werden. Es sind daher so genannte Multicoreprozessoren entwickelt worden, von deren Kernen (Cores) zeitlich parallel Rechenprozesse (Threads) ausgeführt werden können. Prozessoren mit zwei Kernen sind bereits auf dem Markt verfügbar. Die Erfindung betrifft aber nicht nur Multicoreprozessoren, sondern auch Systeme, bei denen zusätzlich oder alternativ weitere Prozessoren zur Verfügung stehen, die Rechenprozesse parallel ausführen können.The further increase the performance of microelectronic processors stagnates at clock rates of about 3.5 GHz. At least with justifiable Effort can the clock rates will not be increased significantly beyond that. Therefore, so-called multi-core processors have been developed, of their cores (cores) temporally parallel computing processes (threads) accomplished can be. Two-core processors are already available in the market. The However, the invention relates not only to multi-core processors, but also also systems where additionally or alternatively, other processors are available, the computing processes can run in parallel.

Hall, M. W. et al.: Maximizing Multiprocessor Performance with the SUIF Compiler. IEEE Computer. Vol. 29, Issue 12. Dec 1996. pp. 84 89 beschreibt einen Compiler für die Parallelisierung von Programmen, die auf einem Multicoreprozessor ablaufen sollen.Hall, M.W. et al .: Maximizing Multiprocessor Performance with the SUIF Compiler. IEEE computer. Vol. 29, Issue 12. Dec 1996. pp. 84 89 describes a compiler for the parallelization of programs running on a multicore processor should expire.

„Symbolic partitioning and scheduling of parameterized task graphs” von M. Cosnard et al., in Proceedings of the International Conference an Parallel and Distributed Systems, 1998, beschreibt das Planen von Parallelisierung bei Task-Grafen."Symbolic partitioning and scheduling of parameterized task graphs "by M. Cosnard et al., In Proceedings of the International Conference Parallel and Distributed Systems, 1998, describes the planning of Parallelization of task counts.

Es ist eine Aufgabe der vorliegenden Erfindung, ein Verfahren und ein Computerprogramm anzugeben, die den Aufwand für die Steuerung von umfangreichen Rechenprozessen erleichtern und zu einer wesentlichen Beschleunigung der Datenverarbeitung führen. Insbesondere soll es möglich sein, aufwendige Verarbeitungen von grafischen Daten auf handelsüblichen Kleincomputern, wie PCs mit einem Multicoreprozessor, in Echtzeit auszuführen. Dabei soll es ferner möglich sein, mit einem einheitlichen, ungeteilten Datensatz zu arbeiten, der z. B. vollständig einer grafischen Echtzeitsimulation entspricht. Die Aufgabe wird durch die Gegenstände der nebengeordneten Ansprüche 1 und 3 gelöst.It is an object of the present invention, a method and a Computer program to specify the cost of control of extensive Facilitate computing and a significant acceleration lead the data processing. In particular, it should be possible be elaborate processing of graphic data on commercial Small computers, such as PCs with a multicore processor, in real time perform. It should also possible be working with a consistent, undivided record the z. B. completely corresponds to a graphic real-time simulation. The task becomes through the objects the sibling claims 1 and 3 solved.

Es wird zur Lösung der Aufgabe vorgeschlagen, mit Daten zu arbeiten, die eine bestimmte Datenstruktur aufweisen. Ausgestaltungen einer solchen Datenstruktur sind bereits für Anwendungen aus dem Bereich der 3-D-Simulation bekannt. Die Datenstruktur weist Komponenten auf, die jeweils von einer Recheneinrichtung ausführbaren Programmcode sowie Nachrichtenschnittstellen zur Übertragung von Nachrichten zwischen Komponenten aufweisen. Solche Datenstrukturen, deren Nachrichtenwege, d. h. deren Verknüpfungen zwischen den Nachrichtenschnittstellen verschiedener Komponenten, zur Laufzeit verändert werden können oder in der Regel auch verändert werden, bezeichnet man als Szenegrafen, wenn sie eine zu simulierende Szene beschreiben. Die Komponenten der Szenegrafen werden auch als Knoten bezeichnet. Ein erweiterter ISO-Standard für die Visualisierung mittels solcher Szenegrafen ist beispielsweise von dem X3D-Consortium definiert worden (X3D Framework & SAI, ISO/IEC 19775:200x.ISO, 2004. http://www.web3d.org/x3d/specifications/x3dspecification.html). Die Knoten oder Komponenten sind die simulationstechnische Beschreibung von im Allgemeinen sichtbaren Objekten, z. B. Fahrzeugen, Personen, Einrichtungsgegenständen oder Landschaftsobjekten oder deren Eigenschaften, wie z. B. Farbe und Textur. Die Knoten können permanent über die gesamte Laufzeit der Simulation bzw. des Rechenvorganges permanent mit anderen Knoten (z. B. mit so genannten Kinderknoten) über Nachrichtenkanten (Nachrichtenwege, die zwischen Nachrichtenschnittstellen der jeweiligen Komponenten existieren) verbunden sein. Nachrichtenkanten können bei Datenstrukturen, für die die vorliegende Erfindung geeignet ist, jedoch auch zwischen einzelnen Komponenten und Aus- und Eingabeschnittstellen der Datenstruktur bestehen oder zur Laufzeit hergestellt oder aufgelöst werden. Die weiter unten beschriebene Verfahrensweise, bei der die Datenstruktur zur Laufzeit analysiert wird, um eine Parallelisierung von Rechenprozessen zu ermöglichen, kann auch solche Nachrichtenkanten analysieren.It becomes the solution the task proposed to work with data that has a specific Have data structure. Embodiments of such a data structure are already for Applications in the field of 3-D simulation known. The data structure has components that are each executable by a computing device Program code and message interfaces for transmission of messages between components. Such data structures, their ways of communication, d. H. their links between the message interfaces different components that can be changed at runtime or usually also changed be called a scenographer if they are one to be simulated Describe the scene. The components of the scenographers are also called Node called. An advanced ISO standard for visualization such scenegraphs are, for example, from the X3D Consortium has been defined (X3D Framework & SAI, ISO / IEC 19775: 200x.ISO, 2004. http://www.web3d.org/x3d/specifications/x3dspecification.html). The nodes or components are the simulation-technical description of generally visible objects, e.g. B. vehicles, persons, Furnishings or landscape objects or their properties, such. B. color and texture. The nodes can permanently over the entire duration of the simulation or the calculation process permanently with other nodes (eg with so-called child nodes) via message edges (Message paths that exist between message interfaces of the respective components exist). Message edges can be found in data structures for which the present invention is suitable, but also between individual Components and output interfaces of the data structure exist or be created or dissolved at runtime. The procedure described below, in which the data structure is analyzed at runtime to parallelize computational processes to enable can also analyze such news edges.

Ferner werden bei einer bevorzugten Ausführungsform der Erfindung nicht nur konventionelle Szenegrafen oder ähnliche Strukturen gesteuert, sondern vorzugsweise auch vollständige Applikationsgrafen, bei der andersartige Softwarebestandteile als Komponenten mit definierten Nachrichtenschnittstellen implementiert sind, etwa virtuelle Sensoren (z. B. eine Komponente, die ein Eingabegerät wie einen Joystick oder eine Maus in der Software repräsentiert und die z. B. die von einem tatsächlich vorhandenen Exemplar des Eingabegeräts Signale erhält, welche den Betriebeszustand beschreiben, beispielsweise „Mausklick links”). Allgemeiner formuliert kann der Applikationsgraf zusätzlich zu den üblichen Komponenten eines Szenegrafen so genannte Animationsknoten als Komponenten aufweisen, die dadurch von den üblichen Komponenten unterschieden werden können, dass sie die Szene nur mittelbar, über die üblichen Komponenten beeinflussen. Beispielsweise finden in den Animationsknoten Berechnungen statt, als deren Ergebnis Attribute und/oder Nachrichtenkanten von anderen Komponenten verändert werden.Further, in a preferred embodiment of the invention, not only conventional scenographers or similar structures are controlled, but also preferably complete application graphs implementing other types of software components as components having defined message interfaces, such as virtual sensors (eg, a component that includes an input device such as represents a joystick or a mouse in the software and receives, for example, the signals from an actually existing copy of the input device which describe the operating state, for example "left mouse click"). More generally, in addition to the usual components of a scenographer, the application graph may include so-called animation nodes as components that are thereby derived from can be distinguished from the usual components that they affect the scene only indirectly, over the usual components. For example, calculations take place in the animation nodes, as a result of which attributes and / or message edges of other components are changed.

Der Applikationsgraf besteht vollständig aus Komponenten mit Nachrichtenschnittstellen und Nachrichtenkanten, die die Nachrichtenschnittstellen miteinander verbinden. Dabei können Nachrichtenschnittstellen definiert sein, die zu keinem Zeitpunkt der Laufzeit, zeitweise während der Laufzeit oder permanent über Nachrichtenkanten mit anderen Nachrichtenschnittstellen (einschließlich Schnittstellen der Datenstruktur nach außen) verbunden sind. Unter einem Applikationsgrafen wird in dieser Beschreibung jede Datenstruktur verstanden, die wie zuvor beschrieben strukturiert ist, auch wenn sie nicht oder nur teilweise eine grafisch darstellbare Szene betrifft.Of the Application graph is complete components with message interfaces and message edges, which connect the message interfaces. This can be message interfaces be defined, at no point in time, at times while the term or permanently over Message edges with other message interfaces (including interfaces the data structure to the outside) are connected. An application graph is used in this specification understood any data structure structured as described above is, even if it is not or only partially a graphically representable scene concerns.

Die Nachrichtenkanten können monodirektional sein, d. h. Nachrichten nur in einer Richtung (entweder von einer bestimmten Komponente weg oder zu dieser Komponente) transportieren. Alternativ können bidirektionale Nachrichtenkanten definiert sein, die Nachrichten in beide Richtungen transportieren. Vorzugsweise werden solche bidirektionalen Kanten jedoch bei der erfindungsgemäßen Steuerung von Rechenprozessen in zwei oder mehrere monodirektionale Nachrichtenkanten aufgelöst. Alternativ oder zusätzlich können lediglich Teilbereiche der Datenstruktur (auf eine Weise, die noch genauer beschrieben wird) für die Parallelisierung von Rechenprozessen ausgewählt werden, wobei diese Bereiche ausschließlich monodirektionale Nachrichtenkanten aufweisen.The Message edges can be monodirectional, d. H. Messages in one direction only (either from a particular component or to that component). Alternatively you can bidirectional message edges define the messages transport in both directions. Preferably, such bidirectional edges however, in the control according to the invention of computational processes into two or more monodirectional message edges dissolved. Alternatively or in addition can only parts of the data structure (in a way that still is described in more detail) for the parallelization of computational processes are selected, these areas exclusively have monodirectional message edges.

Ein wesentlicher Gedanke der vorliegenden Erfindung ist, dass erst zur Laufzeit analysiert wird, welche Prozessketten von auszuführenden Rechenprozessen zumindest über einen Teil-Zeitraum der Laufzeit parallel zueinander ausgeführt werden können. Dies schließt nicht aus, dass bereits der Programmierer Prozesse definiert hat, die zur Laufzeit parallel ausgeführt werden können, z. B. parallele Prozesse innerhalb einer einzigen Komponente. Die erfindungsgemäße Identifizierung von parallelisierbaren Prozessen zur Laufzeit hat jedoch den Vorteil, dass die Programmierung wesentlich erleichtert ist. Außerdem kann der Programmierer oder das Programmierer-Team insbesondere bei komplexen Applikationen nicht für jeden Systemzustand voraussehen, welche Prozesse effektiv parallelisierbar sind. Z. B. bei komplexen Szenegrafen, deren Komponenten zur Laufzeit Nachrichtenkanten und/oder Zustände von Komponenten verändern können, ist eine Identifizierung von parallelisierbaren Prozessketten zur Laufzeit im Vorteil. Andernfalls würden zahlreiche an sich parallelisierbare Prozesse nicht als solche erkannt werden.One essential idea of the present invention is that only for Running time is analyzed, which process chains of to be executed Arithmetic processes at least over a partial period of the term to run parallel to each other can. This concludes not that the programmer has already defined processes, which run in parallel at runtime can be z. For example, parallel processes within a single component. The identification according to the invention of parallelizable processes at runtime, however, has the advantage that the programming is much easier. In addition, can the programmer or the programmer team especially in complex Applications not for predict each system state, which processes can be effectively parallelized are. For example, for complex scenegraphs, their components at runtime Message edges and / or states of Change components can, is an identification of parallelizable process chains at runtime in advantage. Otherwise, would numerous parallel processes are not recognized as such become.

Der Erfindung liegt die Erkenntnis zugrunde, dass das Grundproblem für eine automatische Parallelisierung von Rechenprozessen einer Applikation darin besteht zu verhindern, dass mehr als ein Rechenprozess gleichzeitig schreibend und/oder lesend auf dieselben Daten zugreift. Daher werden vorzugsweise keinerlei Daten der Datenstruktur kopiert, sondern vorzugsweise ausschließlich die Nachrichtenkanten zum Transport der Daten (bzw. der entsprechenden Signale) verwendet. Die Datenstruktur (definiert durch die Komponenten mit den zugehörigen Nachrichtenschnittstellen und durch die entsprechenden vorhandenen Nachrichtenkanten) kann analysiert werden. Insbesondere kann festgestellt werden, dass bestimmte Komponenten zu einem gegebenen (gegenwärtigen) Zeitpunkt der Laufzeit der Applikation keine Nachrichten über ihre Nachrichtenschnittstellen ausgeben. Solche Komponenten bilden also das Ende einer Prozesskette. Nun ist es möglich, die zu diesen End-Komponenten führenden Nachrichtenkanten zurückzuverfolgen, bis eine Komponente identifiziert wird, die aktuell Nachrichtenkanten aufweist, welche zu verschiedenen Komponenten führen (und im betrachteten, analysierten Zeitraum auch benutzt werden). Auf diese Weise können Prozessketten identifiziert werden, an deren Anfang sich eine Komponente befindet, die Nachrichten von einer oder mehreren anderen Komponenten empfangen muss, bevor der Teil des Rechenprozesses ausgeführt werden kann, der der Anfangskomponente entspricht. Diese Anfangskomponente der Prozesskette gibt Nachrichten ausschließlich an eine folgende Komponente der Prozesskette aus. Diese folgende Komponente wiederum gibt ausschließlich Nachrichten an noch eine folgende Komponente aus (sofern überhaupt noch in der Prozesskette vorhanden) usw., bis die Endkomponente erreicht ist. Insbesondere handelt es sich bei sämtlichen Nachrichtenkanten der Prozesskette um monodirektionale Nachrichtenkanten.Of the The invention is based on the recognition that the basic problem for an automatic Parallelization of computational processes of an application consists therein To prevent more than one computational process writing at the same time and / or reading the same data. Therefore, preferably does not copy any data of the data structure, but preferably exclusively the message edges for transporting the data (or the corresponding Signals) used. The data structure (defined by the components with the associated message interfaces and by the corresponding existing message edges) can be analyzed become. In particular, it can be stated that certain components to a given (present) At the time of application the application does not have any messages about it Output message interfaces. So such components form the end of a process chain. Now it is possible to get to those end components leading news boards trace, until a component is identified that currently has message edges which lead to different components (and in the considered, analyzed period also be used). In this way, process chains can be identified with a component at the beginning, receive the messages from one or more other components must be done before the part of the computational process that matches the initial component. This initial component of the process chain specifies messages exclusively a following component of the process chain. This following component again, there are only Send messages to another component (if any still present in the process chain), etc., until the end component is reached. In particular, all message edges are the process chain around monodirectional message edges.

Insbesondere kann eine Vielzahl solcher Prozessketten zu einem gegenwärtigen Zeitpunkt der Laufzeit existieren. Komplexe und aufwendige 3-D-Simulationen weisen z. B. mehrere Tausend solcher isolierter Prozessketten auf, die lediglich Nachrichten empfangen können (oder auch völlig isoliert sind, d. h. keine Nachrichten empfangen), aber keine Nachrichten an Komponenten ausgeben, die sich außerhalb der Prozesskette befinden. Sobald die Eingangsnachrichten für eine solche Prozesskette feststehen, etwa weil andere Teilprozesse beendet sind, die diese Nachrichten ausgeben, kann die jeweilige Prozesskette ausgeführt werden. Die Ausführbarkeit wird beispielsweise in ein Register eingetragen und die in dem Register eingetragenen ausführbaren Prozessketten werden nacheinander auf die zur Verfügung stehenden parallel arbeitenden Prozessoren verteilt. Sind beispielsweise zwei parallele Prozessoren vorhanden, Prozessor A und Prozessor B, und enthält das Register der ausführbaren Prozessketten z. B. vier Prozessketten, P1, P2, P3, P4, so wird z. B. die Ausführung der Prozesskette P1 durch Prozessor A gestartet. Unmittelbar danach wird die Ausführung von Prozesskette P2 durch Prozessor B gestartet. Wird einer der beiden Prozessoren mit seiner Verarbeitung fertig, wird unmittelbar danach die Ausführung der nächstfolgenden Prozesskette P3 durch den Prozessor gestartet usw.In particular, a plurality of such process chains may exist at a current time of runtime. Complex and complex 3-D simulations have z. For example, there are several thousand such isolated process chains that can only receive messages (or are completely isolated, ie receive no messages), but do not output messages to components that are outside the process chain. As soon as the input messages for such a process chain are known, for example because other subprocesses that output these messages are terminated, the respective process chain can be executed. The executability is for example entered in a register and the executable pro registered in the register Stress chains are distributed successively to the available parallel processors. For example, if there are two parallel processors, processor A and processor B, and contains the register of executable process chains z. B. four process chains, P1, P2, P3, P4, z. B. the execution of the process chain P1 started by processor A. Immediately thereafter, the execution of process chain P2 by processor B is started. If one of the two processors cope with its processing, immediately after the execution of the next process chain P3 by the processor is started etc.

Zuvor sind Komponenten (z. B. die Endkomponenten der Prozessketten) erwähnt worden, von denen keine Nachrichten mehr an weitere Komponenten gesendet werden, also in einem bestimmten Zustand der Datenstruktur keine (weiteren) Nachrichtenkanten mehr existieren, die aktiv sind. Jedoch schließt dies nicht aus, dass nach der Abarbeitung der auszuführenden Rechenprozesse einer Komponente, einer Prozesskette und/oder zumindest in Teilen der Datenstruktur Daten bzw. Signale zu anderen Zwecken aus der Datenstruktur ausgegeben werden. Insbesondere werden bei Knoten eines Szenegrafen Informationen über den gegenwärtigen Zustand seiner Attribute (z. B. dass das Farb-Attribut den Wert „rot” hat) ausgegeben, um die Szene grafisch darstellen zu können.before have been mentioned components (eg the end components of the process chains), which no longer sends messages to other components become, thus in a certain state of the data structure none (more) message edges exist that are active. However, this concludes does not mean that after processing the computational processes to be executed Component, a process chain and / or at least in part of Data structure Data or signals for other purposes from the data structure be issued. In particular, nodes of a scene information about the current State of its attributes (eg that the color attribute has the value "red"), to be able to graphically represent the scene.

Die Erfindung ist jedoch nicht auf den zuvor beschriebenen Fall beschränkt, bei dem es ausschließlich einseitig isolierte oder vollständig isolierte Prozessketten der beschriebenen Art gibt, welche parallelisiert werden. Alternativ oder zusätzlich können Prozessketten zur Parallelprozessierung ausgewählt werden, die zumindest eine Komponente enthalten, welche Nachrichten an mehrere der anderen Komponenten derselben Prozesskette ausgibt oder von mehreren anderen Komponenten derselben Prozesskette empfängt. Allgemeiner formuliert ist es daher für die Parallelisierung der Prozessketten lediglich erforderlich, dass die einzelnen für die Parallelisierung identifizierten Prozessketten keine aktuell aktiven Nachrichtenkanten zu anderen Prozessketten aufweisen, welche parallel ausgeführt werden sollen.The However, the invention is not limited to the case described above it exclusively one-sided isolated or complete Isolated process chains of the type described exist which are parallelized become. Alternatively or in addition can Process chains for parallel processing are selected, the at least one Component containing messages to several of the other components the same process chain or from several other components the same process chain. It is therefore more general for the parallelization of Process chains only required that the individual for the parallelization identified process chains no currently active message edges to other process chains, which are executed in parallel should.

Bei einem für die Praxis typischen Ablauf der Applikation wird wiederholt zyklisch verfahren, wobei in jedem Zyklus zunächst Eingangssignale verarbeitet werden (z. B. durch einen Benutzer generierte Befehle zu der Datenstruktur übermittelt werden), dann die eigentlichen Prozesse eines Zyklus ausgeführt werden und anschließend Daten zur Ausgabe (z. B. auf einen Bildschirm) gebracht werden. Bei einer solchen zyklischen Vorgehensweise wird die Analyse der Datenstruktur zur Feststellung, welche Prozessketten parallel ausgeführt werden können, vorzugsweise dann durchgeführt, wenn die Eingangssignale vorliegen. Zu diesem Zeitpunkt eines Zyklus steht jeweils fest, welche Struktur in den Daten bezüglich der Nachrichtenwege vorliegt, und welche zusätzlichen, durch die Eingangssignale übermittelten Informationen berücksichtigt werden müssen. Alternativ kann zugelassen werden, dass zunächst die Datenstruktur abhängig von den Eingangssignalen verändert wird und erst dann die Analyse auf parallelisierbare Prozessketten durchgeführt wird. Vorzugsweise erst nach der Ausführung der abzuarbeitenden Prozesse wird zugelassen, dass die Struktur sich wieder verändern kann. Beispielsweise kann es einzelnen oder allen Komponenten erlaubt sein, abhängig von den gerade im Zyklus ausgeführten Prozessen die Datenstruktur zu verändern (z. B. eigene Attribute oder Attribute von anderen Komponenten zu verändern und/oder Nachrichtenkanten zu löschen, zu verändern und/oder neu zu erzeugen; alternativ oder zusätzlich ist es möglich, dass Komponenten in die Struktur eingefügt werden oder daraus entfernt werden).at one for The typical practice of the application is repeated cyclically method, wherein in each cycle initially processes input signals are transmitted (e.g., commands generated by a user to the data structure then the actual processes of a cycle are executed and subsequently Data for output (eg on a screen) are brought. In such a cyclical approach, the analysis of the Data structure for determining which process chains are executed in parallel can, preferably then performed when the input signals are present. At this time of a cycle each time determines which structure in the data regarding the message paths present, and what additional, by the input signals transmitted Information taken into account Need to become. Alternatively, it may be allowed to firstly change the data structure depending on changed the input signals and only then the analysis on parallelizable process chains carried out becomes. Preferably only after the execution of the processes to be processed allowed the structure to change again. For example, can It may be allowed to single or all components, depending on the one in the cycle Processes to change the data structure (eg own attributes or modify attributes of other components and / or message edges to delete, to change and / or to recreate; alternatively or additionally, it is possible that Components are inserted or removed from the structure become).

Bei einer Weiterbildung kann es einzelnen Komponenten der Struktur erlaubt sein, die Struktur auch während der Abarbeitung zu verändern. In diesem Fall sollte jedoch festgelegt sein, in welchem Umfang die jeweilige Komponente die Struktur verändern darf. Beispielsweise kann verlangt werden, dass die Komponente vor der Abarbeitung der Prozesse der Laufzeitumgebung mitteilt, in welchem Umfang sie Änderungen der Struktur durchführt. Die Laufzeitumgebung kann dann Bereiche der Struktur, die von der Veränderung betroffen sind oder betroffen sein können, ausschließen, d. h. in diesen Bereichen können keine parallelisierbaren Prozessketten liegen.at In a further education it can be allowed individual components of the structure be, the structure also during to change the processing. In this case, however, it should be determined to what extent the respective component is allowed to change the structure. For example may be required to request the component before processing Processes of the runtime environment tells to what extent they changes the structure performs. The runtime environment can then have areas of the structure created by the change exclude, d. H. in these areas can there are no parallelizable process chains.

Nicht zu Beschränkungen hinsichtlich der für eine Parallelisierung in Frage kommenden Prozessketten führt es dagegen, wenn eine Komponente ausschließlich ihren eigenen Zustand ändert, sobald sie Nachrichten empfangen hat, sofern dabei die von der Komponente ausgehenden Nachrichtenkanten nicht betroffen sind. Z. B. kann die Komponente ihre eigenen Attribute ändern.Not to restrictions in terms of for a Parallelization of suitable process chains leads if a component exclusively changes her own state, as soon as it has received messages, provided that of the component outgoing message edges are not affected. For example, the Component to change their own attributes.

Insbesondere können die Rechenprozesse mit Daten einer Datenstruktur ausgeführt werden und kann die Datenstruktur eine Mehrzahl von Komponenten aufweisen, die jeweils von einer Recheneinrichtung ausführbaren Programmcode sowie Nachrichtenschnittstellen zur Übertragung von Nachrichten zwischen Komponenten aufweisen. Zur Laufzeit können in der Datenstruktur Nachrichtenwege, d. h. Verknüpfungen zwischen den Nachrichtenschnittstellen verschiedener Komponenten ermittelt werden. Aus den ermittelten Nachrichtenwegen kann eine Mehrzahl von Prozessketten mit innerhalb der Datenstruktur auszuführenden Rechenprozessen ermittelt werden, wobei zwischen verschiedenen Exemplaren der Prozessketten, zumindest in einem gegenwärtigen Zeitraum der Ausführung der Rechenprozesse, keine Nachrichtenwege existieren, über die eine Nachricht zu übertragen ist. Dabei wird zumindest ein Teil der Prozessketten zeitlich parallel zueinander ausgeführt.In particular, the computing processes can be performed with data of a data structure and the data structure can comprise a plurality of components, each of which has program code executable by a computing device and message interfaces for the transmission of messages between components. At runtime, message paths, ie links between the message interfaces of various components, can be determined in the data structure. From the determined message paths, a plurality of process chains with computing processes to be executed within the data structure can be determined, wherein between different copies the process chains, at least in a current period of execution of the computing processes, no message paths exist over which a message is to be transmitted. At least part of the process chains are executed parallel to each other in time.

Dabei kann zumindest ein Teil der ermittelten Prozessketten jeweils eine Mehrzahl der Komponenten aufweisen, die innerhalb der jeweiligen Prozesskette über Nachrichtenwege miteinander verknüpft, insbesondere sequenziell verkettet, sind.there At least a part of the determined process chains can each have one Have a majority of components within each Process chain over Message paths linked together, in particular sequentially chained, are.

Eine Anordnung kann einen Computer oder ein Computernetzwerk mit einem Arbeitsspeicher aufweisen, der der beim Betrieb des Computers oder Computernetzwerks Daten und zumindest ein Computerprogramm enthält, wobei in den Arbeitsspeicher eine aus Daten bestehende Datenstruktur geladen ist, die eine Mehrzahl von Komponenten aufweist, die jeweils von dem Computer oder Computernetzwerk ausführbaren Programmcode sowie Nachrichtenschnittstellen zur Übertragung von Nachrichten zwischen Komponenten aufweisen und wobei in den Arbeitsspeicher eine Laufzeitumgebung geladen ist, die ausgestaltet ist, zur Laufzeit in der Datenstruktur Nachrichtenwege, d. h. Verknüpfungen zwischen den Nachrichtenschnittstellen verschiedener Komponenten zu ermitteln. Aus den ermittelten Nachrichtenwegen kann die Laufzeitumgebung eine Mehrzahl von Prozessketten mit innerhalb der Datenstruktur auszuführenden Rechenprozessen ermitteln, wobei zwischen verschiedenen Exemplaren der Prozessketten, zumindest in einem gegenwärtigen Zeitraum der Ausführung der Rechenprozesse, keine Nachrichtenwege existieren, über die eine Nachricht zu übertragen ist. Zumindest einen Teil der Prozessketten kann die Laufzeitumgebung zeitlich parallel zueinander ausführen.A Arrangement can be a computer or a computer network with one Have memory that during operation of the computer or computer network Contains data and at least one computer program, wherein in the main memory data structure consisting of data is loaded, the plurality components, each executable by the computer or computer network Program code and message interfaces for transmission of messages between components and wherein in the Memory is loaded into a runtime environment that is designed to work is, at runtime in the data structure message paths, d. H. connections between the message interfaces of different components to investigate. The runtime environment can be determined from the determined message paths a plurality of process chains with within the data structure be executed Calculating computing processes, taking between different copies the process chains, at least in a current period of execution of the Computing processes, no message paths exist over the to transmit a message is. At least part of the process chains may be the runtime environment run parallel to each other in time.

Bei dem Arbeitsspeicher kann es sich insbesondere auch um einen verteilten Arbeitsspeicher handeln, d. h. um einen Arbeitsspeicher, der voneinander separate Speicher und/oder Speicherbereiche aufweist, die z. B. über ein Bussystem und/oder oder Datenübertragungsnetz wie z. B. das Internet miteinander verbunden sind.at The main memory may in particular also be a distributed one Work memory, d. H. to a working memory of each other has separate memory and / or memory areas, the z. B. over Bus system and / or data transmission network such as B. the Internet are interconnected.

Offenbart wird hier ferner ein Computerprogrammprodukt, das computerlesbare Programmmittel aufweist, die einen Computer oder ein Computernetzwerk veranlassen, Rechenprozesse mit Daten einer von dem Computerprogrammprodukt separaten Datenstruktur auszuführen, wobei die Datenstruktur eine Mehrzahl von Komponenten aufweist, die jeweils von dem Computer oder Computernetzwerk ausführbaren Programmcode sowie Nachrichtenschnittstellen zur Übertragung von Nachrichten zwischen Komponenten aufweisen. Ferner ist das Computerprogrammprodukt insbesondere so ausgestaltet, dass es die Merkmale der oben beschriebenen Laufzeitumgebung aufweist.Disclosed Also, here is a computer program product that is computer readable Program means comprising a computer or a computer network induce computational processes with data from one of the computer program product execute a separate data structure, wherein the data structure comprises a plurality of components, the each executable by the computer or computer network Program code and message interfaces for transmission of messages between components. Further, the computer program product in particular designed to have the features of those described above Runtime environment has.

Unter einem Computerprogrammprodukt wird ein handelbares Produkt verstanden. Es kann grundsätzlich in beliebiger Form vorliegen, so zum Beispiel auf Papier oder einem computerlesbaren Datenträger und kann insbesondere über ein Datenübertragungsnetz verteilt werden.Under A computer program product is understood to be a tradeable product. It basically can be present in any form, such as on paper or a computer readable medium and in particular over a data transmission network be distributed.

Insbesondere kann das Computerprogrammprodukt auf einem für den unmittelbaren Zugriff eines Computers oder Computernetzwerks und/oder für die Übertragung zu einem Computer oder Computernetzwerk geeigneten Medium gespeichert sein.Especially can the computer program product on one for immediate access a computer or computer network and / or for transmission stored on a computer or computer network suitable medium be.

Außerdem wird offenbart ein Datenträger, insbesondere das in dem vorangegangenen Absatz genannte Medium, auf dem die oben genannte Laufzeitumgebung gespeichert ist.In addition, will discloses a data carrier, in particular the medium mentioned in the previous paragraph, on which the above stored runtime environment is stored.

Bezüglich der Terminologie, die in dieser Beschreibung verwendet wird und die aus der Grafen-Theorie in Anwendung auf Computerprogramme entnommen ist, wird auf den folgenden Artikel in der freien Enzyklopädie Wikipedia verwiesen: „Graph Theory” (http://en.wikipedia.org/wiki/Graph_theory).Regarding the Terminology used in this description and the taken from the count theory in application to computer programs is on the following article in the free encyclopedia Wikipedia referenced: "Graph Theory" (http://en.wikipedia.org/wiki/Graph_theory).

Im Folgenden wird die Erfindung anhand von Ausführungsbeispielen näher erläutert. Die Erfindung ist jedoch nicht auf die Beispiele beschränkt. Im Einzelnen zeigen:in the Below, the invention will be explained in more detail with reference to embodiments. The However, the invention is not limited to the examples. in the Show individual:

1 eine Anordnung zur Ausführung einer besonders bevorzugten Variante des erfindungsgemäßen Verfahrens, 1 an arrangement for carrying out a particularly preferred variant of the method according to the invention,

2 einen Applikationsgrafen mit zwei parallelisierbaren Prozessketten, 2 an application graph with two parallelizable process chains,

3 ein weiteres Beispiel für einen Applikationsgrafen, der eine Vielzahl von parallelisierbaren Prozessketten aufweist, und 3 a further example of an application graph having a plurality of parallelizable process chains, and

4 einen Teil eines Applikationsgrafen mit einer parallelisierbaren Prozesskette, die sich von den in 2 und 3 dargestellten Prozessketten unterscheidet. 4 a part of an application graph with a parallelizable process chain, which differs from the ones in 2 and 3 differentiates between different process chains.

Die in 1 dargestellte Anordnung weist eine Laufzeitumgebung 5 auf, die jeweils unmittelbar mit einer Uhr 4, weiterer Software 7, 8 und mit Daten 3 verbunden ist. Über die jeweiligen Verbindungen können Daten und/oder entsprechende Signale übertragen werden. Dabei ist die Verbindung zwischen der Laufzeitumgebung 5 und den Daten 3 bidirektional, d. h. es können Signale in beide Richtungen übertragen werden. Außerdem ist die Laufzeitumgebung mit Eingabe- und/oder Ausgabegeräten 11, wie beispielsweise einer Tastatur, einem Joystick, einer Maus, einem Bildschirm, einer Datenbrille und/oder einem Drucker, sowie optional mit anderen Teilen eines Computernetzwerks oder Datennetzwerks verbunden. Von den Eingabegeräten können Signale zur Steuerung der Laufzeitumgebung und damit zur Steuerung der in den Daten 3 abgebildeten Prozesse an die Laufzeitumgebung 5 gesendet werden, insbesondere ein Startsignal und Signale zur Beeinflussung der durch die Daten 3 gebildeten Datenstruktur, z. B. des Zustandes von Komponenten und der Nachrichtenkanten (d. h. Nachrichtenwege) in den Daten 3. Die Laufzeitumgebung 5 hat daher die Eigenschaft, derartige Signale optional aufzubereiten und/oder an die Daten 3 weiterzuleiten.In the 1 The arrangement shown has a runtime environment 5 on, each directly with a clock 4 , other software 7 . 8th and with data 3 connected is. Data and / or corresponding signals can be transmitted via the respective connections. Where is the connection between the runtime environment 5 and the data 3 bidirectional, ie signals can be transmitted in both directions. In addition, the runtime environment is with input and / or output devices 11 , as For example, a keyboard, a joystick, a mouse, a screen, a data glasses and / or a printer, and optionally connected to other parts of a computer network or data network. From the input devices, signals can be used to control the runtime environment and thus to control the data 3 mapped processes to the runtime environment 5 be sent, in particular a start signal and signals to influence by the data 3 formed data structure, eg. The state of components and the message edges (ie message paths) in the data 3 , The runtime environment 5 therefore has the property of optionally preparing such signals and / or the data 3 forward.

Gemäß einer bevorzugten Ausführungsform sind die Daten 3 derartig strukturiert, dass Sie eine Mehrzahl von Komponenten aufweisen, die jeweils einen von einer Recheneinrichtung ausführbaren Programmcode sowie Nachrichtenschnittstellen zur Übertragung von Nachrichten zwischen Komponenten aufweisen. Ferner ist die von den Daten 3 gebildete Datenstruktur derart ausgestaltet, dass zur Laufzeit in der Datenstruktur Nachrichtenkanten, d. h. Verknüpfungen zwischen den Nachrichtenschnittstellen verschiedener Komponenten, ermittelt werden können. Beispiele für Anwendungen einer solchen Datenstruktur sind insbesondere Virtual-Reality-Simulationen, Augmented-Reality-Anwendungen und Mixed-Reality-Anwendungen oder allgemeiner formuliert Simulationen von räumlichen (3D) Prozessen. Ein besonderes Merkmal der in 1 dargestellten Anordnung ist, dass die von den Daten 3 gebildete Datenstruktur lediglich von einer einzigen Steuereinheit Signale zur Steuerung der in der Datenstruktur ablaufenden Rechenprozesse empfangen kann, nämlich von der Laufzeitumgebung 5. Insbesondere kann keine andere Software der Anordnung, z. B. weitere Simulationssoftware 7 oder eine weitere Laufzeitumgebung 8, steuernd auf die Daten 3 einwirken. Lediglich ein lesender Zugriff ist von der weiteren Software oder anderen Steuereinrichtungen auf die Daten 3 möglich. Zwar werden die Daten 3 z. B. in einen Arbeitsspeicher eines Computers oder eines Computernetzwerkes geladen und vorzugsweise durch die Datenstruktur definierte Rechenprozesse zumindest teilweise parallel in mehreren (nicht in 1 dargestellten) Recheneinheiten des Computers oder des Computernetzwerkes ausgeführt. Jedoch obliegt die Steuerung, welche Rechenprozesse zu welcher Zeit ausgeführt werden oder welche Rechenprozesse zu welcher Zeit zur Ausführung freigegeben werden, allein der Laufzeitumgebung 5.According to a preferred embodiment, the data is 3 structured such that they have a plurality of components, each having a program code executable by a computing device and message interfaces for the transmission of messages between components. Furthermore, that is from the data 3 formed data structure such that at runtime in the data structure message edges, ie links between the message interfaces of various components, can be determined. Examples of applications of such a data structure are in particular virtual reality simulations, augmented reality applications and mixed reality applications or, more generally, simulations of spatial (3D) processes. A special feature of in 1 The arrangement shown is that of the data 3 formed data structure only from a single control unit can receive signals for controlling the running in the data structure computing processes, namely the runtime environment 5 , In particular, no other software of the arrangement, for. B. further simulation software 7 or another runtime environment 8th , controlling the data 3 act. Only read access is from the other software or other controllers to the data 3 possible. Although the data 3 z. B. loaded into a working memory of a computer or a computer network and preferably defined by the data structure computing processes at least partially in parallel in several (not in 1 shown) computing units of the computer or the computer network. However, the control of which computational processes are executed at what time, or which computational processes are released at which time for execution, is the sole responsibility of the runtime environment 5 ,

Die Laufzeitumgebung kann insbesondere eine separat speicherbare und/oder separat von anderer Software in den Arbeitsspeicher des Computers oder des Computernetzwerks ladbare Software sein, die z. B. bezüglich ihrer Schnittstellen zu den Daten 3 im Wesentlichen existierenden Standards entspricht, etwa dem X3D-Standard. Allerdings sind die Zugriffsmöglichkeiten der Laufzeitumgebung für lesenden Zugriff auf die Datenstruktur und für die Steuerung der in der Datenstruktur ablaufenden Prozesse (die beispielsweise auch die Struktur der Datenstruktur verändern können) gegenüber bisherigen Lösungen erweitert.In particular, the runtime environment may be software that can be separately stored and / or downloaded separately from other software into the main memory of the computer or of the computer network. As regards their interfaces to the data 3 essentially conforms to existing standards, such as the X3D standard. However, the access possibilities of the runtime environment for read access to the data structure and for the control of the processes running in the data structure (which, for example, can also change the structure of the data structure) are extended over previous solutions.

Die Datenstruktur wird beispielsweise wie im Folgenden beschrieben erstellt. Zunächst werden die Komponenten bzw. Knoten von einem Programmierer definiert. Z. B. werden hierbei die Merkmale (Attribute und eventuelle weitere Merkmale) und Nachrichtenschnittstellen eines Komponenten-Typs in einem XML-File (Extended Markup Language-File) definiert. Die Nachrichtenschnittstellen definieren alle Möglichkeiten der Eingabe und/oder Ausgabe (so genannte 'Slots') und somit die möglichen Nachrichtenverbindungen (Kanten) zu anderen Komponenten.The For example, data structure is created as described below. First the components or nodes are defined by a programmer. For example, the characteristics (attributes and possible further Features) and message interfaces of a component type in defined in an XML file (Extended Markup Language File). The message interfaces define all possibilities the input and / or output (so-called 'slots') and thus the possible communication links (Edges) to other components.

Es wird weiterhin der Einflussbereich der Komponente definiert und ebenfalls in dem XML-File abgelegt. Der Einflussbereich definiert, wieweit Instanzen der Komponenten beim Verarbeiten von Nachrichten (also zur Laufzeit) den Graphen verändern können. Zum Beispiel kann definiert sein, dass die Komponente

  • (a) keinen Einflussbereich hat, d. h. es werden allenfalls interne Zustände der Komponente verändert. Die Komponente kann den Grafen ansonsten nicht verändern.
  • (b) in ihrer lokalen Umgebung Komponenten und Kanten verändern darf, z. B. lediglich in der Reichweite, die durch ihre existierenden Kanten definiert ist, d. h. die Komponente darf nur diejenigen Kanten verändern oder neu hinzufügen, die sie unmittelbar mit einer weiteren Komponente verbindet, und außerdem lediglich den Zustand von Komponenten verändern, mit denen sie über eine Kante verbunden ist.
  • (c) global, d. h. über die gesamte Struktur hinweg Komponenten und Nachrichtenkanten verändern darf. Solchen Komponenten wird durch die Laufzeitumgebung vorzugsweise verboten, ihre Manipulation auszuführen, bevor alle in einem Zyklus auszuführenden Rechenprozesse ausgeführt sind. Alternativ kann die Manipulation vor der Analyse der Datenstruktur und der Ausführung von Rechenprozessen erlaubt werden.
It also defines the sphere of influence of the component and also stores it in the XML file. The sphere of influence defines to what extent instances of the components can change the graph when processing messages (ie at runtime). For example, it can be defined that the component
  • (a) has no sphere of influence, ie at most internal states of the component are changed. The component can not change the count otherwise.
  • (b) may alter components and edges in its local environment, e.g. For example, only in the range defined by its existing edges, ie, the component may only modify or re-add those edges that directly connect it to another component, and also merely change the state of components with which it passes Edge is connected.
  • (c) global, that is allowed to change components and message edges across the entire structure. Such components are preferably prohibited by the runtime environment from performing their manipulation before all computational processes to be executed in a cycle are executed. Alternatively, manipulation may be allowed prior to analysis of the data structure and execution of computational processes.

Nach der Definition der Komponenten-Typen wird mithilfe eines systemspezifischen Softwarewerkzeuges aus der abstrakten Beschreibung der Komponenten z. B. C++-Code generiert.To The definition of the component types is made using a system-specific Software tool from the abstract description of the components z. B. C ++ code generated.

Anschließend wird der Programmcode von dem Software-Entwickler um Funktionen zur Verhaltensbeschreibung ergänzt. Diese Funktionen verarbeiten die einzeln Nachrichten, die die Instanzen der Komponenten über die Kanten erhalten.Subsequently, the program code is supplemented by the software developer with behavior description functions. These functions handle the individual messages that the instances of the Get components over the edges.

Der nun vorliegende Code wird übersetzt (kompiliert) und somit ein plattformspezifisches lauffähiges Modul erzeugt, das von der Laufzeitumgebung zur Steuerung der Applikation benötigt wird.Of the now available code is translated (compiled) and thus generates a platform-specific executable module, which from the runtime environment is needed to control the application.

Für die Komponente liegt nun einerseits jeweils eine computerlesbare Beschreibung (z. B. jeweils ein XML-File) mit den oben genannten Informationen und andererseits lauffähig der Programmcode vor. Diese Paare von Datenelementen können in einer Bibliothek gespeichert werden, auf die die Laufzeitumgebung zur Laufzeit, oder zumindest zum Beginn einer Ausführung des Applikationsgrafen zugreifen kann. Die Informationen dieser Bibliothek sind beispielsweise in einem zusätzlichen, nicht in 1 dargestellten Datenspeicher oder Speicherbereich abgelegt. Der Datenspeicher kann auch ein über ein Computernetz verteilter Datenspeicher sein.For the component, on the one hand, there is a computer-readable description (eg an XML file in each case) with the above-mentioned information and, on the other hand, the program code is executable. These pairs of data elements can be stored in a library that the runtime environment can access at run time, or at least begin execution of the application graph. For example, the information in this library is in an additional, not in 1 stored data storage or memory area stored. The data store may also be a data store distributed over a computer network.

Ferner wird zumindest eine konkrete Applikation, z. B. eine Simulation einer bestimmten dreidimensionalen (3D) Szene, als Applikationsgraf definiert. Dieser Graf besteht aus einer beliebigen Anzahl von Knoten und Kanten. Die Kanten definieren den Nachrichtenaustausch zwischen den einzeln Knoten sowie den Nachrichtenaustausch zu externen Schnittstellen (z. B. Eingabe durch Joystick und/oder Ausgabe auf einem Bildschirm). Somit ist das Verhalten der Anwendung abstrakt definiert. Da sich die Struktur des Grafen zur Laufzeit verändern kann, wird erst später die Struktur von der Laufzeitumgebung wiederholt zu einem konkreten Zeitpunkt ausgewertet und auf parallelisierbare Prozessketten analysiert.Further At least one specific application, for. B. a simulation a specific three-dimensional (3D) scene, as an application graph Are defined. This count consists of any number of nodes and edges. The edges define the message exchange between the single node as well as the message exchange to external interfaces (eg input by joystick and / or output on a screen). Thus, the behavior of the application is abstractly defined. That I the structure of the count can change at runtime, will be the later Structure of the runtime environment repeats to a concrete one Evaluated and analyzed for parallelizable process chains.

Der Graf wird zunächst von dem Anwendungsentwickler erstellt und z. B. in XML-Dateien abgelegt. Dazu kann der Entwickler XML-Standardwerkzeuge verwenden, die frei erhältlich sind. Außerdem kann der Entwickler spezielle Werkzeuge verwenden, die es erlauben, die Funktionsfähigkeit des Grafen zu überprüfen.Of the Graf becomes first created by the application developer and z. B. stored in XML files. To do this, the developer can use standard XML tools that are free available are. Furthermore the developer can use special tools that allow the functionality to examine the count.

Zum Beispiel ist für jede instanziierte Komponente der Applikation Folgendes in dem XML-File definiert:

  • – Typbezeichnung der Komponente (z. B. Komponententyp „Automobil mit 4 Rädern”)
  • – Bezeichnung der Instanz (z. B. „Auto Nr. 4”)
  • – Attribut-Werte (z. B. ”Farbe = ...”, wobei in ... ein digitaler Farbcode eingetragen ist) von allen Attributen, die für den Komponententyp definiert sind
  • – Aktive Nachrichtenkanten zu Beginn der Ausführung der Applikation (z. B. „Nachrichtenschnittstelle Nr. 1 von Komponente Nr. 1 überträgt Nachrichten an Nachrichtschnittstelle Nr. 13 von Komponente Nr. 45)
  • – Werte von weiteren Eigenschaften der Instanz (z. B. „Auto Nr. 4 darf Komponente verändern, die über Nachrichtenschnittstelle Nr. 4 mit ihr verbunden ist”)
For example, for each instanced component of the application, the following is defined in the XML file:
  • - Type designation of the component (eg "4-wheeled automobile" component type)
  • - name of the entity (eg "car no 4")
  • - attribute values (eg "color = ...", where in ... a digital color code is entered) of all attributes that are defined for the component type
  • Active message edges at the beginning of the execution of the application (eg "Message Interface No. 1 of Component No. 1 transmits messages to message interface No. 13 of Component No. 45)
  • - Values of further properties of the instance (eg "Auto No. 4 may change component that is connected to it via message interface No. 4")

Zu Beginn der Applikation liest die Laufzeitumgebung die Informationen über die Struktur des Applikationsgrafen ein (z. B. aus dem zuvor erwähnten XML-File). Ferner liest die Laufzeitumgebung die Informationen über die Typen von Komponenten ein, die gemäß der Definition des Applikationsgrafen benötigt werden. Außerdem lädt die Laufzeitumgebung für jeden benötigten Komponententyp zumindest ein Exemplar des lauffähigen Programmcodes der Komponente. Aus all diesen Informationen erzeugt die Laufzeitumgebung die Datenstruktur, mit der die Applikation ausgeführt werden kann.To At the beginning of the application, the runtime environment reads the information about the Structure of the application graph (eg from the aforementioned XML file). Further reading the runtime environment contains the information about the types of components one, according to the definition of the application graph needed become. Furthermore loads the Runtime environment for everyone needed Component type at least one copy of the executable program code of the component. From all this information, the runtime creates the data structure, with which the application is executed can be.

Anschließend steuert die Laufzeitumgebung die Ausführung der Applikation. Während der Laufzeit untersucht die Laufzeitumgebung wiederholt den Grafen und identifiziert die Teilgrafen, die unabhängig von anderen Teilgrafen ausgeführt werden können. Dabei muss die Laufzeitumgebung nicht mehr auf die XML-Dateien zugreifen. Die für die Analyse der jeweils aktuellen Struktur des Grafen benötigten Informationen kann die Laufzeitumgebung unmittelbar in dem ihr zur Verfügung stehenden Arbeitsspeicher ablegen. Wird die Struktur des Grafen von Komponenten zur Laufzeit verändert, erhält die Laufzeitumgebung entsprechende Informationen von den Komponenten, die die Veränderung auslösen. Alle Komponenten, die solche Strukturveränderungen vornehmen können, weisen eine entsprechende Schnittstelle zur Ausgabe dieser Informationen an die Laufzeitumgebung auf.Then controls the runtime environment the execution the application. While At runtime, the runtime repeatedly examines the count and identifies the sub-graphs that are independent of other sub-graphs accomplished can be. The runtime environment no longer needs to access the XML files. The for the analysis of the current structure of the count required information The runtime environment can be located directly in its available Store working memory. Will the structure of the count of components changed at runtime, receives the runtime environment information from the components, the change trigger. All components that can make such structural changes have a corresponding interface for outputting this information to the runtime environment.

Das Auffinden von parallelisierbaren Prozessketten geschieht in einem Zyklus (insbesondere in dem ersten aller Zyklen) z. B. durch Untersuchung aller Komponenten. Wird eine Komponente aufgefunden, die keine Nachrichten zu anderen Komponenten überträgt, werden die zu dieser Endkomponente (s. o.) führenden Nachrichtenkanten zurückverfolgt. Auf diese Weise werden die eine Komponente oder die mehreren Komponenten aufgefunden, die Nachrichten zu der Endkomponente überträgt/übertragen.The Finding parallelizable process chains happens in one Cycle (especially in the first of all cycles) z. B. by examining all Components. Find a component that has no messages transmits to other components traced the message edges leading to this end component (s.o.). In this way, the one or more components become one found that transmits / transmits messages to the end component.

In einem folgenden Zyklus kann das Ergebnis der Strukturanalyse zumindest teilweise erneut für die Entscheidung genutzt werden, welche Prozessketten parallel ausgeführt werden können. Beispielsweise überprüft die Laufzeitumgebung in dem folgenden Zyklus zunächst, ob sich die Struktur geändert hat. Ist dies nicht der Fall, werden dieselben Prozessketten wie zuvor parallel ausgeführt. Wenn Nachrichtenkanten in der Struktur verändert wurden, erhält die Laufzeitumgebung vorzugsweise die oben genannten Informationen von der Komponente, die die Veränderung ausgelöst hat. Diese Informationen kann die Laufzeitumgebung auswerten und feststellen, ob dadurch Nachrichtenkanten verändert wurden, die innerhalb einer der parallelisierbaren Prozessketten definiert waren. Wenn dies der Fall ist, kann die Laufzeitumgebung entscheiden, ob die Prozessketten noch parallel zu anderen Prozessketten ausgeführt werden kann. Alternativ oder zusätzlich kann die Laufzeitumgebung ausgehend von neu entstandenen Nachrichtenkanten prüfen, ob parallel ausführbare Prozessketten neu entstanden sind. Dabei kann sie ausgehend von den neu entstandenen Nachrichtenkanten Nachrichtenwege über ein oder mehrere Komponenten zurückverfolgen. Vorzugsweise erhält die Laufzeitumgebung auch die Information, welche Nachrichtenkanten unterbrochen wurden. Dies erleichtert die Feststellung, ob solche Nachrichtenkanten innerhalb von parallelisierbaren Prozessketten lagen.In a following cycle, the result of the structural analysis can at least partially be used again for the decision as to which process chains can be executed in parallel. For example, in the following cycle, the runtime environment first checks if the structure has changed. If this is not the case, the same process chains are executed in parallel as before. When message edges in the structure have been changed, the runtime environment preferably obtains the above information from the component that initiated the change. This information can evaluate the runtime environment and determine whether this changed message edges that were defined within one of the parallelizable process chains. If this is the case, the runtime environment can decide whether the process chains can still be executed in parallel with other process chains. Alternatively or additionally, the runtime environment can check, based on newly created message edges, whether parallel executable process chains have been newly created. In doing so, it can trace back message paths via one or more components on the basis of the newly created message edges. The runtime environment preferably also receives the information as to which message edges were interrupted. This facilitates the determination of whether such message edges were within parallelizable process chains.

Nach der Analyse liest die Laufzeitumgebung zunächst in jedem Zyklus die aktuelle Zeit (von Uhr 4) sowie eventuelle Eingaben von Geräten 11 und Netwerkverbindungen ein und gibt diese Informationen an alle Knoten weiter, die darauf reagieren müssen. Dann wird die zumindest teilweise parallele Ausführung der Rechenprozesse der isolierten Teil-Graphen von der Laufzeitumgebung gestartet und gesteuert.After the analysis, the runtime environment first reads the current time (from clock 4 ) as well as possible inputs of devices 11 and network connections and forwards this information to all nodes that need to respond. Then the at least partially parallel execution of the computing processes of the isolated sub-graphs is started and controlled by the runtime environment.

Danach werden die globalen Manipulatoren (s. o.) sequenziell von der Laufzeitumgebung angestoßen (d. h. deren Aktionen ausgelöst). Danach hat der Graf wieder einen stabilen Zustand. Die Laufzeitumgebung beginnt einen weiteren Zyklus.After that The global manipulators (see above) are sequenced by the runtime environment initiated (ie their actions triggered). After that, the count has a stable state again. The runtime environment begins another cycle.

2 zeigt eine Datenstruktur 12, nämlich z. B. einen Szenegrafen mit zwei parallelisierbaren Prozessketten und mit Bereichen, deren Prozesse nicht parallelisiert werden. In 2 und in den folgenden Figuren sind die Komponenten durch Kreise dargestellt und die Nachrichtenkanten (es handelt sich hier ausschließlich um gerichtete, d. h. monodirektionale Kanten) durch Pfeile. Nicht dargestellt ist, dass die Komponenten weitere Schnittstellen haben können, sowohl zum Empfang als auch zur Ausgabe von Nachrichten, wobei diese weiteren Schnittstellen momentan nicht über Nachrichtenkanten mit anderen Komponenten verbunden sind oder lediglich zum Empfang von Informationen dienen, die vor der Analyse der Datenstruktur 12 empfangen werden. 2 shows a data structure 12 namely z. For example, a scenographer with two parallelizable process chains and with areas whose processes are not parallelized. In 2 and in the following figures the components are represented by circles and the message edges (here it is exclusively directed, ie monodirectional edges) by arrows. It is not shown that the components can have further interfaces, both for receiving and for outputting messages, these other interfaces are not currently connected via message edges with other components or merely to receive information that before the analysis of the data structure 12 be received.

Komponente 14 kann z. B. eine weitere, nicht dargestellte Kante aufweisen, über die sie bei der Ausführung der Rechenprozesse Eingabedaten erhält, z. B. die Information, dass sich das durch die Komponente 14 definierte Objekt in vorgegebener Weise in einer Szene bewegen soll.component 14 can z. B. have another, not shown, edge over which they receive input data in the execution of the computing processes, eg. B. the information that that through the component 14 defined object in a predetermined manner in a scene to move.

Die Komponente 14 ist über zwei zur Ausgabe von Nachrichten ausgestaltete Nachrichtenkanten mit den Komponenten 15 und 17 verbunden, und zwar jeweils über eine der Kanten mit einer der genannten Komponenten. Die Komponenten 15, 17 sind wiederum jeweils über eine gerichtete Kante zur Ausgabe von Nachrichten mit der Komponente 16 verbunden.The component 14 is over two message edges designed to output messages with the components 15 and 17 connected, in each case via one of the edges with one of said components. The components 15 . 17 Again, they each have a directed edge for outputting messages with the component 16 connected.

Bei der Ausführung der so definierten Prozesse wird daher zunächst der durch die Komponente 14 definierte Prozessteil ausgeführt, werden währenddessen oder am Ende des Teils Nachrichten zu den Komponenten 15 und 17 ausgegeben, folgt dann die Abarbeitung der Komponenten 15 und 17, werden während oder am Ende dieser Abarbeitung Nachrichten zu der Komponente 16 ausgegeben und wird nach Erhalt der Nachrichten der Prozessteil gemäß Komponente 16 ausgeführt.In the execution of the processes thus defined, therefore, first by the component 14 defined process part, during this or at the end of the part messages are sent to the components 15 and 17 output, then follows the execution of the components 15 and 17 , messages are sent to the component during or at the end of this processing 16 is output and, after receiving the messages, the process part according to component 16 executed.

Ferner weist der Graf zwei von der Komponente 16 zu anderen Komponenten führende Kanten auf, nämlich eine Kante, die zu der Komponente 21 führt, und eine Kante, die zu der Komponente 31 führt. Von der Komponente 21 führt eine Kante zu der Komponente 22, die über keine weiteren Nachrichtenkanten mit anderen Komponenten verbunden ist. Auch die Komponente 31 ist so mit einer weiteren Komponente, der Komponente 32, über eine Nachrichtenkante verbunden, dass Nachrichten ausschließlich von Komponente 31 zu Komponente 32, aber nicht umgekehrt, gesendet werden können. Komponente 32 besitzt keine weiteren aktiven Nachrichtenkanten.Further, the graph has two of the component 16 leading to other components, namely an edge leading to the component 21 leads, and an edge leading to the component 31 leads. From the component 21 leads an edge to the component 22 that has no other message edges connected to other components. Also the component 31 is so with another component, the component 32 , connected via a message edge, that messages exclusively by component 31 to component 32 but not vice versa, can be sent. component 32 has no further active message edges.

Somit bilden sowohl die Komponenten 21, 22 als auch die Komponenten 31, 32 Prozessketten, die lediglich von der Eingabe von Nachrichten abhängig sind, die von der Komponente 16 gesendet werden. Umgekehrt sind die mit gestrichelten ovalen und den Buchstaben B und A bezeichneten Prozessketten in dem gegenwärtigen Zustand nicht dazu in der Lage, Nachrichten zu anderen Teilen des Grafen zu senden. Ausgenommen hiervon sind Daten, die am Ende der Abarbeitung sämtlicher Prozessschritte eines Zyklus für die Ausgabe genutzt werden, beispielsweise für die Darstellung eines der dreidimensionalen Szene entsprechenden zweidimensionalen Bildes auf einem Bildschirm oder mittels eines Projektors. Die Teil-Grafen A, B können daher parallel auf verschiedenen Prozessoren oder Prozessorkernen ausgeführt werden, sobald die von der Komponente 16 stammenden Nachrichten zu der Komponente 21 bzw. zu der Komponente 31 gesendet wurden. Bei der Steuerung durch die Laufzeitumgebung wird das Versenden dieser Nachrichten daher vorzugsweise überwacht, beispielsweise dadurch, dass gleichzeitig mit dem Versenden der Nachrichten von der Komponente 16 ein Signal an die Laufzeitumgebung ausgeben wird.Thus, both the components form 21 . 22 as well as the components 31 . 32 Process chains that depend only on the input of messages from the component 16 be sent. Conversely, the process chains labeled with dashed oval and letters B and A in the current state are unable to send messages to other parts of the graph. Exceptions to this are data that are used at the end of the processing of all process steps of a cycle for the output, for example, for representing a three-dimensional scene corresponding two-dimensional image on a screen or by means of a projector. The partial counters A, B can therefore be executed in parallel on different processors or processor cores as soon as that of the component 16 originating messages about the component 21 or to the component 31 were sent. Therefore, in the control of the runtime environment, the sending of these messages is preferably monitored, for example, by concurrent with the sending of the messages from the component 16 will issue a signal to the runtime environment.

3 zeigt eine weitere Ausgestaltung eines Applikationsgrafen bzw. einen Teil eines Applikationsgrafen, bei dem eine Komponente 41 mit einer Vielzahl von isolierten Prozessketten verbunden ist, die jeweils in der Art einer Sackgasse gerichtete Nachrichtenwege aufweist, welche von der Komponente 41 ausgehen und jeweils von Komponente zu Komponente bis zu einer Endkomponente führen, die in dem gegenwärtigen Zustand keine Nachrichten mehr ausgibt. Dabei kann die Zahl der Komponenten in den einzelnen Sackgassen variieren. 3 shows a further embodiment of a Applikationsgrafen or a part of an application graph, in which a component 41 is connected to a plurality of isolated process chains each having dead-end message paths from the component 41 go out and result in each case from component to component up to an end component, which no longer issues messages in the current state. The number of components in the individual dead ends can vary.

4 zeigt eine Variante einer Prozesskette C, die ebenfalls parallel mit anderen isolierten Prozessketten ausgeführt werden kann. Der in 4 dargestellte Teil eines Applikationsgrafen weist in dem momentanen Zustand eine Komponente 50 auf, die Nachrichten zu einer Komponente 51 überträgt, welche bereits zu der isolierten Prozesskette C gehört. Von der Komponente 51 führt jeweils eine Nachrichtenkante zu der Komponente 52 und zu der Komponente 54 und jeweils eine weitere Nachrichtenkante von der Komponente 52 und von der Komponente 54 zu der Komponente 53. Letztere gibt in dem gegenwärtigen Zustand keine Nachrichten aus. 4 shows a variant of a process chain C, which can also be performed in parallel with other isolated process chains. The in 4 shown part of an application graph has a component in the current state 50 on, the messages to a component 51 transfers which already belongs to the isolated process chain C. From the component 51 each leads a message edge to the component 52 and to the component 54 and one more message edge from the component 52 and from the component 54 to the component 53 , The latter does not output messages in the current state.

Wie auch in anderen Fällen (z. B. im Fall der Komponenten 15 und 17 aus 2) ist eine Ausführung von Rechenprozessen möglich, bei der wie in der Prozesskette C verschiedene Nachrichtenwege von derselben Komponente (51) ausgehen und über verschiedene Komponenten, nämlich 52 und 54, zu derselben Endkomponente 53 führen. Auch eine derartige Prozesskette kann daher als isolierte Prozesskette betrachtet werden und, nachdem die Eingangsnachrichten zu der Komponente 51 übermittelt wurden, zur zeitlich parallelen Prozessierung freigegeben werden.As in other cases (eg in the case of components 15 and 17 out 2 ) is an execution of computational processes possible in which as in the process chain C different message paths from the same component ( 51 ) and about various components, namely 52 and 54 , to the same end component 53 to lead. Such a process chain can therefore also be regarded as an isolated process chain and, after the input messages to the component 51 transmitted for parallel processing.

Eine weitere Anwendung der in 1 dargestellten Anordnung ist eine VR (Virtual Reality) Simulation in Echtzeit mit mehr als 1000 virtuellen Charakteren (Avatare), eine so genannte Massive Crowd Simulation. Es wird simuliert, dass die Avatare sich durch eine virtuelle Welt bewegen. Die Bewegungen werden durch Transformationsverkettungen beschrieben. Dabei werden die Bewegungen zu einem Teil durch die Interaktionen des Benutzers beeinflusst, zu einem anderen Teil werden die Bewegungen durch Relationen zwischen den Charakteren beeinflusst. Diese Relationen werden im Applikationsgraphen definiert. Exemplarische Relationen sind:

  • • Wenn eine Kollision zwischen zwei Avataren stattgefunden hat, so führe eine Kollisionsauflösung durch.
  • • Wenn Avatar Nr. 50 in einem fest definierten Umkreis von Avatar Nr. 60 ist, dann folgt Avatar Nr. 50 dem Avatar Nr. 60.
  • • Wenn Avatar Nr. 70 in einem fest definierten Umkreis von Avatar Nr. 80 ist, dann flieht Avatar 80 vor Avatar Nr. 70.
Another application of in 1 The arrangement depicted is a VR (Virtual Reality) simulation in real time with more than 1000 virtual characters (avatars), a so-called massive crowd simulation. It simulates that the avatars are moving through a virtual world. The movements are described by transformation links. The movements are partly influenced by the interactions of the user, to another part the movements are influenced by relations between the characters. These relations are defined in the application graph. Exemplary relations are:
  • • If there is a collision between two avatars, perform a collision resolution.
  • • If Avatar # 50 is within a fixed radius of Avatar # 60, then Avatar # 50 will follow Avatar # 60.
  • • If Avatar # 70 is within a fixed radius of Avatar # 80, Avatar # 80 will flee Avatar # 70.

In dieser Art und Weise können hunderte von Relationen definiert sein. Durch die Relationen werden z. B. mehr als 100.000 Transformationen beeinflusst. Mit Hilfe des erfindungsgemäßen Verfahrens kann automatisch bestimmt werden, welche Transformationen unabhängig voneinander durchgeführt werden können, die somit parallel berechnet werden können, und welche voneinander abhängig sind. Massive Crowd Simulations spielen z. B. eine Rolle bei der Simulation von Paniksituationen (beispielsweise zur Ausbildung von Feuerwehrleuten).In this way you can be defined by hundreds of relations. Become through the relations z. B. influenced more than 100,000 transformations. With the help of inventive method can Automatically determine which transformations independently be performed can, which can thus be calculated in parallel, and which of each other dependent are. Massive crowd simulations play z. B. a role in the Simulation of panic situations (for example for the training of Firefighters).

Wie auch bei anderen Ausführungsform der Erfindung besteht hier der wesentliche Vorteil der Erfindung, dass eine automatische Parallelisierung zur Laufzeit einer Applikation stattfindet und daher jeweils die größtmögliche Anzahl von parallelisierbaren Teilprozessen identifiziert werden kann.As also in other embodiment the invention consists here of the essential advantage of the invention, that automatic parallelization at runtime of an application takes place and therefore each the greatest possible number of parallelizable sub-processes can be identified.

Claims (3)

Verfahren zur Steuerung der parallelen Ausführung von Rechenprozessen, wobei a) die Rechenprozesse durch einen Grafen beschrieben sind, a1) wobei der Graf eine Datenstruktur (12) aufweist, die Knoten und Verknüpfungen zwischen den Knoten umfasst, a2) wobei die Knoten Komponenten (1432) mit ausführbarem Programmcode und Nachrichtenschnittstellen entsprechen, a3) wobei die Verknüpfungen Nachrichtenwegen zwischen den Nachrichtenschnittstellen von Komponenten (1432) entsprechen, a4) wobei sich die Datenstruktur (12) zur Laufzeit der Rechenprozesse ändern kann, b) eine Laufzeitumgebung (5) die Datenstruktur des Grafen und den lauffähigen Programmcode der Komponenten (1432) einliest und gegebenenfalls zur Laufzeit Informationen über eine Veränderung des Grafen erhält, c) die Laufzeitumgebung (5) zur Laufzeit parallelisierbare Prozessketten (A; B) von über Nachrichtenwege verknüpfte Komponenten (1432) danach ermittelt, dass die parallelisierbaren Prozessketten (A; B) keine aktuell aktiven Nachrichtenwege zu anderen Prozessketten aufweisen, d) die Laufzeitumgebung (5) darauf hin entscheidet, welche der ermittelten parallelisierbaren Prozessketten parallel ausgeführt werden.Method for controlling the parallel execution of arithmetic processes, wherein a) the arithmetic processes are described by a graph, a1) the graph having a data structure ( 12 ) comprising nodes and links between the nodes, a2) where the nodes are components ( 14 - 32 ) with executable program code and message interfaces, a3) the links being message paths between the message interfaces of components ( 14 - 32 ) a4) where the data structure ( 12 ) can change at runtime of the computational processes, b) a runtime environment ( 5 ) the data structure of the count and the executable program code of the components ( 14 - 32 ) and, if necessary, receive information about a change in the count at runtime, c) the runtime environment ( 5 ) at runtime parallelizable process chains (A; B) of message-linked components ( 14 - 32 ) determines that the parallelizable process chains (A; B) have no currently active message paths to other process chains, d) the runtime environment ( 5 ) decides which of the determined parallelizable process chains are executed in parallel. Verfahren nach dem vorhergehenden Anspruch, wobei zumindest ein Teil der ermittelten Prozessketten (A; B) jeweils eine Mehrzahl der Komponenten (21, 22; 31, 32) aufweist, die innerhalb der jeweiligen Prozesskette (A; B) über Nachrichtenwege miteinander verknüpft, insbesondere sequenziell verkettet, sind.Method according to the preceding claim, wherein at least a part of the determined process chains (A; B) in each case a majority of the components ( 21 . 22 ; 31 . 32 ), which are linked together via message paths within the respective process chain (A; B), in particular sequentially linked. Computerprogramm, das von einem Computer oder einem Computernetz ausgeführt wird und/oder das auf einem Datenträger zur Ausführung auf einem Computer oder Computernetz gespeichert ist, wobei a) das Computerprogramm eine parallele Ausführung von Rechenprozessen, die durch einen Grafen beschrieben sind, steuert, a1) wobei der Graf eine Datenstruktur (12) aufweist, die Knoten und Verknüpfungen zwischen den Knoten umfasst, a2) wobei die Knoten Komponenten (1432) mit ausführbarem Programmcode und Nachrichtenschnittstellen entsprechen, a3) wobei die Verknüpfungen Nachrichtenwegen zwischen den Nachrichtenschnittstellen von Komponenten (1432) entsprechen, a4) wobei sich die Datenstruktur (12) zur Laufzeit der Rechenprozesse ändern kann, b) das Computerprogramm zur Steuerung eine Laufzeitumgebung (5) aufweist, die die Datenstruktur (12) des Grafen und den lauffähigen Programmcode der Komponenten (1432) einliest und gegebenenfalls zur Laufzeit Informationen über eine Veränderung des Grafen erhält, c) die Laufzeitumgebung (5) zur Laufzeit parallelisierbare Prozessketten (A; B) von über Nachrichtenwege verknüpfte Komponenten (1432) danach ermittelt, dass die parallelisierbaren Prozessketten (A; B) keine aktuell aktiven Nachrichtenwege zu anderen Prozessketten aufweisen, d) die Laufzeitumgebung (5) darauf hin entscheidet, welche der ermittelten parallelisierbaren Prozessketten parallel ausgeführt werden.Computer program running from a computer or a computer network and / or that is stored on a data medium for execution on a computer or computer network, wherein a) the computer program controls a parallel execution of arithmetic processes described by a graph, a1) the graph having a data structure ( 12 ) comprising nodes and links between the nodes, a2) where the nodes are components ( 14 - 32 ) with executable program code and message interfaces, a3) the links being message paths between the message interfaces of components ( 14 - 32 ) a4) where the data structure ( 12 ) can change at runtime of the computing processes, b) the computer program for controlling a runtime environment ( 5 ) containing the data structure ( 12 ) of the count and the executable program code of the components ( 14 - 32 ) and, if necessary, receive information about a change in the count at runtime, c) the runtime environment ( 5 ) at runtime parallelizable process chains (A; B) of message-linked components ( 14 - 32 ) determines that the parallelizable process chains (A; B) have no currently active message paths to other process chains, d) the runtime environment ( 5 ) decides which of the determined parallelizable process chains are executed in parallel.
DE200510056186 2005-11-21 2005-11-21 Control of computational processes Expired - Fee Related DE102005056186B4 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE200510056186 DE102005056186B4 (en) 2005-11-21 2005-11-21 Control of computational processes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200510056186 DE102005056186B4 (en) 2005-11-21 2005-11-21 Control of computational processes

Publications (2)

Publication Number Publication Date
DE102005056186A1 DE102005056186A1 (en) 2007-05-24
DE102005056186B4 true DE102005056186B4 (en) 2010-07-01

Family

ID=37989607

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200510056186 Expired - Fee Related DE102005056186B4 (en) 2005-11-21 2005-11-21 Control of computational processes

Country Status (1)

Country Link
DE (1) DE102005056186B4 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9880822B2 (en) 2008-12-01 2018-01-30 Kpit Technologies Limited Method and system for parallelization of sequential computer program codes

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Cosnard, M. et.al.: Symbolic partitioning and scheduling of parameterized task graphs. In: Proceedings of the International Conference on Parallel and Distributed Systems, 1998, pp. 428-434 *
Hall,M.W., et.al.: Maximizing Multiprocessor Performance with the SUIF Compiler. IEEE Computer, Vol.29, Issue 12. Dec 1996, pp.84- 89 *
Hall,M.W., et.al.: Maximizing Multiprocessor Performance with the SUIF Compiler. IEEE Computer, Vol.29, Issue 12. Dec 1996, pp.84- 89 Zhang, Y. et al.: Hardware for speculative run-time parallelization in distributed shared-memory multiprocessors. In: Proceedings of the 1998 Fourth International Symposium on High- Performance Computer Architecture, 1-4 Feb. 1998, pp. 162-173 Cosnard, M. et.al.: Symbolic partitioning and scheduling of parameterized task graphs. In: Proceedings of the International Conference on Parallel and Distributed Systems, 1998, pp. 428-434
Zhang, Y. et al.: Hardware for speculative run-time parallelization in distributed shared-memory multiprocessors. In: Proceedings of the 1998 Fourth International Symposium on High- Performance Computer Architecture, 1-4 Feb. 1998, pp. 162-173 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9880822B2 (en) 2008-12-01 2018-01-30 Kpit Technologies Limited Method and system for parallelization of sequential computer program codes

Also Published As

Publication number Publication date
DE102005056186A1 (en) 2007-05-24

Similar Documents

Publication Publication Date Title
EP3571553B1 (en) Method for testing a control function of a control device of a vehicle
DE60008397T2 (en) USER EMULATION FOR DATA EXCHANGE IN COMPUTER-BASED DESIGN
DE69837130T2 (en) Apparatus and method for simulating multiple nodes on a single machine
DE112016003949T5 (en) WEB-BASED PROGRAMMING ENVIRONMENT FOR EMBEDDED EQUIPMENT
DE202017105403U1 (en) Instruction set architecture for neural networks
DE60017457T2 (en) PROCEDURE FOR ISOLATING AN ERROR IN ERROR MESSAGES
DE102008005515A1 (en) Virtual architecture and virtual instruction set for the calculation of parallel instruction sequences
DE112013000752T5 (en) Manage processing elements in a streaming data system
DE102014110096A1 (en) Test device for real-time test of a virtual control device
WO2008090216A1 (en) Automation system comprising an implemented engineering-environment
DE112012004728T5 (en) Method, program and system for simulation execution
DE102017120016A1 (en) A method of configuring a test device set up to test an electronic controller and a configuration system
DE102018110020A1 (en) A method for generating a model of a technical system executable on a test device and test device
EP3398092A1 (en) Method for configuring a co-simulation for a total system
DE102018110018A1 (en) A method for providing an integrated process for the ECU development and simulation device for the ECU development
DE102015122908A1 (en) System and method for compiler support for code compile-time adaptation
DE102010053558A1 (en) Relational modeling for performance analysis of multi-core processors using virtual tasks
DE102021116315A1 (en) Method for merging architectural information
DE10324594A1 (en) Method for providing improved simulation capabilities of a dynamic system outside of the original modeling environment
DE102005056186B4 (en) Control of computational processes
DE102018114303A1 (en) Method for graphic processing using predefined render chunks
WO2023138890A1 (en) Data processing device, and method for converting data
DE102018208379A1 (en) Apparatus and method for controlling a configuration of at least one device or plant component
DE102021201212A1 (en) Method for controlling a plurality of driving functions in an automated or autonomous vehicle
DE102020102996A1 (en) Process for an integrated design for the modeling, simulation and testing of a real-time architecture within a model-based system and software development

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee