WO2012062595A1 - Verfahren und vorrichtung zum bewerten von software-parallelisierung - Google Patents

Verfahren und vorrichtung zum bewerten von software-parallelisierung Download PDF

Info

Publication number
WO2012062595A1
WO2012062595A1 PCT/EP2011/068861 EP2011068861W WO2012062595A1 WO 2012062595 A1 WO2012062595 A1 WO 2012062595A1 EP 2011068861 W EP2011068861 W EP 2011068861W WO 2012062595 A1 WO2012062595 A1 WO 2012062595A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
value
parallelization
software
effort
Prior art date
Application number
PCT/EP2011/068861
Other languages
English (en)
French (fr)
Inventor
Thomas Henties
Tobias SCHÜLE
Original Assignee
Siemens Aktiengesellschaft
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Siemens Aktiengesellschaft filed Critical Siemens Aktiengesellschaft
Priority to US13/884,994 priority Critical patent/US20130232471A1/en
Publication of WO2012062595A1 publication Critical patent/WO2012062595A1/de

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0639Performance analysis of employees; Performance analysis of enterprise or organisation operations

Definitions

  • the present invention relates to a method and apparatus for evaluating software parallelization.
  • FIG. 1 shows a profiler device 100 with which an expected benefit of parallelization can be estimated.
  • a software code 10 is compiled by a compiler 11 and output as an executable program 12.
  • a profiler 13 then calculates from program 12 the time gain that would result if instead of the sequential pass of program 12 a parallel pass would be performed. For this purpose, the profiler 13 accesses input data 14 representing typical inputs. The profiler 13 outputs the calculated information 15 for the expected time gain in a parallelization of the program 12. Based on the calculated information 15, a programmer can then decide whether or not to perform a parallelization of the software code 10. However, it is problematic in the procedure shown in FIG. 1 that the programmer's decision for parallelization is based only on the expected benefit. In this case, it may be possible for the information 15 to indicate a high level of benefit through a parallelization of a specific code part of the software code 10, but the programming effort for realizing the parallelization of this code part is disproportionately high.
  • a basic idea of the invention is founded the soft ⁇ ware code in the code structure corresponding code modules divide ⁇ and for each of the pieces of code to evaluate the complexity of the code ⁇ partly.
  • a cost-benefit ratio can be determined for each of the code parts, which can serve as evaluation ⁇ criterion for the prioritization of parallelizations.
  • One aspect of the present invention therefore relates to a method according to claim 1 for evaluating software parallelization, comprising the steps of: analyzing the structure of a software code; Dividing the software code into a plurality of code parts based on the structure of the software code; Determining a complexity value based on analyzing the structure of the sofware code for each of the plurality of code parts; Determining an effort value on the basis of the complexity value for each of the code parts, where ⁇ indicates the effort required for a parallelization of the code part in the effort value; and determining a Effi ⁇ zienz touches vo for each of the plurality pieces of code, the efficiency value of the efficiency of a parallelization of each of the plurality of code portions on the basis of a ratio between the estimated cost value and a useful value which indicates the expected performance gain by the parallelization of the respective code portion , rated.
  • the complexity value comprises a Codezei ⁇ leniere, a cyclomatic complexity value and / or a function point analysis value.
  • the utility value depends on the time savings, the reduction of the latency and / or the data throughput in the parallel execution of the respective code part.
  • the expected benefit can be attributed to quantifiable time values during parallelization. These values may preferably be provided by a profiler device.
  • the software parallelization evaluating device comprises an analyzing device configured to analyze the structure of a software code and to divide the software code into a plurality of code parts on the basis of the structure of the software code; a computing device configured to determine a complexity value based on the structure of the software code for each of the plurality of code parts and to obtain an effort value based on the complexity value for each of the code parts, the effort value being equal to that for parallelization of the code Code parts necessary effort indicates; and an evaluation device configured to output an efficiency value for each of the plurality of code parts, wherein the efficiency value is the efficiency of parallelizing each of the plurality of code parts based on a ratio between the determined cost value and a utility value containing the expected performance gain by the parallelization of the respective code part.
  • Figure 1 is a schematic illustration of a profiler device
  • Fig. 2 is a schematic representation of an apparatus for
  • FIG. 3 is a cost-benefit diagram according to another embodiment of the invention.
  • FIG. 4 is a schematic representation of a method for
  • FIG. 2 shows a schematic representation of a device 200 for evaluating software parallelization according to FIG Embodiment of the invention.
  • the apparatus 200 includes a Com ⁇ piler 11, of compiled software code 10, and as outputs from ⁇ feasible program 12.
  • a profiler 13 then calculates from program 12 the time gain that would result if instead of the sequential pass of program 12 a parallel pass would be performed.
  • the profiler 13 uses input data 14, which represent typical inputs .
  • the profiler 13 outputs the calculated information 15 for the expected time gain in a parallelization of the program 12.
  • the apparatus 200 includes egg ⁇ ne analyzing means 16 which analyzes the structure of the Softwareco- 10 and divides according to the structure in code parts.
  • the analysis means 16 can comprise a calculation ⁇ drying apparatus which determines one or more Komple ⁇ xticiansock 17 of the respective pieces of code. From the complexity values 17, it is then possible to determine expenditure values which indicate an estimate of the effort required for a parallelization of the respective code part.
  • the information 15 ascertained by the profiler 13 with the complexity values 17 and / or. the effort values of the calculation means or the analysis means 16 are combined to obtain an efficiency value for each of the code parts.
  • the efficiency value can ⁇ as in the efficiency of parallelization of each of the plurality of code portions on the basis of a ratio between the estimated cost value and a useful value which indicates the erwarte- th power gain by the parallelization of the respective code part Rate.
  • the useful value can be contained in the information 15, the effort value can be determined from the complexity values 17. This results in the output of the evaluation device 18 as a measure of a cost / benefit ratio to be expected for each of the code parts in the event of possible parallelization. It may be possible to examine only certain code portions of the software code 10 for efficiency of parallelization. For example, code parts which are already parallelized or in which parallelization is undesirable can be excluded from consideration. It may also be possible for the device 200 to comprise only the analysis device 16 and the evaluation device 18, and the corresponding information 15 to be provided by an external profiler device 100, as illustrated, for example, in FIG. 1.
  • complexity values 17 in FIG. 2 can be determined. It should be clear that the complexity criteria, variables, calculation formulas and numerical values shown here are only of an exemplary nature, and there are a multitude of possibilities, such as the complexity values 17 from the software code 10 and / or. the structure of the software code 10 determined we can.
  • Cyclic complexity is a measure of the complexity of the control flow of a piece of code that takes into account the number of binary branches within the control flow graph of the piece of code. The higher the number of binary branches, the greater the cyclomatic complexity.
  • Function point analysis values can be determined by decomposing a code into logical data types and elementary processes and then determining the functional scope by evaluating the elementary processes in conjunction with the logical data type. Depending on the complexity of the code parts, the system can thus be subdivided into degrees of complexity.
  • Parallelization probabilities can be determined using heuristic methods with softened parallelization requirements. Strict parallelization requirements require a definite absence of data dependencies between the processes to be parallelized, so that, for example, in the case of automated parallelization, occurrence of data access conflicts can definitely be ruled out. These parallelization requirements can be softened insofar as it is first assumed without definite knowledge that there are no data dependencies between parallel processes, unless proven otherwise. It can be used to specify parallelization probabilities that tell us how probable it is whether a parallelization of the corresponding processes leads to data confi guration.
  • a parallelization probability can be set to 0 if there are data dependencies that can not be resolved by standard transforms or compilation optimizations such as loop splitting or loop peeling.
  • Probability can be set to 1 if, for example, there are no data dependencies between different ones
  • Loop iterations exist. Values between 0 and 1 can for parallelization probabilities, for example if they are different data types, an overlap of the data in the memory can not definitely be ruled out or if no data dependencies are known so far.
  • the complexity of a code may be formed by the product of the number of lines (LoC) and the cyclomatic complexity.
  • an effort value E is formed using a product of static complexity C, ie the complexity of the structure of the code, and parallelization probability P:
  • Calculating code parts can be based on various parameters, for example the acceleration of the overall system or of the individual
  • the expected performance gain S can be expressed as the ratio between an original transit time t Q in the case of a sequential pass of the considered program part and a sum of the transit time t P during the parallel execution of program parts and the transit time t. during the failure to sequential processing are calculated the remaining program ⁇ parts:
  • P and t to calculate the transit time values t c, t, ⁇ infor mation can be used on the number of available parallel Sawo ⁇ ren and / or assumptions about the data dependencies ⁇ .
  • the number of processors can be a fixed identifier coded bene integer or infinite theoretical Be ⁇ trachtept.
  • an efficiency value F can then be determined from the ratio of the effort value E and the expected performance gain S:
  • the efficiency value F may in this example assume values between 0 and infinity, where a high value of F designates code parts in which the cost-benefit ratio is estimated to be high in a parallelization.
  • a high value of F designates code parts in which the cost-benefit ratio is estimated to be high in a parallelization.
  • For a Ran ⁇ king of pieces of code can be made according to their efficiency value F according to which the parallelization can be prioritized by a Program ⁇ mers.
  • Table 1 shows by way of example the corresponding transit times t Q , t 3 and t p in seconds, the complexity values C in number of lines of code (LoC), the parallelization Probabilities P, the effort values E, expected to the performance gains S and the determined efficiency values for different code parts, here functions W, X, Y and Z given.
  • the values for the complexity C and the parallelization probabilities P can be determined by the analysis device 16 in FIG. 2; the transit time values t Q and t 3 can be provided by a profiler 13 as in FIG.
  • the effort values E, the running times t p , the expected performance gains S and the efficiency values F can be calculated according to the above examples, taking into account the number of parallel processors and heuristic constants.
  • Function X is a cost-benefit ratio of 30, while the Cost-benefit ratio for the function W is only 5.
  • FIG. 3 plots the expected power gains S as a function of the effort values E. This gives a curve 20 for the efficiency values.
  • the curve 20 at a point (E b , S b ) on a kink.
  • E b the expected performance gain increases much more with the effort E than in the range E> E b .
  • E b the expected performance gain increases much more with the effort E than in the range E> E b .
  • software parallelization hardly pays off. It can be provided, for example, to exclude such code parts or functions in general from the further consideration of possible candidates for parallelization.
  • 4 shows a schematic representation of a method
  • a software code is analyzed. siert. This can be done, for example, by means of an analysis device 16 as shown in FIG. 2.
  • the software code is divided into a plurality of code parts on the basis of the structure of the software code.
  • the code parts may be functions, loops, ects, function calls, basic program blocks, program modules or the like.
  • at least one complexity value is determined on the basis of analyzing the structure of the software code for each of the plurality of code parts.
  • the complexity value can be a complexity value 17 as explained with reference to FIG.
  • an effort value is determined on the basis of the complexity value for each of the code parts, the effort value indicating the effort required for a parallelization of the code part.
  • the cost value can in particular be an expense value E as explained in connection with FIG. 2.
  • an efficiency value is determined for each of the plurality of code parts, the efficiency value being the efficiency of parallelizing each of the plurality of code parts based on a ratio between the determined effort value and a utility value representing the expected performance gain through the parallelization of the respective code part, evaluated.
  • the efficiency value can be an efficiency value F as described in connection with FIG. 2 will be explained.
  • an evaluation of the software parallelization of the software code can then be carried out; in particular, a programmer can use the in
  • Step 45 determined efficiency values to prioritize the reprogramming of the plurality of code parts.

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Theoretical Computer Science (AREA)
  • Development Economics (AREA)
  • Educational Administration (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Game Theory and Decision Science (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zum Bewerten von Software-Parallelisierung, mit den Schritten des Analysierens der Struktur eines Softwarecodes (10), des Aufteilens des Softwarecodes in eine Vielzahl von Codeteilen auf der Basis der Struktur des Softwarecodes, des Ermittelns eines Komplexitätswertes (17) auf der Basis des Analysierens der Struktur des Softwärecodes für jeden der Vielzahl von Codeteilen, des Ermittelns eines Aufwandswertes auf der Basis des Komplexitätswertes (17) für jeden der Codeteile, wobei der Aufwandswert den für eine Parallelisierung des Codeteils notwendigen Aufwand angibt, und des Ermittelns eines Effizienzwertes für jeden der Vielzahl von Codeteilen, wobei der Effizienzwert die Effizienz einer Parallelisierung jedes der Vielzahl von Codeteilen auf der Basis eines Verhältnisses zwischen dem ermittelten Aufwandswert und einem Nutzwert, der den erwarteten Leistungsgewinn durch die Parallelisierung des jeweiligen Codeteils angibt, bewertet.

Description

Beschreibung
Verfahren und Vorrichtung zum Bewerten von Software- Parallelisierung
Die vorliegende Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung zum Bewerten von Software-Parallelisierung .
Stand der Technik
Software ist häufig sequenziell programmiert , das heißt, dass die Befehle des aus dem Softwarecode generierten Programms in einem einzigen Thread oder Prozess nacheinander abgearbeitet werden . Moderne Rechner mit mehreren Prozessoren bzw. Prozes- sorkernen sind allerdings prinzipiell in der Lage mehrere
Threads oder Prozesse gleichzeitig abzuarbeiten und somit die benötigte Gesamtrechenzeit für den Durchlauf eines Programms erheblich zu verkürzen . Um in den Genuss dieser Vorteile paralleler Programmabarbeitung in solchen Rechnern mit mehreren Prozessoren bzw. Prozessorkerne zu kommen, ist es notwendig, bestehende Programme beziehungsweise deren zugrunde liegenden Softwarecode zu pa- rallelisieren, das heißt, den Code derart umzuschreiben, dass eine konflikt- und verklemmungs freie Abarbeitung in mehreren Threads oder Prozessen gleichzeitig möglich ist.
Eine Parallelisierung von bestehendem Softwarecode ist eine zeitaufwändige Aufgabe . Gerade bei umfangreichem Code ist der Aufwand zur Parallelisierung des gesamten Softwarecodes immens . Eine Möglichkeit zur Parallelisierung von Softwarecode ist die vollständige Automatisierung der Parallelisierung. Eine automatische Parallelisierung ist allerdings häufig schwierig zu erreichen, da zur Konflikt- und Verklemmungsver- meidung die Parallelisierungs regeln streng eingehalten werden müssen . Dies kann dazu führen, dass nur einfache und statisch analysierbare Teile des Softwarecodes automatisch paralleli- siert werden können . Es ist daher wünschenswert, auch komplexere Softwarecode- Teile einer manuellen Parallelisierung zugänglich zu machen. Fig. 1 zeigt eine Profiler-Vorrichtung 100, mit welcher ein erwarteter Nutzen einer Parallelisierung abgeschätzt werden kann. Ein Softwarecode 10 wi d von einem Compiler 11 kompiliert und als ausführbares Programm 12 ausgegeben. Ein Profiler 13 berechnet dann aus dem Programm 12 den Zeitgewinn, der sich ergeben würde, wenn statt des sequenziellen Durchlaufs des Programms 12 ein paralleler Durchlauf durchgeführt werden würde. Dazu greift der Profiler 13 auf Eingabedaten 14 zurück, die typische Eingaben repräsentieren. Der Profiler 13 gibt die berechneten Informationen 15 zu dem zu erwartenden Zeitgewinn bei einer Parallelisierung des Programms 12 aus. Anhand der berechneten Informationen 15 kann ein Programmierer dann entscheiden, ob er eine Parallelisierung des Softwarecodes 10 vornimmt oder nicht . Problematisch bei der in Fig. 1 gezeigten Vorgehensweise ist j edoch, dass die Entscheidung des Programmierers zur Parallelisierung nur auf de zu erwartenden Nutzen basiert . Es kann dabei möglich sein, dass die Informationen 15 einen hohen Nutzen durch eine Parallelisierung eines bestimmten Codeteils des Softwarecodes 10 angeben, der Programmieraufwand zur Realisierung der Parallelisierung dieses Codeteils jedoch unverhältnismäßig hoch ist .
Um den gesamten Aufwand des Programmierers, der die Paralle- lisierung vornimmt , möglichst gering zu halten, ist es erforderlich, dem Programmierer Kriterien an die Hand zu geben, anhand derer er das Kosten-Nutzen-Verh ltnis bei der Parallelisierung von Teilen des Softwarecodes abschätzen und seinen Aufwand dementsprechend priorisieren kann .
Offenbarung der Erfindung Eine grundlegende Idee der Erfindung besteht darin, den Soft¬ warecode in der Codestruktur entsprechende Codeteile aufzu¬ teilen und für jeden der Codeteile die Komplexität des Code¬ teils zu bewerten. Anhand der Komplexität des Codes und des zu erwartenden Nutzens kann ein Kosten-Nutzen-Verhältnis für jeden der Codeteile ermittelt werden, welches als Bewertungs¬ kriterium für die Priorisierung von Parallelisierungen dienen kann . Ein Aspekt der vorliegenden Erfindung betrifft daher ein Ver¬ fahren nach Anspruch 1 zum Bewerten von Software- Parallelisierung, mit den Schritten : Analysieren der Struktur eines Softwarecodes; Aufteilen des Softwarecodes in eine Vielzahl von Codeteilen auf der Basis der Struktur des Soft- warecodes; Ermitteln eines Komplexitätswertes auf der Basis des Analysierens der Struktur des Sof warecodes für jeden der Vielzahl von Codeteilen; Ermitteln eines Aufwandswertes auf der Basis des Komplexitätswertes für jeden der Codeteile, wo¬ bei der Aufwandswert den für eine Parallelisierung des Code- teils notwendigen Aufwand angibt; und Ermitteln eines Effi¬ zienzwertes für jeden der Viel zahl vo Codeteilen, wobei der Effizienzwert die Effizienz einer Parallelisierung jedes der Vielzahl von Codeteilen auf der Basis eines Verhältnisses zwischen dem ermittelten Aufwandswert und einem Nutzwert, der den erwarteten Leistungsgewinn durch die Parallelisierung des jeweiligen Codeteils angibt, bewertet. Dieses Verfahren bie¬ tet den Vorteil, quantitative Informationen über den Kosten- Nutzen-Effekt einer Parallelisierung von Softwarecode-Teilen bereitzustellen, um so einem Programmierer, der den Software- code parallelisieren will, eine Entscheidungshilfe zu geben, an welchen Stellen im Softwarecode eine Parallelisierung den größten zu erwartenden Nutzen bei dem geringsten Aufwand ver¬ spricht . Vorteilhafterweise umfasst der Komplexitätswert eine Codezei¬ lenzahl, einen zyklomatischen Komplexitätswert und/oder einen Function-Point-Analysewert . Dies bietet den Vorteil, dass die
Kosten-Nutzen-Vorhersage des Bewertungsverfahrens auf quanti- fi zierbaren Komplexitätskriterien für den jeweiligen Softwarecode basiert.
Vorteilhafterweise hängt der Nutzwert von der Zeitersparnis, der Verringerung der Latenzzeit und/oder dem Datendurchsatz bei der parallelen Ausführung des jeweiligen Codeteils ab.
Dadurch kann der zu erwartende Nutzen bei einer Parallelisie- rung auf quantifizierbare zeitliche Werte zurückgeführt werden. Diese Werte können bevorzugt von einer Profiler- Einrichtung bereitgestellt werden.
Gemäß einer weiteren Ausführungsform der Erfindung nach Anspruch 5 umfasst die Vorrichtung zum Bewerten von Software- Parallel isierung eine Analyseeinrichtung, die dazu ausgelegt ist, die Struktur eines Softwarecodes zu analysieren und den Softwarecode in eine Vielzahl von Codeteilen auf der Basis der Struktur des Softwarecodes aufzuteilen; eine Berechnungseinrichtung, die dazu ausgelegt ist, einen Komplexitätswert auf der Basis der Struktur des Softwarecodes für jeden der Vielzahl von Codeteilen zu ermitteln und einen Aufwandswert auf der Basis des Komplexitätswertes für jeden der Codeteile zu ermitteln, wobei der Aufwandswert den für eine Paralleli- sierung des Codeteils notwendigen Aufwand angibt; und eine Bewertungseinrichtung, die dazu ausgelegt ist , einen Effi- zienzwert für j eden der Vielzahl von Codeteilen auszugeben, wobei der Effizienzwert die Effizienz einer Parallelisierung j edes der Vielzahl von Codeteilen auf der Basis eines Verhältnisses zwischen dem ermittelten Aufwandswert und einem Nutzwert , der den erwarteten Leistungsgewinn durch die Paral- lelisierung des jeweiligen Codeteils angibt , bewertet .
Weitere Modi fikationen und Variationen ergeben sich aus den Merkmalen der abhängigen Ansprüche. Kurze Beschreibung der Zeichnungen Verschiedene Ausführungsformen und Ausgestaltungen der vorliegenden Erfindung werden nun in Bezug auf die beiliegenden Zeichnungen genauer beschrieben, in denen Fig. 1 eine schematische Darstellung einer Profiler- Vorrichtung;
Fig. 2 eine schematische Darstellung einer Vorrichtung zum
Bewerten von Softwäre-Parallel isierung gemäß einer Ausführungsform der Erfindung;
Fig . 3 ein Kosten-Nutzen-Diagramm gemäß einer weiteren Ausführungsform der Erfindung; und Fig . 4 eine schematische Darstellung eines Verfahrens zum
Bewerten von Software-Parallel isierung gemäß einer weiteren Aus führungs form der Erfindung zeigen .
Die beschriebenen Ausgestaltungen und Weiterbildungen lassen sich, sofern sinnvoll , beliebig miteinander kombinieren . Weitere mögliche Ausgestaltungen, Weiterbildungen und Implementierungen der Erfindung umfassen auch nicht explizit genannte Kombinationen von zuvor oder im Folgenden bezüglich der Aus- führungsbeispiele beschriebenen Merkmale der Erfindung .
Die beiliegenden Zeichnungen sollen ein weiteres Verständnis der Ausführungs formen der Erfindung vermitteln . Sie veranschaulichen Aus führungs formen und dienen im Zusammenhang mit der Beschreibung der Erklärung von Prinzipien und Konzepten der Erfindung . Andere Ausführungs formen und viele der genannten Vorteile ergeben sich im Hinblick auf die Zeichnungen . Gleiche Bezugszeichen bezeichnen dabei gleiche oder ähnlich wirkende Komponenten . Ausführliche Beschreibung der Erfindung
Fig . 2 zeigt eine schematische Darstellung einer Vorrichtung 200 zum Bewerten von Software-Parallelisierung gemäß einer Ausführungsform der Erfindung. Wie bereits im Zusammenhang mit Fig. 1 erläutert, umfasst die Vorrichtung 200 einen Com¬ piler 11, der einen Softwarecode 10 kompiliert und als aus¬ führbares Programm 12 ausgibt. Ein Profiler 13 berechnet dann aus dem Programm 12 den Zeitgewinn, der sich ergeben würde, wenn statt des sequenziellen Durchlaufs des Programms 12 ein paralleler Durchlauf durchgeführt werden würde. Dazu greift der Profiler 13 auf Eingabedaten 14 zurück, die typische Ein¬ gaben repräsentieren. Der Profiler 13 gibt die berechneten Informationen 15 zu dem zu erwartenden Zeitgewinn bei einer Parallel isierung des Programms 12 aus.
Zusätzlich zu dem Compiler 11 umfasst die Vorrichtung 200 ei¬ ne Analyseeinrichtung 16, welche die Struktur des Softwareco- des 10 analysiert und entsprechend der Struktur in Codeteile aufteilt. Die Analyseeinrichtung 16 kann dabei eine Berech¬ nungseinrichtung umfassen, welche einen oder mehrere Komple¬ xitätswerte 17 der jeweiligen Codeteile bestimmt. Aus den Komple itätswerten 17 können dann Aufwandswerte ermittelt werden, welche eine Abschätzung des für eine Parallelisierung des j eweiligen Codeteils erforderlichen Aufwands angeben . In einer Bewertungseinrichtung 18 werden die durch den Prof i ler 13 ermittelten Informationen 15 mit den Komplexitätswerten 17 bzw . den Aufwandswerten der Berechnungseinrichtung oder der Analyseeinrichtung 16 kombiniert , um einen Effizienzwert für jeden der Codeteile zu ermitteln . Der Effizienzwert kann da¬ bei die Effizienz einer Parallelisierung jedes der Viel zahl von Codeteilen auf der Basis eines Verhältnisses zwischen dem ermittelten Aufwandswert und einem Nutzwert , der den erwarte- ten Leistungsgewinn durch die Parallelisierung des jeweiligen Codeteils angibt, bewerten . Der Nutzwert kann dabei in den Informationen 15 enthalten sein, der Aufwandswert aus den Komplexitätswerten 17 bestimmt werden . Damit ergibt sich als Ausgabe de Bewertungseinrichtung 18 ein Maß für ein zu er- wartendes Kosten-Nutzen-Verhältnis für j eden der Codeteile bei einer möglichen Parallelisierung . Es kann möglich sein, nur bestimmte Codeteile des Softwarecodes 10 auf eine Effizienz einer Parallel isierung hin zu untersuchen . Beispielsweise können Codeteile, die bereits pa- rallelisiert sind oder bei denen eine Parallelisierung uner- wünscht ist, von der Betrachtung ausgeschlossen werden . Es kann weiterhin möglich sein, dass die Vorrichtung 200 nur die Analyseeinrichtung 16 und die Bewertungseinrichtung 18 um- fasst, und die entsprechenden Informationen 15 durch eine externe Profiler-Einrichtung 100, wie beispielsweise in Fig. 1 dargestellt, bereitgestellt werden .
Im Folgenden werden Ausführungsbeispiele erläutert , wie die Komplexitätswerte 17 in Fig. 2 ermittelt werden können . Es sollte klar sein, dass die hier gezeigten Komplexitäts krite- rien, Variablen, Berechnungsformeln und Zahlenwerte nur beispielhafter Natur sind, und es eine Vielzahl von Möglichkeiten gibt , wie die Komplexitätswerte 17 aus dem Softwarecode 10 bzw . der Struktur des Softwarecodes 10 ermittelt we den können .
Die Aufwandswerte, die auf der Basis der Komplexitätswerte 17 bestimmt werden können, werden ebenfalls anhand von Ausfüh- rungsbei spielen genauer erläutert . Es versteht sich jedoch, dass eine Vielzahl anderer Berechnungs- und/oder Bestimmungs- mögHenkelten existiert, die ebenso wie die nachfolgenden Berechnungen angewandt werden können .
Zur Bestimmung der Komplexität eines Softwarecodes oder der Struktur eines Softwarecodes können verschiedene Kriterien herangezogen werden, beispielsweise die Anzahl der Zeilen an Softwarecode in dem betrachteten Codeteil , mit oder ohne abhängiger Aufrufe, die zyklomatische Komplexität , Function- Point-Analysewerte, COCOMO (construetive cost model , ein algorithmisches Aufwandsmodell ) , Parallelisierungs- Wahrscheinlichkeiten, Konfliktwahrscheinlichkeiten, und dergleichen . Zyklomatische Komplexität ist ein Maß für die Komplexität des Kontroll flusses eines Codeteils, welches die Anzahl an Binärverzweigungen innerhalb des Kontrollflussgraphen des Codeteils berücksichtigt. Je höher die Anzahl der Binärverzwei- gungen ist, desto größer wird die zyklomatische Komplexität angesetz .
Function-Point-Analysewerte können über Zerlegung eines Codes in logische Datentypen und Elementarprozesse und darauffol- gende Bestimmung des funktionalen Umfangs über Auswertung der Elementarprozesse im Zusammenhang mit den logischen Datentype ermittelt werden . Je nach Komplexität der Codeteile kann das System damit in Komplexitätsgrade unterteilt werden . Parallelisierungs-Wahrscheinlichkeiten können über heuristische Verfahren mit aufgeweichten Parallelisierungsanforderungen ermittelt werden . Strenge Parallelisierungsanforderungen erfordern ein definitives Nicht-Vorliegen von Datenabhängigkeiten zwischen den zu parallel isierenden Prozessen, damit beispielsweise bei einer automatisierten Parallelisierung ein Auftreten von Datenzugriffskonflikten definitiv ausgeschlossen werden kann . Diese Parallelisierungsanforderungen lassen sich insofern aufweichen, als dass ohne definitive Kenntnis zunächst angenommen wird, dass keine Datenabhängigkeiten zwi- sehen zu parallel isierenden Prozessen bestehen, solange nicht das Gegenteil bewiesen ist . Damit können Parallel isierungs- Wahrscheinlichkeiten angegeben werden, die eine Aussage darüber treffen, wie wahrscheinlich es ist , ob eine Parallelisierung der entsprechenden Prozesse zu DatenkonfIi kten führt .
Beispielsweise kann eine Parallelisierungs-Wahrscheinlichkeit auf 0 gesetzt werden, wenn es Datenabhängigkeiten gibt , die durch Standardtransformationen bzw. Kompilierungsoptimierungen wie Schlei fenentzerrung ( loop Splitting bzw . loop pee- ling) nicht aufgelöst werden können . Die Parallelisierungs-
Wahrscheinlichkeit kann auf 1 gesetzt werden, wenn beispielsweise keine Datenabhängigkeiten zwischen verschiedenen
Schleifeniterationen bestehen . Werte zwischen 0 und 1 können für Parallelisierungs-Wahrscheinlichkeiten vergeben werden, wenn es sich beispielsweise um verschiedene Datentypen handelt, eine Überlappung der Daten im Speicher edoch nicht definitiv ausgeschlossen werden kann oder wenn bisher keine Da- tenabhängigkeiten bekannt sind .
Um Aufwandswerte zu bestimmen, können eine oder mehrere der oben geschilderten Komplezitätskriterien herangezogen werden und unter Berücksichtigung verschiedener Gewichtungen zusam- mengestellt werden . Beispielsweise kann die Komplexität eines Codes durch das Produkt aus der Zeilenanzahl (LoC) und der zyklomati sehen Komplexität gebildet werden .
Im folgenden Beispiel wird ein Aufwandswert E über ein Pro- dukt aus statischer Komplexität C, also der Komplexität der Struktur des Codes , und Parallelisierungs-Wahrscheinlichkeit P gebildet :
E = C * (1-P)
Dabei werden zunächst einzelne Werte der Komplexität C und der Parallelisierungs-Wahrscheinlichkeit P für die Unterbestandteile des Codes gesammelt und geeignet zusammengefasst , um dann den Aufwandswert E für den gesamten Code bzw. den ge- samten Codeteil zu ermitteln .
Um den zu erwartenden Leistungsgewinn bei einer Parallelisie- rung eines Codes bzw . Codeteils zu berechnen, kann auf verschiedene Parameter zurückgegri ffen werden, beispielsweise die Beschleunigung des Gesamtsystems oder des j eweiligen
Durchlaufs des betrachteten Programmteils, die Verringerung der Latenzzeit oder den Datendurchsatz . In einem hier gezeigten Beispiel kann der zu erwartende Leistungsgewinn S als Verhältnis zwischen einer ursprünglichen Laufzeit tQ bei se- quenziellem Durchlauf des betrachteten Programmteils und einer Summe aus der Laufzeit tP während der parallelen Abarbeitung von Programmteilen und der Laufzeit t. während der ver- bliebenen sequenziellen Abarbeitung der restlichen Programm¬ teile berechnet werden:
S = t0 / (t„ + tp)
Um die Laufzeitwerte tc, tp und t, zu berechnen, können Infor¬ mationen über die Anzahl der verfügbaren parallelen Prozesso¬ ren und/oder Annahmen über Datenabhängigkeiten verwendet wer¬ den. Die Anzahl der Prozessoren kann dabei eine fest vorgege- bene natürliche Zahl sein oder unendlich für theoretische Be¬ trachtungen. Weiterhin kann es vorgesehen sein, in die Be¬ rechnung der Laufzeitwerte tQ, tp und t3 die Werte der Paral¬ lel isierungs -Wahrscheinlichkei P für die einzelnen Codeteile mit zu berücksichtigen, beispielsweise indem für Codeteile mit einer Parallelisierungs-Wahrscheinlichkeit P unter einem gewissen Schwellwert angenommen wird, dass diese Codeteile prinzipiell nicht parallelisierbar sind und diesen für die sequenzielle Laufzeit t3 die ursprüngliche Laufzeit tQ zuge¬ ordnet wird, das heißt, dass der Laufzeitgewinn gleich 0 ge- setzt wird .
Im vorliegenden Beispiel kann dann ein Effizienzwert F aus dem Verhältnis des Aufwandswertes E und dem zu erwartenden Leistungsgewinn S bestimmt werden :
F = (S-l) * 100 / E
Der Effizienzwert F kann in diesem Beispiel Werte zwischen 0 und unendlich annehmen, wobei ein hoher Wert von F Codeteile bezeichnet, bei denen das Kosten-Nutzen-Verhältnis bei einer Parallel isierung hoch eingeschätzt wird. Damit kann ein Ran¬ king von Codeteilen je nach ihrem Effizienzwert F vorgenommen werden, nach denen die Parallelisierung durch einen Program¬ mierer priorisiert werden kann .
In Tabelle 1 sind beispielhaft die entsprechenden Laufzeiten tQ, t3 und tp in Sekunden, die Komplexitätswerte C in Anzahl der Zeilen an Code (LoC) , die Parallelisierungs- Wahrscheinlichkeiten P, die Aufwandswerte E, die zu erwarten den Leistungsgewinne S sowie die ermittelten Effizienzwerte für verschiedene Codeteile, hier Funktionen W, X, Y und Z an gegeben .
Figure imgf000013_0001
Tabelle 1
Die Werte für die Komplexität C und die Parallelisierungs- Wahrscheinlichkeiten P können durch die Analyseeinrichtung 16 in Fig. 2 ermittelt werden, die Laufzeitwerte tQ und t3 können beispielsweise durch einen Profiler 13 wie in Fig. 1 oder 2 bereitgestellt werden. Die Aufwandswerte E, die Laufzeiten tp, die zu erwartenden Leistungsgewinne S sowie die Effizienzwerte F können gemäß der obigen Beispiele unter Berück- sichtigung der Anzahl der parallelen Prozessoren und heuristischer Konstanten berechnet werden.
Anhand der beispielhaften Werte in Tabelle 1 kann man ablesen, dass neben der Funktion Y, die aufgrund der hohen Paral- lelisierungs -Wahrscheinlichkeit P und insbesondere wegen des nicht vorhandenen Aufwands E einen unendlichen hohen Effizienzwert F aufweist, die Funktion X mit einem vergleichsweise hohen Effizienzwert F von 30 für eine bevorzugte Paralle- lisierung in Frage kommt. Zwar ist der absolute zu erwartende Leistungsgewinn, beispielsweise ausgedrückt durch die absolute Zeitersparnis, für die Funktion W höher, allerdings weist die Funktion W im Beispiel der Tabelle 1 eine wesentlich höhere Anzahl an Codezeilen (LoC) auf, so dass der erwartete Aufwand zur Parallel isierung der Funktion W erheblich höher als der für die Funktion X ist . Damit ergibt sich für die
Funktion X ein Kosten-Nutzen-Verhältnis von 30, während das Kosten- utzen-Verhältnis für die Funktion W nur 5 beträgt. Die Funktion Z in Tabelle 1 kommt für eine Software- Parallel isierung nicht in Betracht, da ihr Effizienzwert F = 0 beträgt. Dies ergibt sich daraus, dass kein Teil der Funk- tion Z parallel abläuft bzw. ablaufen kann, was keine Zeitersparnis einbringt und damit der erwartete Leistungsgewinn S nur einen Wert von i annimmt .
Selbstverständlich gibt es viele verschiedene Möglichkeiten, eine Ausgabe zur Bewertung eine Software-Parallel isierung zu strukturieren. Beispielsweise ist es möglich, andere Berechnungsformeln mit anderen Komplexitätskriterien und anderen Gewichtungen zu wählen. Es ist auch möglich, die Skalierung der Effizienzwerte F anders zu wählen, oder die Ausgabe des Effizienzwertes F zu diskretisieren, beispielsweise durch Angabe von sprachlichen Bewertungskriterien wie "lohnenswert" , "bedingt lohnenswert", "nicht lohnenswert" oder dergleichen.
Es ist auch möglich, die Effizienzwerte in einem Diagramm darzustellen. Ein Beispiel für ein derartiges Diagramm ist in Fig. 3 gezeigt. In Fig. 3 sind die erwarteten Leistungsgewinne S in Abhängigkeit der Aufwandswerte E aufgetragen. Dies ergibt eine Kurve 20 für die Effizienzwerte . Im Beispiel in Fig. 3 weist die Kurve 20 an einen Punkt (Eb, Sb) einen Knick auf. Im Bereich für E < Eb nimmt der zu erwartende Leistungsgewinn wesentlich stärker mit dem Aufwand E zu als in dem Bereich E > Eb. Dies zeigt, dass in dem Beispiel für Codeteile bzw. Funktionen mit einem Aufwandswert E, der über einer Grenze Eb liegt, sich eine Software-Parallelisierung kaum lohnt. Es kann beispielsweise vorgesehen sein, solche Codeteile bzw. Funktionen generell von der weiteren Betrachtung bezüglich möglicher Kandidaten für eine Parallelisierung auszuschließen . Fig. 4 zeigt eine schematische Darstellung eines Verfahrens
400 zum Bewerten von Softwäre-Parallel isierung . In einem ersten Schritt 41 wird die Struktur eines Softwarecodes analy- siert . Dies kann beispielsweise mithilfe einer Analyseeinrichtung 16 wie in Fig. 2 gezeigt geschehen.
In einem zweiten Schritt 42 wird der Sof warecode in eine Vielzahl von Codeteilen auf der Basis der Struktur des Softwarecodes aufgeteilt . Die Codeteile können dabei Funktionen, Schleifen, Ob ekte, Funktionsaufrufe, Basisprogrammblöcke, Programmmodule oder dergleichen sein . In einem dritten Schritt 43 wird mindestens ein Komplexitätswert auf der Basis des Analysierens der Struktur des Softwarecodes für j eden der Vielzahl von Codeteilen ermittelt . Der Komp1exitätswert kann dabei ein Komplexitätswert 17 wie im Bezug auf Fig. 2 erläutert sein .
In einem vierten Schritt 44 wird ein Aufwandswert auf der Basis des Komplexitätswertes für jeden der Codeteile ermittelt , wobei der Aufwandswert den für eine Parallelisierung des Codeteils notwendigen Aufwand angibt . Der Aufwandswert kann da- bei insbesondere ein Aufwandswert E wie im Zusammenhang mit Fig. 2 erläutert sein .
In einem fünften Schritt 45 wird ein Effizienzwert für jeden der Vielzahl von Codeteilen ermittelt, wobei der Effizienz- wert die Effizienz einer Parallelisierung jedes der Vielzahl von Codeteilen auf der Basis eines Verhältnisses zwischen dem ermittelten Aufwandswert und einem Nutzwert , der den erwarteten Leistungsgewinn durch die Parallelisierung des jeweiligen Codeteils angibt, bewertet . Der Effizienzwert kann dabei ein Effizienzwert F wie im Zusammenhang mit Fig . 2 erläutert sein . Anhand des Effizienzwertes kann dann eine Bewertung der Software-Parallelisierung des Softwarecodes vorgenommen werden, insbesondere kann ein Programmierer anhand der in
Schritt 45 ermittelten Effizienzwerte eine Priorisierung für die Umprogrammierung der Vielzahl von Codeteilen erstellen .

Claims

Patentansprüche
Verfahren zum Bewerten von Software-Parallelisierung, mit den Schritten:
Analysieren de Struktur eines Softwarecodes (10) ;
Aufteilen des Softwarecodes (10) in eine Vielzahl von Codeteilen auf der Basis der Struktur des Softwarecodes (10) ;
Ermitteln eines Komplexitätswertes (17) auf der Basis des Analysierens der Struktur des Softwarecodes (10) für jeden der Vielzahl von Codeteilen,'
Ermitteln eines Aufwandswertes (E) auf der Basis des Komplexitätswertes (17 ) für j eden der Codeteile, wobei der Aufwandswert (E) den für eine Parallelisierung des Codeteils notwendigen Aufwand angibt ; und
Ermitteln eines Effizienzwertes (F) für jeden der Vielzahl von Codeteilen, wobei der Effizienzwert (F) die Effizienz einer Parallelisierung jedes der Viel zahl vo Codeteilen auf der Basis eines Verhältnisses zwischen dem ermittelten Aufwandswert (E) und einem Nutzwert , der den erwarteten Leistungsgewin (S) durch die Parallelisierung des j eweiligen Codeteils angibt, bewertet .
Verfahren nach Anspruch 1 , wobei der Komplexitätswert (17) eine CodeZeilenzahl (LoC) , einen zyklomatischen Komplexitätswert und/oder einen Function-Point-Analysewert aufweist .
Verfahren nach Anspruch 1 oder 2, wobei der Nutzwert von der Zeitersparnis, der Verringerung der Latenzzeit und/oder dem Datendurchsatz bei der parallelen Ausführung des j eweiligen Codeteils abhängt .
4. Verfahren nach einem der vorangegangenen Ansprüche, wobei der Nutzwert durch einen Profiler (13) bereitgestellt wird .
5. Vorrichtung (200) zum Bewerten von Software- Parallel i sierung mit
einer Analyseeinrichtung (16) , die dazu ausgelegt ist, die Struktur eines Softwarecodes (10) zu analysieren und den Softwarecode (10) in eine Vielzahl von Codeteilen auf der Basis der Struktur des Softwarecodes (10) aufzutei¬ len;
einer Berechnungseinrichtung, die dazu ausgelegt ist, ei¬ nen Komplexitätswert (17) auf der Basis der Struktur des Softwarecodes (10) für eden der Vielzahl von Codeteilen zu ermitteln und einen Aufwandswert (E) auf der Basis des Komplexitätswertes (17) für jeden der Codeteile zu ermit¬ teln, wobei der Aufwandswert (E) den für eine Paralleli- sierung des Codeteils notwendigen Aufwand angibt; und einer Bewertungseinrichtung (18) , die dazu ausgelegt ist, einen Effizienzwert (F) für jeden der Vielzahl von Code¬ teilen auszugeben, wobei der Effizienzwert (F) die Effi¬ zienz einer Paralleli sierung jedes der Vielzahl von Code¬ teilen auf der Basis eines Verhältnisses zwischen dem er¬ mittelten Aufwandswert (E) und einem Nutzwert, der den erwarteten Leistungsgewinn (S) durch die Paralleli sierung des jeweiligen Codeteils angibt, bewertet.
PCT/EP2011/068861 2010-11-11 2011-10-27 Verfahren und vorrichtung zum bewerten von software-parallelisierung WO2012062595A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/884,994 US20130232471A1 (en) 2010-11-11 2011-10-27 Method and Apparatus for Assessing Software Parallelization

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102010043782 2010-11-11
DE102010043782.4 2010-11-11

Publications (1)

Publication Number Publication Date
WO2012062595A1 true WO2012062595A1 (de) 2012-05-18

Family

ID=44906075

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2011/068861 WO2012062595A1 (de) 2010-11-11 2011-10-27 Verfahren und vorrichtung zum bewerten von software-parallelisierung

Country Status (2)

Country Link
US (1) US20130232471A1 (de)
WO (1) WO2012062595A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019191056A (ja) * 2018-04-26 2019-10-31 横河電機株式会社 測定装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103944899B (zh) * 2014-04-18 2017-05-24 华为技术有限公司 用于实现通用公共无线接口协商状态机的装置和方法
US9454373B1 (en) 2015-12-10 2016-09-27 International Business Machines Corporation Methods and computer systems of software level superscalar out-of-order processing
US11144290B2 (en) * 2019-09-13 2021-10-12 Huawei Technologies Co., Ltd. Method and apparatus for enabling autonomous acceleration of dataflow AI applications
US11321644B2 (en) * 2020-01-22 2022-05-03 International Business Machines Corporation Software developer assignment utilizing contribution based mastery metrics

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040078780A1 (en) * 2002-10-22 2004-04-22 Bala Dutt System and method for block-based concurrentization of software code

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966534A (en) * 1997-06-27 1999-10-12 Cooke; Laurence H. Method for compiling high level programming languages into an integrated processor with reconfigurable logic
US20060123401A1 (en) * 2004-12-02 2006-06-08 International Business Machines Corporation Method and system for exploiting parallelism on a heterogeneous multiprocessor computer system
US7703079B1 (en) * 2005-05-03 2010-04-20 Oracle America, Inc. System performance prediction
US8032875B2 (en) * 2006-11-28 2011-10-04 Oracle America, Inc. Method and apparatus for computing user-specified cost metrics in a data space profiler
US20080154710A1 (en) * 2006-12-21 2008-06-26 Pradeep Varma Minimal Effort Prediction and Minimal Tooling Benefit Assessment for Semi-Automatic Code Porting
JP2009129179A (ja) * 2007-11-22 2009-06-11 Toshiba Corp プログラム並列化支援装置およびプログラム並列化支援方法
US8185901B2 (en) * 2008-04-24 2012-05-22 International Business Machines Corporation Parsing an application to find serial and parallel data segments to minimize migration overhead between serial and parallel compute nodes

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040078780A1 (en) * 2002-10-22 2004-04-22 Bala Dutt System and method for block-based concurrentization of software code

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XIANGZHU GAO ET AL: "An integrated software cost model based on COCOMO and function point approaches", SOFTWARE EDUCATION CONFERENCE, 1994. PROCEEDINGS. DUNEDIN, NEW ZEALAND 22-25 NOV. 1994, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, 22 November 1994 (1994-11-22), pages 86 - 93, XP010150738, ISBN: 978-0-8186-5870-9 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019191056A (ja) * 2018-04-26 2019-10-31 横河電機株式会社 測定装置
US11162828B2 (en) 2018-04-26 2021-11-02 Yokogawa Electric Corporation Sensor probe having a circuit housing fixable at a plurality of rotation positions

Also Published As

Publication number Publication date
US20130232471A1 (en) 2013-09-05

Similar Documents

Publication Publication Date Title
DE102014011332B4 (de) Priorisieren von anweisungen basierend auf typ
AT512977B1 (de) Methode zur Ermittlung eines Modells einer Ausgangsgröße eines technischen Systems
DE102015112202A1 (de) Kombinieren von Pfaden
WO2012062595A1 (de) Verfahren und vorrichtung zum bewerten von software-parallelisierung
DE10297279T5 (de) Verfahren und Vorrichtung zum Durchführen von Compiler-Transformation von Softwarecode unter Verwendung von Fast-Forward-Bereichen und Wertespezialisierung
DE112005002317T5 (de) System, Verfahren und Vorrichtung für die Verarbeitung von Abhängigkeitsketten
DE102016208339A1 (de) Parallelisierungskompilierverfahren, parallelisierungskompilierer und fahrzeuggebundene vorrichtung
EP2330469A1 (de) Verfahren und Entwicklungsumgebung zur Erzeugung eines ausführbaren Gesamtsteuerungsprogramms
DE102016223939A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung
DE102014103139B4 (de) Parallelisierte Ausführung von Single-Core Steuerungssoftware auf Multi-Core Fahrzeugsteuergeräten
EP2386949B1 (de) Verfahren und Vorrichtung zum zuweisen einer Mehrzahl von Teilaufgaben einer Aufgabe zu einer Mehrzahl von Recheneinheiten einer vorgegebenen Prozessorarchitektur
DE102005001679B4 (de) Mikroprozessor-Einrichtung, und Verfahren zur Branch-Prediktion für conditional Branch-Befehle in einer Mikroprozessor-Einrichtung
EP2363809B1 (de) Verfahren zur Optimierung eines Steuerprogramms für Aktuatoren
DE102020103414A1 (de) Kompressionsverfahren für datenstrukturen, die für künstliche neuronale netze geeignet sind
EP2592504B1 (de) Verfahren zur Abschätzung eines Ressourcenverbrauchs bei der Erzeugung eines Steuergeräteprogrammcodes
DE102019211037A1 (de) Verfahren zum Testen eines Systems
WO2010026145A1 (de) Mikroprozessor mit pipelineblasen-erfassungseinrichtung
EP3705993B1 (de) System und verfahren zum auffinden und identifizieren von rechenknoten in einem netzwerk
DE102016113968A1 (de) Prozessor zur korrelationsbasierter Endlosschleifenerkennung
DE112018006331B4 (de) Testfallgenerierungsvorrichtung, Testfallgenerierungsverfahren und Testfallgenerierungsprogramm
DE102020111051A1 (de) Anordnung, softwareprogramm und computerimplementiertes verfahren zum ausführen eines nachladbaren programms auf einem eingebetteten system eines fahrzeugs
DE102016107646A1 (de) Optimierungstechnologie für Single- zu Multi-Core Portierungen von Steuerungssoftware
DE202022104088U1 (de) Ein System zur Abschätzung der inhärenten Parallelität und der Beschleunigung von sequentiellen Programmen
DE102017220181A1 (de) Parallelisierungsverfahren, Parallelisierungstool und fahrzeuginterne Steuervorrichtung
DE112020005639B4 (de) Zuweisungsvorrichtung, lernvorrichtung, ableitungsvorrichtung, zuweisungsverfahren und zuweisungsprogramm

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11778845

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 13884994

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 11778845

Country of ref document: EP

Kind code of ref document: A1