DE19921128A1 - Process for generating target system-specific program codes, simulation processes and hardware configuration - Google Patents
Process for generating target system-specific program codes, simulation processes and hardware configurationInfo
- Publication number
- DE19921128A1 DE19921128A1 DE19921128A DE19921128A DE19921128A1 DE 19921128 A1 DE19921128 A1 DE 19921128A1 DE 19921128 A DE19921128 A DE 19921128A DE 19921128 A DE19921128 A DE 19921128A DE 19921128 A1 DE19921128 A1 DE 19921128A1
- Authority
- DE
- Germany
- Prior art keywords
- aggregates
- aggregate
- simulation
- processes
- elementary
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
Description
Die vorliegende Erfindung bezieht sich auf ein Verfahren zum automatischen Erzeugen von Ausgangs-Quellcode aus Eingangs-Quellcode, wobei der Eingangs- Quellcode ein Modell eines zu simulierenden Systems darstellt, und des weiteren auf ein Simulationsverfahren und eine Hardware-Konfiguration zum Durchführen einer Simulation.The present invention relates to a method for automatic Generate output source code from input source code, the input Source code represents a model of a system to be simulated, and further on a simulation process and a hardware configuration to perform a simulation.
Das Simulieren des Verhaltens eines realen Systems durch ein technisches System ist eine bedeutende Aufgabe in der Industrie von heute, etwa in Entwicklung und Produktion. Speziell die Existenz von Hochleistungs-Computersystemen ermöglicht es Entwicklern, sogar sehr komplexe Systeme zu simulieren.Simulating the behavior of a real system through a technical system is an important task in today's industry, such as development and Production. Especially the existence of high performance computer systems enables developers to simulate even very complex systems.
Simulationswerkzeuge können Teil von Entwicklungssystemen sein, um das Verhalten von Produktentwürfen zu überprüfen, ehe die Produkte tatsächlich hergestellt werden; des weiteren kann, wenn die Geschwindigkeit des Simulationssystems größer oder gleich der Geschwindigkeit des realen Systems ist, die Simulation zur Steuerung des realen Systems verwendet werden, derart, daß das zukünftige Verhalten des realen Systems durch das Simulationssystem antizipiert wird, so daß das reale System rechtzeitig beeinflußt werden kann, ehe dieses Verhalten tatsächlich Realität wird. Andererseits kann, wenn die Simulationsgeschwindigkeit geringer als diejenige des realen Systems ist, die Simulation zur Analyse des Verhaltens des realen Systems dienlich sein.Simulation tools can be part of development systems to achieve this Review behavior of product designs before the products actually getting produced; furthermore, if the speed of the Simulation system greater than or equal to the speed of the real system is, the simulation can be used to control the real system, such that the future behavior of the real system through the simulation system is anticipated so that the real system can be influenced in good time before this behavior actually becomes a reality. On the other hand, if the Simulation speed is lower than that of the real system that Simulation can be useful for analyzing the behavior of the real system.
Simulationssysteme bestehen aus der Software, die das Modell des zu untersu chenden Systems (SUT) darstellt, und der Hardware, auf der die Software ablau fen soll. Das Vorgehen bei der Erzeugung eines Simulators für ein System gemäß dem Stand der Technik kann folgendermaßen beschrieben werden. Auf der Basis des Modells wird die Simulationssoftware, welche die Simulation durchführt, entwickelt. Hierbei hängt die Gestalt der Simulationssoftware von der Ziel- Hardware ab, auf der die Simulation ausgeführt werden soll. Die Simula tionssoftware wird gewöhnlich, auf der Ebene von Quellcode-Programmen, in einer problemorientierten Programmiersprache entwickelt.Simulation systems consist of the software that examines the model of the corresponding system (SUT), and the hardware on which the software resides should. The procedure for creating a simulator for a system according to the prior art can be described as follows. On the base of the model, the simulation software that carries out the simulation developed. The shape of the simulation software depends on the target Hardware on which the simulation is to be carried out. The simula tion software is usually, at the level of source code programs, in developed a problem-oriented programming language.
Das tatsächlich ablaufende Simulationsprogramm wird durch Compilieren der Quellcode-Programme im maschinenausführbaren Programmcode für das Zielsystem erzeugt. Besonders geeignete Zielsysteme sind parallele Rechner systeme. Hochleistung-Simulationssysteme werden unter Verwendung von Parallelrechen-Technologien realisiert, zusammen mit einem System bestehend aus mehreren Bearbeitungseinheiten, z. B. einem Netzwerk aus mehreren Workstations oder einem Multiprozessor-System, das aus einer homogenen oder inhomogenen Menge von Prozessoren besteht.The simulation program that is actually running is compiled by Source code programs in the machine-executable program code for the Target system generated. Parallel computers are particularly suitable target systems systems. High performance simulation systems are made using Parallel computing technologies implemented together with a system from several processing units, e.g. B. a network of several Workstations or a multiprocessor system that consists of a homogeneous or there is an inhomogeneous number of processors.
Jedoch wächst mit steigender Rechnerleistung der verfügbaren Hardware auch der Wunsch nach komplexeren Modellen für die Realität.However, as the computing power of the available hardware increases, so does the Desire for more complex models for reality.
Hinsichtlich des Modellierens von Systemen und des Entwickelns von Simula tionsalgorithmen, die auf parallelen Computersystemen ausgeführt werden können, wurden in der Vergangenheit beträchtliche Anstrengungen unternommen.Regarding the modeling of systems and the development of Simula tion algorithms that are executed on parallel computer systems considerable effort has been made in the past.
Das US-Patent 4,901,260 offenbart ein diskretes Ereignissimulationssystem, bei welchem die Simulation iterativ voranschreitet durch Beschränken der Simulation von in eine Reihenfolge gebrachten Ereignissen für jedes Subsystem zu jeder beliebigen Zeit auf ein ausgewähltes simuliertes Zeitsegment, das mit der niedrigsten Simulationszeit beginnt, welche in den Subsystemen gefunden wurde. Mit jeder Simulations-Iteration wird eine "Risiko"-Demarkationszeit ausgewertet, und zwar auf der Basis nur einer Untermenge der Subsysteme, welche die Simulation des betrachteten Subsystems beeinflussen können. Ziel ist es, die "Risiko"-Demarkationszeit auszudehnen. Jedoch betrifft dieses Patent nicht das Problem, wie die Simulationssoftware für ein Zielcomputersystem am besten angepaßt werden kann.U.S. Patent 4,901,260 discloses a discrete event simulation system in which the simulation advances iteratively by restricting the simulation of sequenced events for each subsystem to each arbitrary time on a selected simulated time segment, which with the lowest simulation time begins, which was found in the subsystems. With each simulation iteration, a "risk" marking time is evaluated, based on only a subset of the subsystems that the Can influence simulation of the subsystem under consideration. The goal is to Extend "risk" marking time. However, this patent does not concern that Problem how best the simulation software for a target computer system can be adjusted.
US-Patent 5,375,074 betrifft effiziente Simulation durch Anwenden hocheffi zienten Ordnens der zu simulierenden Ereignisse.U.S. Patent 5,375,074 relates to efficient simulation by applying highly efficient orderly ordering the events to be simulated.
US-Patent 5,801,938 beschreibt eine Datenverarbeitungsvorrichtung, welche verteilte Prozessoren zur parallelen diskreten Ereignissimulation physikalischer Prozesse aufweist, wobei die Prozesse durch die Übertragung von Botschaften mit virtuellem Zeitstempel auf logischen Kanälen zwischen den Prozessoren in Reihenfolge gebracht werden.U.S. Patent 5,801,938 describes a data processing device which distributed processors for parallel discrete event simulation of physical Processes, the processes through the transmission of messages with virtual timestamp on logical channels between the processors in Order.
US-Patent 5,794,005 betrifft objektorientierte Simulation und ein System mit verbundenen parallel arbeitenden Prozessor-Knoten zur Simulation gegenseitiger Interaktionen einer Menge von diskreten Simulationsobjekten, die zwischen den Knoten als eine Folge von diskreten Ereignissen verteilt sind.US Patent 5,794,005 relates to object-oriented simulation and a system with connected processor nodes working in parallel to simulate each other Interactions of a set of discrete simulation objects between the Nodes are distributed as a result of discrete events.
US-Patent 5,652,871 offenbart ein System zum Durchführen von Nachbarschafts- Detektion in Computersimulationen auf parallel arbeitenden Architekturen unter Verwendung einer Verteilungsliste, welche Bewegtkörper- und Sensorüberdeckungen umfaßt, welche in Rasterelemente eintreten und aus diesen austreten. U.S. Patent 5,652,871 discloses a system for performing neighborhood Detection in computer simulations on architectures working in parallel Use of a distribution list, which moving body and Includes sensor covers, which enter into and out of grid elements emerge.
Das Leistungsverhalten der Simulation auf parallelen Systemen hängt in hohem Maße von der Anpassung der Simulationssoftware an das gegebene Si mulationsmodell ab, ebenso wie von der Anpassung der resultierenden Simulationssoftware an die Hardware, auf der die Software ablaufen soll. Dieser Aspekt, der hier als Granularität der Software bzw. der Hardware bezeichnet wird, wurde im Stand der Technik nicht genügend beachtet. In diesem Zusammenhang sei die Granularität definiert als (durchschnittliche, maximale oder minimale) benötigte Zeit zum Bearbeiten von Daten aus Eingangsdaten, dividiert durch die benötigte Zeit zur Übertragung der Daten an ein Ziel. Noch genauer ist die Granularität der Software definiert als die Anzahl von Schritten zum Durchführen einer Operation, dividiert durch die Anzahl von Ergebnisbits zur Übertragung, die durch diese Operation produziert werden. Die Granularität der Hardware ist definiert als Zeit pro Schritt dividiert durch die zum Übertragen eines Bits be nötigte Zeit. In beiden Fällen kann der Nenner weiter in eine Summe aus Latenz und Kehrwert der Bandbreite aufgelöst werden.The performance behavior of the simulation on parallel systems depends to a high degree Dimensions of the adaptation of the simulation software to the given Si simulation model, as well as from the adjustment of the resulting Simulation software to the hardware on which the software is to run. This Aspect that is referred to here as the granularity of the software or the hardware, has not been given sufficient attention in the prior art. In this context let the granularity be defined as (average, maximum or minimum) Time needed to process data from input data divided by the time required to transfer the data to a destination. That is even more precise Software granularity is defined as the number of steps to perform an operation divided by the number of result bits for transmission that be produced by this operation. The granularity of the hardware is defined as time per step divided by the time to transfer a bit time required. In both cases, the denominator can further add up to a sum of latency and reciprocal of the bandwidth can be resolved.
Simulationssoftware des Standes der Technik gestattet nicht die Eigenschaft der Abstimmbarkeit bezüglich der Ziel-Hardware, für welche die Software entwickelt worden ist.State of the art simulation software does not allow the property of Tunability with regard to the target hardware for which the software is developed has been.
Insbesondere ist die Zuweisung der Verarbeitungseinheiten auf bestimmte Teile (d. h. Prozesse) des zu simulierenden Systems ein entscheidendes Problem. Die Lösung für dieses Problem besteht nicht einfach darin, die Anzahl von CPUs zu maximieren, da eine erhöhte Anzahl von CPUs zu einem erhöhten Aufkommen von Kommunikation zwischen CPUs und Synchronisationsbedarf führt, was andererseits die Gesamtgeschwindigkeit des Systems beschränkt. Dies führt zu einem Mißverhältnis zwischen der Granularität der Software und der Granularität der Hardware. Dieses Problem wird weiter verschärft, wenn das Zielsystem ein heterogenes System verschiedener Maschinen mit verschiedenen Verarbeitungskapazitäten (d. h. verschiedenen Hardware-Granularitäten) ist. Mit anderen Worten besteht das Problem darin, für ein gegebenes Zielsystem mit mehreren Verarbeitungseinheiten, deren jeden individuelle Rechengeschwindigkeit, Speicherkapazität und weitere Hardware-spezifische Parameter aufweist, eine optimale Verteilung der Simulation über das Zielsystem zu finden.In particular, the assignment of the processing units to certain parts (i.e. processes) of the system to be simulated is a critical problem. The The solution to this problem is not simply to increase the number of CPUs maximize because an increased number of CPUs leads to an increased volume of communication between CPUs and synchronization needs what on the other hand, the overall speed of the system is limited. this leads to a mismatch between the granularity of the software and the granularity the hardware. This problem is exacerbated when the target system enters heterogeneous system of different machines with different Processing capacity (i.e. different hardware granularities). With in other words, the problem is having for a given target system several processing units, each individual Computing speed, storage capacity and other hardware-specific Has parameters, an optimal distribution of the simulation over the target system to find.
Des weiteren, wenn während der Laufzeit des konkreten Simulationsexperiments das Leistungsverhalten des Simulators verschlechtert wird aufgrund einer systematischen Überlast verschiedener Verarbeitungseinheiten, wäre es vorteilhaft, die Hardware-Struktur des Simulationssystems auf sich ändernde Anforderungen anpassen zu können. Diese Anpassung kann erreicht werden durch Hinzufügen weiterer Verarbeitungseinheiten zu denjenigen Einheiten, die überlastet sind, oder durch Ersetzen überlasteter Einheiten durch schnellere Einheiten. Bei bekannten Simulationssystemen muß dann jedoch auch die Si mulationssoftware an die modifizierte Hardware angepaßt werden, d. h. das Quellcode-Programm muß durch den Programmierer modifiziert und neu com piliert werden, um ein neues ausführbares Programm zu erzeugen. Jedoch erhöht die Notwendigkeit, das Programm auf Quellcode-Niveau manuell zu überarbeiten, die Kosten erheblich und verschlechtert darüber hinaus die Zuverlässigkeit eines solchen Simulationssystems.Furthermore, if during the runtime of the concrete simulation experiment the performance of the simulator is deteriorated due to a systematic overload of different processing units, it would be advantageous to change the hardware structure of the simulation system To be able to adapt requirements. This adjustment can be achieved through Add more processing units to those units are overloaded, or by replacing overloaded units with faster ones Units. In known simulation systems, however, the Si simulation software to be adapted to the modified hardware, d. H. the Source code program must be modified by the programmer and new com piliert to create a new executable program. However increased the need to manually revise the program at source code level, the costs significantly and also deteriorates the reliability of a such a simulation system.
Wenn andererseits die Leistungsfähigkeit der Simulation nur für eine (voraus sichtlich) kurze Zeit beeinträchtigt wird, wäre die Möglichkeit des Durchführens einer Lastverteilung zwischen einigen der Verarbeitungseinheiten während der Laufzeit (d. h. ohne Wiederholen des gesamten Simulationsexperiments von Anfang an), sehr wünschenswert.On the other hand, if the performance of the simulation only for one (advance visibly) short time would be the possibility of performing a load distribution between some of the processing units during the Runtime (i.e., without repeating the entire simulation experiment of Beginning), very desirable.
Es ist daher ein Ziel der vorliegenden Erfindung, ein Verfahren zum automati schen Erzeugen, aus einer Eingangssimulations-Modellbeschreibung, von Ausgangs-Quellcodes der Beschreibung zu schaffen, wobei die Quellcodes auf unterschiedliche spezifische (verteilte oder parallele) Verarbeitungsumgebungen anpaßbar sind, ohne die Modellbeschreibung zu modifizieren und ohne menschliches Eingreifen.It is therefore an object of the present invention to provide a method for automated generating from an input simulation model description of Output source codes to create the description, with the source codes on different specific (distributed or parallel) processing environments are customizable without modifying the model description and without human intervention.
Ein weiteres Ziel der vorliegenden Erfindung ist es, ein Verfahren und eine Hardware-Konfiguration zum Durchführen einer Simulation zu schaffen, welche auf sich ändernde Verarbeitungserfordernisse anpaßbar sind, ohne die Mo dellbeschreibung ändern zu müssen.Another object of the present invention is to provide a method and a To create hardware configuration to perform a simulation which are adaptable to changing processing requirements without the Mo need to change the description.
Diese Ziele werden erreicht durch das Verfahren gemäß Anspruch 1, das Si mulationsverfahren gemäß Anspruch 15 und die Hardware-Konfiguration gemäß Anspruch 18. Vorteilhafte Weiterbildungen sind in den abhängigen Ansprüchen definiert.These goals are achieved by the method according to claim 1, the Si Simulation method according to claim 15 and the hardware configuration according to Claim 18. Advantageous further developments are in the dependent claims Are defined.
Gemäß der Erfindung geschaffen wird ein Verfahren zum automatischen Er
zeugen von maschinenlesbaren Ausgangs-Quellcodes aus maschinenlesbarem
Eingangs-Quellcode, wobei der Eingangs-Quellcode ein Modell eines zu simulie
renden Systems (SUT) - insbesondere eines Kommunikationsnetzwerkes - dar
stellt, wobei die Ausgangs-Quellcodes dazu bestimmt sind, compiliert zu werden
oder auf einem Ziel-Hardwaresystem, das mehrere Verarbeitungsuntersysteme
aufweist, ausgeführt zu werden, wobei das Modell das System (SUT) darstellt als
eine Anzahl von elementaren Prozessen P1, . . ., Pn, wobei jeder elementare Prozeß
Pi elementare Interaktionen eIij, . . ., eIik mit einer Anzahl von anderen Pj, . . ., Pk der
elementaren Prozesse P1, . . ., Pn auszutauschen in der Lage ist, wobei das
Verfahren die folgenden Schritte aufweist:
According to the invention, a method is created for automatically generating machine-readable output source codes from machine-readable input source code, the input source code representing a model of a system to be simulated (SUT) - in particular a communication network - the output source codes are designed to be compiled or run on a target hardware system that has multiple processing subsystems, the model representing the system (SUT) as a number of elementary processes P 1 ,. . ., P n , each elementary process P i elementary interactions eI ij ,. . ., eI ik with a number of other P j,. . ., P k of the elementary processes P 1 ,. . ., P n is able to exchange, the method comprising the following steps:
-
A) Zusammenfassen der Anzahl elementarer Prozesse P1, . . ., Pn in eine
vorbestimmte Anzahl N disjunkter Aggregate A1, . . ., AN gemäß
einer vorbestimmten Granularität mit Bezug auf die Ziel-
Verarbeitungssubsysteme, wobei jeder Aggregat Ai
- a) eine Anzahl pi von Prozessen Pa, . . ., Pb der Anzahl elementarer Prozesse P1, . . ., Pn aufweist,
- b) Aggregat-Interaktionen aIij mit einer Anzahl der Anzahl von Aggregaten A1, . . ., AN hat, wobei jede Aggregat- Interaktion aIij elementare Interaktionen eIac, . . ., eIad; eIbc, . . ., eIbd der elementaren Prozesse Pa, . . ., Pb umfaßt, welche in dem jeweiligen Aggregat Ai zusammengefaßt sind, mit den elementaren Prozessen Pc, . . ., Pd eines anderen Aggregats Aj,
- a) a number p i of processes P a,. . ., P b the number of elementary processes P 1 ,. . ., P n ,
- b) aggregate interactions aI ij with a number of the number of aggregates A 1 ,. . ., A N , with each aggregate interaction aI ij elementary interactions eI ac ,. . ., eI ad ; eI bc ,. . ., eI bd of the elementary processes P a ,. . ., P b , which are combined in the respective unit A i , with the elementary processes P c,. . ., P d of another aggregate A j ,
-
B) Zusammenfassen der Anzahl von Aggregaten A1, . . ., AN, die im
vorangegangenen Schritt erhalten wurden, in eine vorbestimmte
Anzahl disjunkter Aggregate mit Bezug auf die Anzahl von Ziel-
Subsystemen, wobei jeder Aggregat Aii
- 1. eine Anzahl ai der Anzahl von Aggregaten A1, . . ., AN aufweist,
- 2. Aggregat-Interaktionen aIij mit einer Anzahl der Anzahl von Aggregraten A1, . . ., AN aufweist, wobei jede Aggregat-Interak tion aIij Aggregat-Interaktionen aIac, . . ., aIad; aIbc, . . ., aIbd derjenigen Aggregate Aa, . . ., Ab aufweist, die in dem jeweiligen Aggregat Aii zusammengefaßt sind, mit anderen Aggregaten Ac, . . ., Ad eines anderen Aggregats Ajj,
- 1. a number a i of the number of units A 1 ,. . ., A N ,
- 2. Aggregate interactions aI ij with a number of the number of aggregates A 1 ,. . ., A N , each aggregate interaction aI ij aggregate interactions aI ac ,. . ., aI ad ; aI bc ,. . ., aI bd of those aggregates A a ,. . ., A b , which are combined in the respective unit A ii , with other units A c,. . ., A d of another aggregate A jj ,
- C) rekursives Wiederholen des Schritts B) für einen oder mehrere der Aggregate Ai , bis jeder resultierende Aggregat Aii eine vorbestimmte Granularität aufweist,C) recursively repeating step B) for one or more of the aggregates A i until each resulting aggregate A ii has a predetermined granularity,
- D) Transformieren der resultierenden Aggregate Aii in Ausgangs-Quellcodes.D) transforming the resulting aggregates A ii into output source codes.
Somit hat das Verfahren gemäß der Erfindung als Eingang eine Modellbe schreibung eines zu simulierenden Systems, wie sie durch typische Modellier werkzeuge von dritter Seite geliefert wird. Diese Modellbeschreibung hat die Form von elementaren Prozessen und elementaren Interaktionen, wobei die Beschreibung vollständig Hardware-unabhängig sein kann, und wird automatisch in Codes transformiert, die an eine spezielle Ziel-Hardwareumgebung angepaßt sind. Als zusätzliche Eingabe benötigt das Verfahren gemäß Anspruch 1 lediglich die Information hinsichtlich des Typs und der Struktur der Ziel-Hardware und des geforderten Simulationsstils.Thus the method according to the invention has a model as input description of a system to be simulated, as described by typical modeling tools are supplied by third parties. This model description has the Form of elementary processes and elementary interactions, the Description can be completely hardware independent and will be automatic transformed into codes adapted to a specific target hardware environment are. The method according to claim 1 only requires additional input the information regarding the type and structure of the target hardware and the required simulation style.
Sinn der Aggregationsschritte ist es, eine Modellbeschreibung zu verarbeiten unter Verwendung der feinsten Granularität, wobei als technische Parameter diejenige Detail-Tiefe genommen wird, welches geeignet ist, das System darzustellen. Dann werden separate elementare Prozesse automatisch zusam mengefaßt, ("miteinander verschmolzen"), um größere Prozesse, genannt Ag gregate, zu bilden, bis der Grad der Granularität des Modells demjenigen des Ziel- Hardwaresystems entspricht. Der Prozeß des Zusammenfassens wird durchgeführt unter Verwendung von im Stand der Technik bekannten Algorithmen zum Simulieren der jeweiligen Submodelle (d. h. der Aggregate, die auf einer Verarbeitungseinheit ausgeführt werden sollen). Die Simulation jedes Aggregats wird wiederum als ein durch einen Simulator tieferen Niveaus zu simulierender Prozeß behandelt. Zum Simulieren eines Aggregats kann derjenige Algorithmus verwendet werden, der hinsichtlich des Submodells und der Ziel-Hardware am besten optimiert ist. Wenn beispielsweise ein Submodell auf einer Einheit mit einem einzigen Prozessor ausgeführt werden soll, kann ein sequentieller Algorithmus verwendet werden. Alternativ können, wenn die Ziel-Hardware heterogen ist, z. B. eine Mehrzahl von Workstations und spezielle parallele Maschinen aufweist, die Submodelle, die auf den Workstations ablaufen sollen, unter Verwendung sequentieller Algorithmen ausgeführt werden, wohingegen ein spezieller paralleler Simulationsalgorithmus auf der parallelen (Sub)-Maschine verwendet werden kann. Die zusammengefaßten Submodelle können somit unter Verwendung eines gröberkörnigen parallelen Algorithmus synchronisiert werden.The purpose of the aggregation steps is to process a model description using the finest granularity, taking as technical parameters that depth of detail is taken which is suitable, the system to represent. Then separate elementary processes are automatically combined quantified, ("fused together") to larger processes, called Ag gregate, until the degree of granularity of the model matches that of the target Hardware system corresponds. The process of summarizing is carried out using algorithms known in the art for Simulate the respective sub-models (i.e. the aggregates based on one Processing unit to be executed). The simulation of every unit is in turn to be simulated as a lower level by a simulator Process handled. The algorithm can be used to simulate an aggregate are used, the most regarding the sub-model and the target hardware best is optimized. If, for example, a submodel on a unit with A single processor can be run, a sequential Algorithm can be used. Alternatively, if the target hardware is heterogeneous, e.g. B. a plurality of workstations and special parallel ones Machines that have submodels to run on the workstations using sequential algorithms, whereas a special parallel simulation algorithm on the parallel (sub) machine can be used. The summarized sub-models can thus be found under Synchronized using a coarser-grained parallel algorithm.
Die Anwendung des Verfahrens gemäß Anspruch 1 führt zu einer Menge von Quellcodes, deren jeder zur Ausführung auf jeweiligen Hardware-Subsystemen abgestimmt ist.The application of the method according to claim 1 leads to an amount of Source codes, each of which can be executed on respective hardware subsystems is coordinated.
Vorteilhafterweise sind Zeitmarken-gestempelte Interaktionen zwischen ele mentaren Prozessen und/oder Aggregaten innerhalb Zeitintervallen begrenzt, derart, daß das Simulationsproblem unter Verwendung eines einheitlichen zeit gesteuerten Ansatzes verwirklicht werden kann. Bei Verwendung dieser Art der Verarbeitung können Simulationsalgorithmen implementiert werden, welche einen akkumulierten Lookahead (Vorausschau) des Aggregat-Submodells in Richtung von Simulatoren tieferen Niveaus bieten. Das Bereitstellen akkumulierten Lookaheads zu Simulatoren höheren Niveaus wird erreicht durch Markieren der Endzeit des Eingangsintervalls des Aggregats unter Verwendung von Protokoll-Ereignissen (d. h. Ereignissen, die nicht in dem SUT, sondern nur in der Simulation auftreten). Wenn ein derartiges Protokoll-Ereignis zu der virtuellen Zeit t simuliert wird, dann ist der Zielprozeß des Ereignisses temporär beendet, was bedeutet, daß, obwohl die Simulationszeit für den Simulator des Aggregats weiter voranschreiten wird, dieser spezifische Zielprozeß nicht länger in der Lage ist, Ereignisse zu verarbeiten. Als ein weiteres Ergebnis der Beendigung werden neue Protokoll-Ereignisse in die Reihenfolge eingeführt, die sich bei all denjenigen Prozessen ereignen, mit welchen der Zielprozeß Interaktionen hat. Der Zeitstempel dieser Protokoll-Botschaften ist t + Li, wobei Li die Voraussicht des Zielprozesses in Richtung des Zielprozesses i der neuen Protokoll-Botschaft ist. Wenn ein reales Ereignis bei einem beendeten Prozeß ausgeführt wird, wird es vorgemerkt, jedoch tatsächlich nicht berechnet. Es wird erst dann aufgeführt werden, wenn der Zustand des Simulators höheren Niveaus (d. h. des Aggregats) bis zu einer späteren Zeit bekannt ist. Diese Technik kann auf alle (sequentiellen und parallelen) Simulationsverfahren des Standes der Technik angewendet werden. Die resultierenden Algorithmen stellen für jedes Eingangsintervall für den Aggregat die Menge der spätestmöglichen Ausgangsintervalle bereit, die das Verhalten des gesamten Aggregats repräsentieren.Advantageously, time stamped interactions between ele limited mental processes and / or aggregates within time intervals, such that the simulation problem using a uniform time controlled approach can be realized. When using this type of Simulation algorithms can be implemented which processing an accumulated lookahead of the aggregate sub-model in Provide direction of simulators of lower levels. Providing accumulated lookaheads to simulators of higher levels is achieved by Mark the end time of the input interval of the aggregate using of log events (i.e. events that are not in the SUT but only in simulation). If such a log event to the virtual Time t is simulated, the target process of the event is temporarily ended, which means that although the simulation time for the simulator of the aggregate will continue to advance, this specific goal process will no longer be able to is to process events. As another result of the termination new log events are introduced in the order that occurs in all occur with those processes with which the target process interacts. The The time stamp of these protocol messages is t + Li, where Li is the foresight of the Target process in the direction of the target process i of the new protocol message is. If a real event runs on a process that has ended, it will noted, but not actually calculated. Only then will it be listed if the state of the simulator is of higher level (i.e. the aggregate) is known until a later time. This technique can be applied to all (sequential and parallel) simulation methods of the prior art become. The resulting algorithms provide for every input interval the aggregate the set of the latest possible exit intervals that the Represent the behavior of the entire aggregate.
Weiter vorteilhafterweise weist das Verfahren einen Schritt auf, bei welchem die Ausgabequellcodes in Ziel-Hardware spezifische ausführbare Codes compiliert werden. Dies führt zu ausführbaren Programmen für die gegebenen spezifischen Hardware-Systeme, auf welchen die jeweiligen Programme ablaufen sollen.The method further advantageously has a step in which the Output source codes compiled into target hardware specific executable codes become. This leads to executable programs for the given specific ones Hardware systems on which the respective programs are to run.
Vorteilhafterweise werden die Zusammenfassungsschritte derart durchgeführt, daß sie die Granularität der ausführbaren Programmcodes mit Bezug auf die vorbestimmte Ziel-Hardware optimieren.The summary steps are advantageously carried out in such a way that that the granularity of the executable program codes with respect to the Optimize predetermined target hardware.
Die automatische Auswahl der zusammenzufassenden Prozesse zu einem Ag gregat kann durchgeführt werden gemäß jedem beliebigen Optimierungsalgo rithmus, wie z. B. "simulated annealing" oder genetischen Algorithmen oder dergleichen. Die Auswahl spezieller Optimierungsalgorithmen kann von Hardware-Eigenschaften des Entwurfs-Computersystems abhängig gemacht werden, auf welchem das erfindungsgemäße Verfahren gemäß Anspruch 1 ausgeführt wird.The automatic selection of the processes to be combined to form an Ag gregat can be implemented according to any optimization algorithm rhythm, such as B. "simulated annealing" or genetic algorithms or the like. The selection of special optimization algorithms can be done by Hardware properties of the design computer system made dependent on which the inventive method according to claim 1 is performed.
Weiter vorteilhafterweise können die erzeugten Ausgangscodes Simulationsal gorithmen aufweisen, die geeignet sind, für jeden Eingang ein Ausgangsintervall entsprechend dem Verhalten des jeweiligen gesamten Aggregats zu berechnen. Algorithmen, die das spätestmögliche Ausgangsintervall (bezüglich des verfügbaren Eingangs) präsentieren, sind besonders geeignet zur Verwendung zum Simulieren zusammengefaßter Prozesse, da sie eine maximale Information für den Simulationsalgorithmus bereitstellen, so daß optimale Effizienz erreicht werden kann. Further advantageously, the output codes generated can be simulated have algorithms that are suitable for each input an output interval to be calculated according to the behavior of the entire aggregate. Algorithms that determine the latest possible exit interval (with regard to the available input) are particularly suitable for use to simulate summarized processes since they provide maximum information provide for the simulation algorithm so that optimal efficiency is achieved can be.
Die Simulationsalgorithmen, die zum Simulieren der elementaren Prozesse sowie der Aggregate (auf höherem Niveau) verwendet werden, werden vorteil hafterweise gemäß Eigenschaften der jeweiligen Aggregate und des Subsystems der Ziel-Hardware ausgewählt. Dies führt zu einem optimierten Simula tionssystem.The simulation algorithms used to simulate the elementary processes as well the aggregates used (at a higher level) will be advantageous unfortunately according to the properties of the respective aggregates and the subsystem the target hardware selected. This leads to an optimized simula tion system.
Besonders vorteilhaft ist, daß das erfindungsgemäße Verfahren zum Erzeugen spezifischer Quellcodes für jeden beliebigen speziellen Typ der Ziel-Hardware angewendet werden kann, sei es ein homogenes oder heterogenes Computer netzwerk, ohne daß die Modellbeschreibung selbst geändert werden müßte.It is particularly advantageous that the inventive method for generating specific source codes for any particular type of target hardware can be used, be it a homogeneous or heterogeneous computer network, without the model description itself having to be changed.
In einem weiteren Aspekt der Erfindung wird eine Möglichkeit bereitgestellt, die Hardware-Konfiguration während der Laufzeit des Simulationsprogramms zu verändern. Derartige Veränderungen betreffen die Anzahl und den Typ der Verarbeitungseinheiten, Peripherieeinheiten oder Kommunikationseinheiten. In dieser Weise kann die Hardware (bzw. deren Granularität) auf die konkrete Lastsituation während des Simulationsprozesses angepaßt werden. Des weiteren ermöglicht es das erfindungsgemäße Verfahren, eine Last von einer Verar beitungseinheit auf eine andere Verarbeitungseinheit "fliegend", d. h. ohne Neustarten der Simulationsausführung von Anfang an, durchzuführen.In a further aspect of the invention, a possibility is provided that Hardware configuration during the runtime of the simulation program change. Such changes affect the number and type of Processing units, peripheral units or communication units. In In this way, the hardware (or its granularity) can be tailored to the specific Load situation during the simulation process. Furthermore the method according to the invention enables a load of one processing processing unit "flying" to another processing unit, d. H. without Restart the simulation execution from the beginning.
Compilieren der erzeugten Ausgangs-Quellcodes führt zu der eigentlichen Si mulationssoftware, welche die ausführbaren Programmcodes für das Zielsystem enthält. Die Simulationssoftware bringt während ihrer Ausführung die Strukturen, technischen Merkmale und Vorteile gemäß den durch das erfindungsgemäße Erzeugungsverfahren hergestellten Ausgangs-Quellcodes zum Vorschein.Compiling the generated source code leads to the actual Si simulation software which contains the executable program codes for the target system contains. The simulation software brings the structures, technical features and advantages according to the by the invention Source code produced by the production process.
Die Hardware-Konfiguration zum Ausführen der Simulation kann jedes geeignete Computernetzwerk aufweisen. The hardware configuration for running the simulation can be any suitable Have computer network.
Die Erfindung und Beispiele werden mit Bezug auf die beigefügten Zeichnungen im einzelnen beschrieben, in welchenThe invention and examples will be made with reference to the accompanying drawings described in detail in which
Fig. 1 einen topologischen Graphen eines Torus-Router-Netzwerks zeigt, Fig. 1 is a topological graph of a torus-router-network shows
Fig. 2 ein Warteschlangen-Modell eines einzelnen Prozessors in einem Torus- Router zeigt, der mit einer Kommunikationsvorrichtung ausgestattet ist, Figure 2 shows a queue model of a single processor in a torus router equipped with a communication device,
Fig. 3 den ersten Schritt des Zusammenfassens gemäß des Verfahrens der Er findung zeigt, Figure 3 shows the first step of combining in accordance with the method of He shows. Invention,
Fig. 4 einen zweiten Zusammenfassungsschritt zeigt, Fig. 4 shows a second combining step,
Fig. 5 die Zielmaschinen-Konfiguration gemäß der Zusammenfassung von Fig. 4 darstellt, Figure 5 illustrates. The target engine configuration according to the summary of FIG. 4,
Fig. 6 einen anderen zweiten Zusammenfassungsschritt darstellt,6 illustrates. Another second combining step,
Fig. 7 die Zielmaschinen-Konfiguration entsprechend der Zusammenfassung der Fig. 6 zeigt, und Figure 7 shows the target machine configuration according to the summary of Figure 6, and
Fig. 8 einen Leistungsverhaltensvergleich mit Programmcode, der für ver schiedene Zielmaschinen ansteigender Größe erzeugt wurde. Fig. 8 is a performance comparison with program code that was generated for different target machines of increasing size.
Das erste Beispiel betrifft das Quellcode-Compilierverfahren zum Erzeugen von maschinenlesbaren Codes aus Quellcodes an dem Beispiel eines Torus-Router- Netzwerkes.The first example concerns the source code compilation process for generating machine-readable codes from source codes using the example of a Torus router Network.
Fig. 1 zeigt einen topologischen Graphen des Torus-Router-Netzwerks, welches das SUT darstellt. Dieses Modell, das hier als ein Beispiel verwendet wird, ist ein Beispiel eines Kommunikationsnetzwerkes, welches häufig in massiv-parallelen Maschinen verwendet wird, wo es die Aufgabe hat, Rechenanforderungen und Ergebnisse zwischen den Prozessoren auszutauschen. Fig. 1 shows a topological graph of the torus network router, which is the SUT. This model, which is used here as an example, is an example of a communication network which is often used in massively parallel machines, where it has the task of exchanging computing requirements and results between the processors.
Die Knoten des Torus repräsentieren Prozessoren, auf welchen Anwendungs software läuft, welche Botschaftspakete senden und empfangen und welche mit einem Torus-Router ausgestattet sind. Der Torus-Router garantiert hierbei, daß die Pakete, welche von sowohl dem Prozessor als auch dem Kommunikations netzwerk kommen können, zu dem richtigen Zielprozessor hin geroutet werden. Jeder Prozessor in der parallelen Maschine ist mit einer Kommunikations vorrichtung ausgestattet, welche zwei Eingangs- und zwei Ausgangsverbindungen mit dem Kommunikationsnetzwerk hat (siehe auch Fig. 2, die ein Warteschlangen-Modell einer Kommunikationsvorrichtung zeigt). Unter Ver wendung dieser vier Verbindungen sind die Prozessoren der parallelen Maschine in einem Raster mit Ende-zu-Anfang-Rückläufen verbunden, welches das Torus- Netzwerk bildet. Die Kommunikationsvorrichtungen sind in der Lage, Pakete, welche noch nicht an ihrem Ziel angekommen sind, in der richtigen Richtung (Dimension) in dem Torus-Netzwerk zu routen.The nodes of the torus represent processors, on which application software runs, which message packets send and receive and which are equipped with a torus router. The torus router guarantees that the packets, which can come from both the processor and the communication network, are routed to the correct target processor. Each processor in the parallel machine is equipped with a communication device which has two input and two output connections to the communication network (see also FIG. 2, which shows a queue model of a communication device). Using these four connections, the processors of the parallel machine are connected in a grid with end-to-start returns, which forms the Torus network. The communication devices are able to route packets which have not yet reached their destination in the correct direction (dimension) in the Torus network.
Bei dem in diesem Netzwerk angewendeten Routing reist ein Paket in einer Richtung so lange, bis die entsprechende Koordinate mit derjenigen des Ziels übereinstimmt, und hiernach fährt es in der nächsten Dimension fort.With the routing used in this network, one packet travels in one Direction until the corresponding coordinate with that of the target matches, and after that it continues in the next dimension.
Das Modell des SUT ist in der feinstkörnigen Form beschrieben, welche für die Art der Analyse relevant ist, für welche das Simulationssystem bestimmt ist. Die Operationen des Empfangens, Speicherns, Widerrufens, Lesens, Routens und Sendens eines Pakets, die in jeder Richtung und bei Ankunft eines Pakets am Ziel durchzuführen sind, werden durch ein Paar Einzelwarteschlangen-Server und einer nicht-verschwindenden Verzögerung (in den Demultiplexern, die auch das Routen durchführen, pro Dimension und pro Knoten modelliert). The model of the SUT is described in the fine-grained form, which for the The type of analysis for which the simulation system is intended is relevant. The Operations of receiving, storing, revoking, reading, routing and Sending a package in any direction and when a package arrives at its destination are performed by a pair of single queue servers and a non-vanishing delay (in the demultiplexers that also Execute routes, modeled per dimension and per node).
Jede Kommunikationsvorrichtung wird durch ein Warteschlangen-Netzwerk modelliert, welches acht elementare Prozesse aufweist, wobei das Verhalten eines jeden Prozesses aus den üblichen Blöcken in dieser Modellbeschreibung (Warteschlangen, Server, Quellen, Senken, . . .) besteht, siehe Fig. 2.Each communication device is modeled by a queue network, which has eight elementary processes, the behavior of each process consisting of the usual blocks in this model description (queues, servers, sources, sinks,...), See FIG. 2.
Die elementaren Interaktionen zwischen den Prozessen stellen Netzwerk-Pakete dar, die ausgetauscht werden, entweder innerhalb der Kommunikations vorrichtung (z. B. vom internen Speicher zu dem Routing-Prozessor) oder zwi schen zwei Prozessoren. Die Modellbeschreibung gemäß Fig. 2 ist, in maschi nenlesbarer Quellcodeform, die Basis, auf welcher das Verfahren gemäß der Erfindung angewendet wird.The elementary interactions between the processes represent network packets that are exchanged, either within the communication device (e.g. from the internal memory to the routing processor) or between two processors. The model description according to FIG. 2, in machine-readable source code form, is the basis on which the method according to the invention is applied.
Gemäß der Erfindung wird die Modellbeschreibung in Ausgangs-Quellcodes gebracht, die dazu bestimmt sind, compiliert zu werden oder auf dem Ziel- Hardwaresystem, das mehrere Verarbeitungssubsysteme aufweist, ausgeführt zu werden.According to the invention, the model description is in source code brought that are designed to be compiled or on the target Hardware system that has multiple processing subsystems executed become.
Im ersten Schritt werden die elementaren Prozesse gemäß Fig. 2 in Submodelle (A1, . . ., AN) zusammengefaßt, welche die verarbeitenden Knoten (Prozessor und Kommunikationsvorrichtung) des SUT darstellen. Das gesamte Modell kann nun als eine Torus-Topologie dargestellt werden, die N = 3 × 12 = 36 derartige Knoten aufweist. Die elementaren Interaktionen zwischen den elementaren Prozessen stellen einzelne Pakete dar, die zwischen Teilen der Kommunikationsvorrichtung oder zwischen den Kommunikationsvorrichtungen ausgetauscht werden. Aufgrund der gröberen Granularität des resultierenden Modells weist eine zusammengefaßte Interaktion zwischen den resultierenden Aggregaten mehrere Pakete auf, welche zwischen Verarbeitungsknoten ausgetauscht werden.In the first step, the elementary processes according to FIG. 2 are summarized in submodels (A 1 ,..., A N ), which represent the processing nodes (processor and communication device) of the SUT. The entire model can now be represented as a torus topology, which has N = 3 × 12 = 36 such nodes. The elementary interactions between the elementary processes represent individual packets that are exchanged between parts of the communication device or between the communication devices. Due to the coarser granularity of the resulting model, a combined interaction between the resulting aggregates has several packets which are exchanged between processing nodes.
Im zweiten Schritt werden die im ersten Schritt erhaltenen Aggregate weiter zu noch weniger (aber größeren) Aggregaten in ähnlicher Weise wie zuvor zu sammengefaßt, aber nunmehr auf Aggregate und nicht auf elementare Prozesse angewendet.In the second step, the aggregates obtained in the first step become further even fewer (but larger) aggregates in a similar way as before summarized, but now on aggregates and not on elementary processes applied.
Die Aggregate gemäß Fig. 3 werden in eine Anzahl von NN = 4 Aggregate (Submodelle) zusammengefaßt gemäß der Anzahl und dem Typ von Subsystemen des Zielsystems, siehe Fig. 4. Der Aggregationsprozeß hängt ab von der Art der einzelnen Subsysteme, deren Anzahl von CPUs, deren Typen, d. h. von der Granularität der Subsysteme. In dem Fall der Fig. 3 ist das Zielsystem ein Netzwerk mit vier identischen Rechnern, siehe Fig. 4. Jeder der Aggregate Aii umfaßt neun Aggregate der ersten Iteration, aii = 9, wobei jeder Aggregat ein Segment des Torus darstellt (siehe Fig. 3). Die zusammengefaßten Interaktionen umfassen Pakete, die zwischen einem Segment und einem anderen Segment versendet werden. Die Aggregat-Interaktionen (ausgetauscht über die Eingänge und Ausgänge der jeweiligen Aggregate) umfassen die Interaktionen mit Prozessen, die in anderen dieser Aggregate zusammengefaßt sind, jedoch ersetzt jede derartige Interaktion eine Anzahl von Aggregat-Interaktionen aI zu und von dem zusammengefaßten Aggregat des vorhergehenden Iterationsschritts.The aggregates according to Fig. 3, in a number of NN = 4 units (sub-models) summarized according to the number and type of sub-systems of the target system, see Fig. 4. The aggregation process depends on the nature of the individual subsystems, the number of CPUs , their types, ie the granularity of the subsystems. In the case of FIG. 3, the target system is a network with four identical computers, see FIG. 4. Each of the aggregates A ii comprises nine aggregates of the first iteration, a ii = 9, each aggregate representing a segment of the torus (see FIG . 3). The summarized interactions include packets that are sent between a segment and another segment. The aggregate interactions (exchanged via the inputs and outputs of the respective aggregates) include the interactions with processes that are combined in other of these aggregates, but each such interaction replaces a number of aggregate interactions aI to and from the aggregate aggregate of the previous iteration step .
Der zweite Schritt kann rekursiv wiederholt werden für einige oder alle Aggre gate. Das Ziel ist, Aggregate herzustellen (die eine Anzahl von Prozessen des ursprünglichen SUT darstellen), welche gut zu dem Ziel-Subsystem passen, auf dem sie ausgeführt werden sollen.The second step can be repeated recursively for some or all of the aggregates gate. The goal is to manufacture aggregates (which are a number of processes of the original SUT), which fit well with the target subsystem which they should be executed.
Da das erfindungsgemäße Verfahren nicht auf homogene Zielsysteme beschränkt ist, ist es möglich, Aggregation mit unterschiedlicher Tiefe (d. h. unterschiedliche Anzahl von Rekursionen) für unterschiedliche Aggregate durchzuführen. Dies ist im besonderen Maße eine interessante Möglichkeit z. B. dann, wenn eines der Hardware-Subsysteme bereits eine parallele Maschine ist, während andere Maschinen Rechner mit einer einzigen CPU sind. In diesem Fall ist der Aggregationsprozeß für die parallele Maschine beendet, bevor die Aggregation der Prozesse/Aggregate für die Maschine mit einer CPU beendet wird, da die parallele Maschine einen gewissen Grad von Parallelismus verwalten kann.Since the method according to the invention is not restricted to homogeneous target systems , it is possible to aggregate with different depths (i.e. different Number of recursions) for different aggregates. This is in particular an interesting possibility z. B. if one of the Hardware subsystems are already a parallel machine while others Machines are computers with a single CPU. In this case it is Aggregation process for the parallel machine ended before the aggregation of the processes / aggregates for the machine with a CPU, because the parallel machine can manage some degree of parallelism.
Es sei darauf hingewiesen, daß die theoretische Maximalzahl von Rekursionen erreicht ist, wenn nur noch ein einziger Aggregat übrigbleibt. Dann würde dieser Aggregat das gesamte Modell des SUT enthalten. Dies entspricht einer Be schreibung des SUT für nur eine einzige Verarbeitungseinheit, ist somit eine vollständig sequentielle Beschreibung.It should be noted that the theoretical maximum number of recursions is achieved when only a single unit remains. Then this would Aggregate included the entire model of the SUT. This corresponds to a loading writing the SUT for only one processing unit is therefore one fully sequential description.
Andererseits ist es möglich, daß einige der elementaren Prozesse nicht mit an deren zusammengefaßt werden. Im Beispiel der Fig. 6 werden die oberen neun Aggregate nicht miteinander verschmolzen. Dies ist vorteilhaft, wenn die Ziel- Hardware streng heterogen ist. Beispielsweise kann das nichtaggregierte Sub modell auf einer feinkörnigen Parallelmaschine ausgeführt werden, während die aggregierten Untermodelle auf Einzelprozessor-Maschinen ausgeführt werden, siehe Fig. 7, wo die parallele Maschine im Netzwerk oben dargestellt ist.On the other hand, it is possible that some of the elementary processes are not combined with others. In the example in FIG. 6, the top nine units are not fused together. This is advantageous if the target hardware is strictly heterogeneous. For example, the non-aggregated submodel can be executed on a fine-grained parallel machine, while the aggregated submodels are executed on single processor machines, see FIG. 7, where the parallel machine in the network is shown above.
Im letzten Schritt werden die verbleibenden Aggregate in maschinenlesbare Codes transformiert. Diese maschinenlesbaren Codes stellen noch immer eine Modellbeschreibung in einer Quellcodesprache dar, nun aber spezifisch für das Ziel-Subsystem. Es sei darauf hingewiesen, daß die Ausgangs-Quellcodes auch Simulator-Ausführungscodes enthalten.In the last step, the remaining units are machine-readable Codes transformed. These machine-readable codes are still one Model description in a source code language, but now specific to that Target subsystem. It should be noted that the source code also Simulator execution codes included.
Somit ist das Ergebnis des zweiten Schritts gemäß der Erfindung eine (trans formierte) Quellcodebeschreibung des SUT-Modells. Es sei darauf hingewiesen, daß die Aggregationsprozedur das Modell selbst nicht verändert.Thus the result of the second step according to the invention is a (trans source code description of the SUT model. It should be noted that the aggregation procedure does not change the model itself.
Die Anwendung des erfindungsgemäßen Verfahrens schafft die Möglichkeit, die Granularität der Software (durch Aggregation der Prozesse) und auch die Granularität der Ziel-Hardware (durch Hinzufügen zusätzlicher Verarbeitungs einheiten) zu trimmen. The application of the method according to the invention creates the possibility of Granularity of the software (through aggregation of the processes) and also the Granularity of the target hardware (by adding additional processing units).
Vorteilhafterweise kann die Aggregation in einer derartigen Weise durchgeführt werden, daß die Granularität der Software mit Bezug auf die Ziel-Hardware optimiert wird.The aggregation can advantageously be carried out in such a manner that the granularity of the software with respect to the target hardware is optimized.
Einer der hauptsächlichen Vorteile ist, daß der Prozeß des Erzeugens des Modells von dem Prozeß des Herstellens ausführbarer Programme getrennt wird. Somit ist, wenn die Zielsystem-Konfiguration sich ändert, überhaupt keine Änderung auf Modellbeschreibungsniveau notwendig. Lediglich die Aggregationsschritte werden von neuem durchgeführt, um die Simulation hinsichtlich der neuen Hardware-Konfiguration zu optimieren.One of the main advantages is that the process of creating the model is separated from the process of creating executable programs. So, if the target system configuration changes, no change at all Model description level necessary. Only the aggregation steps are performed again to simulate the new Optimize hardware configuration.
Die maschinenausführbaren Codes werden aus den Ausgangs-Quellcodes durch einen Programmcode-Compilierungsschritt erzeugt. Dies wird erreicht durch Compilieren der Ausgangs-Quellcodes der jeweiligen Aggregate zu ausführbaren Programmen für die jeweiligen Ziel-Subsysteme.The machine-executable codes are carried out from the source code generates a program code compilation step. This is achieved through Compile the source code of the respective aggregates to be executable Programs for the respective target subsystems.
Es ist auch möglich, die Quellcodebeschreibung, wie sie durch Anwenden des erfindungsgemäßen Verfahrens erhalten wird, (oder einiger Teile davon) auf einer Interpreter-Plattform (z. B. virtuelle Java-Maschine) auszuführen. In diesem Fall besteht keine Notwendigkeit für den jeweiligen Programmcode-Compilierschritt.It is also possible to use the source code description as described by applying the Method according to the invention is obtained (or some parts thereof) on a Interpreter platform (e.g. Java virtual machine) to run. In this case there is no need for each program code compilation step.
Wenn das Modellierwerkzeug keine genügend feinkörnige Beschreibung des SUT liefert, wird ein Schritt des Auflösens der gelieferten Modellbeschreibung in eine Beschreibung, die elementare Prozesse enthält, noch vor dem ersten Aggregationsschritt durchgeführt. Der Auflösungsschritt zerlegt die Modellbe schreibung unter Verwendung von Information aus dem Modellierwerkzeug, wobei die Information üblicherweise aus der Datenbank dieses Werkzeugs verfügbar ist. If the modeling tool does not have a sufficiently fine-grained description of the SUT provides a step of resolving the supplied model description into a Description that contains elementary processes before the first Aggregation step carried out. The dissolution step disassembles the model writing using information from the modeling tool, the information usually from the database of this tool is available.
Auf der Basis einer und derselben Modellbeschreibung wurde das Codeerzeu gungsverfahren gemäß Anspruch 1 verwendet zum Erzeugen von ausführbaren Codes zum Simulieren des Modells für mehrere unterschiedliche Zielsysteme. Die Zielsysteme umfassen einen bis 8 Personal Computer, die durch ein lokales Netzwerk verbunden sind; jeder Computer hat eine CPU. Das Modell stellt ein Torus-Netzwerk von 128 × 4 Prozessoren dar. Fig. 8 zeigt einen Vergleich des Leistungsverhaltens mit Programmcode erzeugt für die unterschiedlichen Zielsysteme. Das Diagramm zeigt die Simulationsausführungszeit über der Anzahl von Verarbeitungseinheiten des Zielsystems. Während die Eingangs-SUT- Beschreibung konstantgehalten ist, müssen lediglich die ausführbaren Codes der unterschiedlichen Zielsysteme geändert werden unter Verwendung verschiedener Aggregationen gemäß dem Erzeugungsverfahren. Dies stellt einen großen Vorteil bei der Entwicklung von Simulationssoftware dar.On the basis of the same model description, the code generation method according to claim 1 was used to generate executable codes for simulating the model for several different target systems. The target systems include one to eight personal computers connected by a local network; every computer has a CPU. The model represents a torus network of 128 × 4 processors. FIG. 8 shows a comparison of the performance behavior with program code generated for the different target systems. The diagram shows the simulation execution time over the number of processing units of the target system. While the input SUT description is kept constant, only the executable codes of the different target systems need to be changed using different aggregations according to the generation process. This is a great advantage when developing simulation software.
In einem zweiten Beispiel wird das erfindungsgemäße Verfahren wie oben beschrieben angewendet, um Zielsystem-spezifischen Quellcode (und sodann einen ausführbaren Simulationsprogrammcode) einmal für die ganze Simulation (statisches adaptives System) zu erzeugen. Des weiteren unterstützt die vorliegende Erfindung auch die Vorgehensweise einer Anpassung des Simula tionssystems zur Laufzeit der Simulationsausführung (dynamisches adaptives System). Dies basiert auf der Überlegung, daß während der Laufzeit einer konkreten Simulation die Last, d. h. das Aufkommen von Rechenleistung oder Datenkommunikation einzelner Verarbeitungseinheiten über die Zeit variieren kann, so daß das ursprünglich compilierte Programm weniger effizient wird. In diesem Fall kann die Software oder sowohl die Software als auch die Hardware geändert werden, um diese der gegenwärtigen Granularität des Problems anzu passen. Auf der Basis des Programms, wie es durch das erfindungsgemäße Verfahren erzeugt wird, ist dies möglich, ohne die ursprüngliche Modell quellcode-Beschreibung zu ändern. In a second example, the method according to the invention is as above described applied to target system-specific source code (and then an executable simulation program code) once for the entire simulation (static adaptive system). Furthermore supports the present invention also the procedure of an adaptation of the simula tion system at runtime of the simulation execution (dynamic adaptive System). This is based on the consideration that a concrete simulation the load, d. H. the advent of computing power or Data communication of individual processing units vary over time can, making the originally compiled program less efficient. In In this case, the software or both the software and the hardware be changed to reflect the current granularity of the problem fit. Based on the program as it is by the invention Process is generated, this is possible without the original model Change source code description.
Die Software-Anpassung wird durch Neucompilieren von Teilen oder der gesamten Modellcode-Beschreibung durchgeführt, die durch den ersten Schritt erhalten wurde mit unterschiedlicher Aggregation des zu simulierenden Modells gemäß dem zweiten Schritt. Vorteilhafterweise kann das Neucompilieren auf einem separaten Computersystem durchgeführt werden, so daß die laufende Simulation für die Zeit des Neucompilierens nicht unterbrochen werden muß. Der neucompilierte ausführbare Code kann in die jeweiligen Verarbeitungseinheiten zu beliebiger Zeit geladen werden.The software customization is done by recompiling parts or parts Entire model code description performed by the first step was obtained with different aggregation of the model to be simulated according to the second step. The recompile can advantageously be based on be performed on a separate computer system so that the current Simulation for the time of recompiling does not have to be interrupted. The Recompiled executable code can be put into the respective processing units can be loaded at any time.
Die Hardware-Konfiguration kann entweder manuell (d. h. durch Hinzufügen zusätzlicher Ressourcen zu dem Netzwerk) oder automatisch geändert werden. Eine Möglichkeit, die Ziel-Hardware automatisch zu ändern, ist gegeben durch die Verwendung wiederkonfigurierbarer programmierbarer Zellen (z. B. Feld programmierbarer Gate-Arrays (FPFAs). In diesem Fall ist das Simulationssystem geeignet, Systemlast-Parameter wie z. B. das Rechenaufkommen und die Kommunikationshäufigkeit der Verarbeitungseinheiten des Zielsystems zu überwachen. Wenn das Leistungsverhalten des Simulationsprogramms abfällt (oder wenn zusätzliche Hardware-Ressourcen verfügbar werden), kann die Si mulation "eingefroren" werden, die Hardware kann automatisch modifiziert werden (entsprechend der neuen Granularität des Problems) durch Neupro grammieren der Funktionszellen. Zu diesem Zweck sind die pogrammierbaren Zellen mit Programmiermitteln ausgestattet (z. B. mit einer entsprechenden Ladelogik). Dann wird durch Wiederanwenden des erfindungsgemäßen Ver fahrens das Simulationsprogramm an die neue Zielsystem-Konfiguration ange paßt. Da, wie oben beschrieben, das zu simulierende Modell überhaupt nicht geändert wird, kann die Simulationsausführung in demjenigen Zustand fortgesetzt werden, in dem es vor der Rekonfigurierung war.The hardware configuration can either be done manually (i.e. by adding additional resources to the network) or be changed automatically. One way to automatically change the target hardware is by the use of reconfigurable programmable cells (e.g. field programmable gate arrays (FPFAs). In this case, the simulation system suitable for system load parameters such as B. the computing volume and Communication frequency of the processing units of the target system monitor. When the performance of the simulation program drops (or if additional hardware resources become available), the Si "frozen", the hardware can be modified automatically are (according to the new granularity of the problem) by Neupro program the function cells. For this purpose, the programmable Cells equipped with programming means (e.g. with a corresponding Loading logic). Then, by reapplying the Ver drives the simulation program to the new target system configuration fits. Since, as described above, the model to be simulated is not at all is changed, the simulation execution can continue in that state in which it was before reconfiguration.
Dies führt zu einer kürzeren Gesamtrechenzeit für die Simulation und zu einer verbesserten Verwendung der verfügbaren Hardware-Ressourcen. This leads to a shorter total computing time for the simulation and to one improved use of available hardware resources.
Das erfindungsgemäße Verfahren kann mit Parallelrechen-Topologie jeglicher Art verwendet werden, seien es Multiprozessor-Konfigurationen oder erteilte Systeme, beispielsweise homogene oder inhomogene Netzwerke, oder Kombi nationen dieser Systeme. Selbstverständlich kann dieselbe Simulationsquelle verwendet werden für verschiedene Ebenen der Simulation, beispielsweise Simulation des SUT in makroskopischem, mesoskopischem oder mikroskopi schem Maßstab.The method according to the invention can be of any kind with parallel computing topology be used, be it multiprocessor configurations or issued Systems, for example homogeneous or inhomogeneous networks, or combi nations of these systems. Of course, the same simulation source used for different levels of simulation, for example Simulation of the SUT in macroscopic, mesoscopic or microscopic scale.
Dateneingaben für das zu simulierende System können durch Zufallsprozesse oder von gemessenen Prozessen aus dem entsprechenden realen System erzeugt werden. In letzterem Fall können die Ergebnisse der Simulation zum Steuern des künftigen Verhaltens des realen Systems verwendet werden, z. B. durch Beeinflussung von Parametern des realen Systems auf Basis der Simulationsergebnisse.Data entry for the system to be simulated can be done by random processes or generated from measured processes from the corresponding real system become. In the latter case, the results of the simulation can be used to control the future behavior of the real system can be used, e.g. B. by Influencing parameters of the real system based on the Simulation results.
Das erfindungsgemäße Quellcodeerzeugungsverfahren kann im Rahmen eines Softwareentwicklungs-Computersystems zum Erzeugen von Quellcodes für die Simulation eines beliebigen realen Systems angewendet werden, wie z. B. für ein Telekommunikationsnetz, Straßenverkehr auf einem Stadtplan zum Steuern des städtischen Verkehrs oder zum Steuern von Produktionsstätten.The source code generation method according to the invention can be used in the context of a Software development computer system for generating source codes for the Simulation of any real system can be applied, such as B. for a Telecommunications network, road traffic on a city map to control the urban traffic or to control manufacturing facilities.
Claims (19)
wobei die Ausgangs-Quellcodes dazu bestimmt sind, compiliert zu werden oder auf einem Ziel-Hardwaresystem, das mehrere Verarbeitungs untersysteme aufweist, ausgeführt zu werden,
wobei das Modell das System (SUT) darstellt als eine Anzahl von ele mentaren Prozessen (P1, . . ., Pn), wobei jeder elementare Prozeß (Pi) elementare Interaktionen (eIij, . . ., eIik) mit einer Anzahl von anderen (Pj, . . ., Pk) der elementaren Prozesse (P1, . . ., Pn) auszutauschen in der Lage ist,
wobei das Verfahren die folgenden Schritte aufweist:
- A) Zusammenfassen der Anzahl elementarer Prozesse (P1, . . ., Pn) in
eine vorbestimmte Anzahl (N) disjuncter Aggregate (A1, . . ., AN)
gemäß einer vorbestimmten Granularität mit Bezug auf die Ziel-
Verarbeitungssubsysteme, wobei jeder Aggregat (A1)
- a) eine Anzahl pi von Prozessen (Pa, . . ., Pb) der Anzahl elementarer Prozesse (P1, . . ., Pn) aufweist,
- b) Aggregat-Interaktionen (aIij) mit einer Anzahl der Anzahl von Aggregaten (A1, . . ., AN) hat, wobei jede Aggregat- Interaktion (aIij) elementare Interaktionen (eIac, . . ., eIad; eIbc, . . ., eIbd) der elementaren Prozesse (Pa, . . ., Pb) umfaßt, welche in dem jeweiligen Aggregat (Ai) zusammengefaßt sind, mit den elementaren Prozessen (Pc, . . ., Pd) eines anderen Aggregats (Aj),
- B) Zusammenfassen der Anzahl von Aggregaten (A1, . . ., AN), die im
vorangegangenen Schritt erhalten wurden, in eine vorbestimmte
Anzahl disjunkter Aggregate mit Bezug auf die Anzahl von Ziel-
Subsystemen, wobei jeder Aggregat (Aii)
- a) eine Anzahl ai der Anzahl von Aggregaten (A1, . . ., AN) aufweist,
- b) Aggregat-Interaktionen (aIij) mit einer Anzahl der Anzahl von Aggregraten (A1, . . ., AN) aufweist, wobei jede Aggregat-Interaktion (aIij) Aggregat-Interaktionen (aIac, . . ., aIad; aIbc, . . ., aIbd) derjenigen Aggregate (Aa, . . ., Ab) aufweist, die in dem jeweiligen Aggregat (Aii) zusam mengefaßt sind, mit anderen Aggregaten (Ac, . . ., Ad) eines anderen Aggregats (Ajj),
- C) rekursives Wiederholen des Schritts B) für einen oder mehrere der Aggregate (Ai), bis jeder resultierende Aggregat (Aii) eine vorbestimmte Granularität aufweist,
- D) Transformieren der resultierenden Aggregate (Aii) in Ausgangs- Quellcodes.
the source code being designed to be compiled or executed on a target hardware system that has multiple processing subsystems,
the model representing the system (SUT) as a number of elementary processes (P 1 ,..., P n ), each elementary process (P i ) having elementary interactions (eI ij ,..., eI ik ) with able to exchange a number of others (P j , .. , P k ) of the elementary processes (P 1 ,..., P n )
the method comprising the following steps:
- A) summarizing the number of elementary processes (P 1 ,..., P n ) into a predetermined number (N) of disjunct aggregates (A 1 ,..., A N ) according to a predetermined granularity with respect to the target processing subsystems, each aggregate (A 1 )
- a) has a number p i of processes (P a ,..., P b ) the number of elementary processes (P 1 ,..., P n ),
- b) has aggregate interactions (aI ij ) with a number of the number of aggregates (A 1 ,..., A N ), each aggregate interaction (aI ij ) having elementary interactions (eI ac ,..., eI ad ; eI bc ,..., eI bd ) of the elementary processes (P a ,..., P b ), which are combined in the respective aggregate (A i ), with the elementary processes (P c , ... , P d ) of another aggregate (A j ),
- B) summarizing the number of aggregates (A 1 ,..., A N ) obtained in the previous step into a predetermined number of disjoint aggregates with respect to the number of target subsystems, each aggregate (A ii )
- a) has a number a i of the number of aggregates (A 1 ,..., A N ),
- b) has aggregate interactions (aI ij ) with a number of the number of aggregates (A 1 ,..., A N ), each aggregate interaction (aI ij ) having aggregate interactions (aI ac ,..., aI ad ; aI bc ,..., aI bd ) of those aggregates (A a ,..., A b ) that are combined in the respective aggregate (A ii ) with other aggregates (A c ,.. , A d ) of another aggregate (A jj ),
- C) recursively repeating step B) for one or more of the aggregates (A i ) until each resulting aggregate (A ii ) has a predetermined granularity,
- D) transforming the resulting aggregates (A ii ) into output source codes.
Eine Anzahl von Verarbeitungseinheiten,
Speichermittel,
ein Netzwerk zum Verbinden der Verarbeitungseinheiten und der Spei chermittel,
dadurch gekennzeichnet, daß es zum Ausführen des Programms gemäß einem der Ansprüche 15 bis 17 geeignet ist.18. Hardware configuration for performing a simulation of a system (SUT), comprising:
A number of processing units,
Storage means,
a network for connecting the processing units and the storage means,
characterized in that it is suitable for executing the program according to one of Claims 15 to 17.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19921128A DE19921128A1 (en) | 1999-05-07 | 1999-05-07 | Process for generating target system-specific program codes, simulation processes and hardware configuration |
AU47551/00A AU4755100A (en) | 1999-05-07 | 2000-05-04 | Method of generating target system specific simulation program codes, simulationmethod, and hardware configuration |
PCT/EP2000/004002 WO2000068786A1 (en) | 1999-05-07 | 2000-05-04 | Method of generating target system specific simulation program codes, simulation method, and hardware configuration |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19921128A DE19921128A1 (en) | 1999-05-07 | 1999-05-07 | Process for generating target system-specific program codes, simulation processes and hardware configuration |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19921128A1 true DE19921128A1 (en) | 2000-11-23 |
Family
ID=7907327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19921128A Ceased DE19921128A1 (en) | 1999-05-07 | 1999-05-07 | Process for generating target system-specific program codes, simulation processes and hardware configuration |
Country Status (3)
Country | Link |
---|---|
AU (1) | AU4755100A (en) |
DE (1) | DE19921128A1 (en) |
WO (1) | WO2000068786A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109583074A (en) * | 2018-11-24 | 2019-04-05 | 上海畅赢智能科技有限公司 | Vehicle-mounted PIS control software rapid configuration generates information processing method and equipment |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4901260A (en) * | 1987-10-28 | 1990-02-13 | American Telephone And Telegraph Company At&T Bell Laboratories | Bounded lag distributed discrete event simulation method and apparatus |
US5375074A (en) * | 1990-01-23 | 1994-12-20 | At&T Corp. | Unboundedly parallel simulations |
US5652871A (en) * | 1995-04-10 | 1997-07-29 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Parallel proximity detection for computer simulation |
US5794005A (en) * | 1992-01-21 | 1998-08-11 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Synchronous parallel emulation and discrete event simulation system with self-contained simulation objects and active event objects |
US5801938A (en) * | 1994-10-03 | 1998-09-01 | Nasser Kalantery | Data processing method and apparatus for parallel discrete event simulation |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3620860B2 (en) * | 1992-06-05 | 2005-02-16 | 株式会社メガチップス | Simulation device |
EP0772140B1 (en) * | 1995-10-23 | 2004-01-07 | Interuniversitair Micro-Elektronica Centrum Vzw | A design environment and a design method for hardware/software co-design |
-
1999
- 1999-05-07 DE DE19921128A patent/DE19921128A1/en not_active Ceased
-
2000
- 2000-05-04 WO PCT/EP2000/004002 patent/WO2000068786A1/en active Application Filing
- 2000-05-04 AU AU47551/00A patent/AU4755100A/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4901260A (en) * | 1987-10-28 | 1990-02-13 | American Telephone And Telegraph Company At&T Bell Laboratories | Bounded lag distributed discrete event simulation method and apparatus |
US5375074A (en) * | 1990-01-23 | 1994-12-20 | At&T Corp. | Unboundedly parallel simulations |
US5794005A (en) * | 1992-01-21 | 1998-08-11 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Synchronous parallel emulation and discrete event simulation system with self-contained simulation objects and active event objects |
US5801938A (en) * | 1994-10-03 | 1998-09-01 | Nasser Kalantery | Data processing method and apparatus for parallel discrete event simulation |
US5652871A (en) * | 1995-04-10 | 1997-07-29 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Parallel proximity detection for computer simulation |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109583074A (en) * | 2018-11-24 | 2019-04-05 | 上海畅赢智能科技有限公司 | Vehicle-mounted PIS control software rapid configuration generates information processing method and equipment |
Also Published As
Publication number | Publication date |
---|---|
AU4755100A (en) | 2000-11-21 |
WO2000068786A1 (en) | 2000-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69322538T2 (en) | Method and processor for processing a program in parallel | |
DE69031758T2 (en) | Process for organizing and accessing product descriptive data in connection with a technical process | |
DE69730004T2 (en) | Digital System Simulation | |
DE60318086T2 (en) | SYSTEM AND METHOD OF REDUCING LINE DELAY OR OVERLOAD IN SYNTHESIS OF HARDWARE SOLVERN | |
DE69837130T2 (en) | Apparatus and method for simulating multiple nodes on a single machine | |
DE10039538B4 (en) | Apparatus and method for analyzing the performance of a computer program | |
DE102009053578A1 (en) | Method and apparatus for performing parallel routing using a multithreaded routing procedure | |
DE4110144A1 (en) | RAW MATERIAL PRODUCT GROUP ASSIGNMENT COORDINATOR | |
DE102008048478A1 (en) | Sampling strategy using genetic algorithms in the optimization of a technical design | |
DE102019131291B4 (en) | SIMULTANEOUS PERFORMANCE OF SERVICES | |
EP1604278B1 (en) | Method for controlling sequential object-oriented system-simulations | |
DE10333087A1 (en) | Process for the automatic decomposition of dynamic system models into sub-models | |
DE102018110018A1 (en) | A method for providing an integrated process for the ECU development and simulation device for the ECU development | |
DE102018104188A1 (en) | Combined Rendering and Calculation Resource Allocation Management System | |
DE102017120016A1 (en) | A method of configuring a test device set up to test an electronic controller and a configuration system | |
WO2017114883A1 (en) | Method for configuring a co-simulation for a total system | |
EP2386949B1 (en) | Method and device for allocating a number of sub-tasks from a task to a number of computing units in a pre-defined processor architecture | |
DE60124122T2 (en) | COMMUNICATION NETWORK DESIGN | |
DE19600428C2 (en) | Apparatus and method for reducing an actual process working set used by a process in a virtual memory computer system | |
EP2648094B1 (en) | Method and system for creating a source code for a computer program for executing and simulating a process | |
DE69712687T2 (en) | Language processing unit and method for translating a source program in an object module file | |
DE10324594A1 (en) | Method for providing improved simulation capabilities of a dynamic system outside of the original modeling environment | |
EP4068138A1 (en) | Method for splitting simulation models between a processor and an fpga | |
EP3901713B1 (en) | Method and device for operating a technical system with optimal model | |
DE19921128A1 (en) | Process for generating target system-specific program codes, simulation processes and hardware configuration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8131 | Rejection |