DE102005056186B4 - Control of computational processes - Google Patents
Control of computational processes Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 141
- 230000008569 process Effects 0.000 title claims abstract description 130
- 230000008859 change Effects 0.000 claims abstract description 24
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012545 processing Methods 0.000 description 13
- 238000004088 simulation Methods 0.000 description 12
- 230000015654 memory Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 7
- 229920001817 Agar Polymers 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000003936 working memory Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 241001136792 Alle Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012916 structural analysis Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/543—Local
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 ...
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:
Die
in
Gemäß einer
bevorzugten Ausführungsform sind
die Daten
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
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.
- (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
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”)
- - 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
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.
Komponente
Die
Komponente
Bei
der Ausführung
der so definierten Prozesse wird daher zunächst der durch die Komponente
Ferner
weist der Graf zwei von der Komponente
Somit
bilden sowohl die Komponenten
Wie
auch in anderen Fällen
(z. B. im Fall der Komponenten
Eine
weitere Anwendung der in
- • 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.
- • 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)
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)
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 |
-
2005
- 2005-11-21 DE DE200510056186 patent/DE102005056186B4/en not_active Expired - Fee Related
Non-Patent Citations (4)
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)
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 |