DE102016201612A1 - Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Vorrichtung - Google Patents

Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Vorrichtung Download PDF

Info

Publication number
DE102016201612A1
DE102016201612A1 DE102016201612.1A DE102016201612A DE102016201612A1 DE 102016201612 A1 DE102016201612 A1 DE 102016201612A1 DE 102016201612 A DE102016201612 A DE 102016201612A DE 102016201612 A1 DE102016201612 A1 DE 102016201612A1
Authority
DE
Germany
Prior art keywords
program
macro
parallelization
tasks
scheduling
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.)
Pending
Application number
DE102016201612.1A
Other languages
English (en)
Inventor
Noriyuki Suzuki
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
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 Denso Corp filed Critical Denso Corp
Publication of DE102016201612A1 publication Critical patent/DE102016201612A1/de
Pending legal-status Critical Current

Links

Images

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
    • G06F8/451Code distribution
    • 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
    • G06F8/456Parallelism detection

Landscapes

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

Abstract

Ein Parallelisierungskompilierungsverfahren beinhaltet einen Teilungsschritt, einen Extraktionsschritt und einen Ablaufplanungsschritt. Der Teilungsschritt teilt einen in einem sequenziellen Programm beschriebenen Prozess unabhängig von Eingangsinformation in eine Vielzahl von Makroaufgaben. Das sequenzielle Programm wird durch ein Einprozessorsystem ausgeführt, und beinhaltet eine Bedingungsbeschreibung, die als durch eine bedingte Kompilierung zu kompilieren oder nicht ausgewählt wird, in Übereinstimmung mit der Eingangsinformation. Der Extraktionsschritt extrahiert auf der Grundlage einer Datenabhängigkeit zwischen den Makroaufgaben aus den Makroaufgaben parallelisierbare Makroaufgaben. Der Ablaufplanungsschritt (S110) weist jede der Makroaufgaben einer beliebigen der Prozessoreinheiten zu, weist alle oder einen Teil der parallelisierbaren Makroaufgaben Prozessoreinheiten zu, und führt eine statische Ablaufplanung durch, um ein durch das Multiprozessorsystem ausgeführtes Parallelisierungsprogramm zu generieren.

Description

  • Die Erfindung betrifft ein Parallelisierungskompilierungsverfahren, einen Parallelisierungskompilierer und eine elektronische Vorrichtung.
  • Eine Nicht-Patentliteratur 1 offenbart eine bordeigene bzw. fahrzeuginterne Vorrichtung mit einem Mehrkernprozessor. Ein Durchsatz in der bordeigenen Vorrichtung wird durch Verteilen von Funktionen auf jeden Kern des Mehrkernprozessors verbessert. Ein Parallelisierungskompilierer generiert ein Parallelisierungsprogramm aus einem Programm für einen Einkernprozessor (der auch als ein Einkernprozessorsystem bezeichnet wird). Das generierte Parallelisierungsprogramm wird durch einen Mehrkernprozessors parallel verarbeitet. Im Übrigen wird ein Programm für ein Einkernprozessorsystem als ein sequenzielles Programm bezeichnet.
  • Die Erfinder dieser Erfindung haben das Folgende festgestellt. Eine Beschreibung bezüglich eines Kompilierungsziels in einem sequenziellen Programm kann durch einen konditionellen bzw. bedingten Kompilierungsschalter bzw. Kompilierungsbedingungsschalter in Übereinstimmung mit einem Ziel oder dergleichen ausgewählt werden. Das Auswählen einer Beschreibung einer Kompilierung durch einen Kompilierungsbedingungsschalter wird als eine bedingte Kompilierung bezeichnet. Wenn ein Parallelisierungsprogramm aus einem sequenziellen Programm mit einem Parallelisierungskompilierer generiert wird, wird im Allgemeinen ein Abschnitt, der das Kompilierungsziel sein soll, auf der Grundlage des Kompilierungsbedingungsschalters ausgehend von dem sequenziellen Programm spezifiziert. Nach der Spezifikation wird das Parallelisierungsprogramm aus dem spezifizierten Abschnitt erzeugt bzw. generiert.
  • Wenn sich jedoch der Abschnitt, der das Kompilierungsziel sein soll, ändert, können sich auch eine Datenabhängigkeit und eine Steuerungsabhängigkeit zwischen Makroaufgaben, die das sequenzielle Programm konfigurieren, ändern. Daher können mehrere Parallelisierungsprogramme, die unterschiedliche Ziele haben, aus demselben sequenziellen Programm generiert werden, und können dieselbe oder eine ähnliche Funktion haben. Aber jedem Prozessorkern zugewiesene Prozessinhalte können sich stark unterscheiden. Dies kann Schwierigkeiten bei der Aufrechterhaltung der Qualität und dem Verwalten des Parallelisierungsprogramms verursachen.
  • Die Erfindung liegt als eine Aufgabe zugrunde, eine Technologie bereitzustellen, die die Aufrechterhaltung der Qualität und die Verwaltung eines Parallelisierungsprogramms leicht macht.
  • In Übereinstimmung mit einem Aspekt der Erfindung beinhaltet ein Parallelisierungsprogramm einen Teilungsschritt, einen Extraktionsschritt und einen Ablaufplanungsschritt. Der Teilungsschritt teilt einen in einem sequenziellen Programm beschriebenen Prozess unabhängig von Eingangsinformation in eine Vielzahl von Makroaufgaben. Das sequenzielle Programm wird durch ein Einprozessorsystem ausgeführt, und das sequenzielle Programm beinhaltet eine Bedingungsbeschreibung, die als durch eine bedingte Kompilierung zu kompilieren oder nicht ausgewählt wird, in Übereinstimmung mit der Eingangsinformation. Der Extraktionsschritt extrahiert auf der Grundlage einer Datenabhängigkeit zwischen den Makroaufgaben aus den Makroaufgaben parallelisierbare Makroaufgaben, die durch eine Vielzahl von Prozessoreinheiten, die ein Multiprozessorsystem konfigurieren, parallel ausführbar sind. Der Ablaufplanungsschritt weist jede der Makroaufgaben einer beliebigen der Prozessoreinheiten zu, weist alle oder einen Teil der parallelisierbaren Makroaufgaben Prozessoreinheiten zu, die sich voneinander unterscheiden, und führt eine statische Ablaufplanung durch, um ein durch das Multiprozessorsystem ausgeführtes Parallelisierungsprogramm zu generieren.
  • In Übereinstimmung mit einem anderen Aspekt der Erfindung veranlasst ein Parallelisierungskompilierer einen Computer dazu, ein Teilungsmittel, ein Extraktionsmittel und ein Ablaufplanungsmittel durchzuführen. Das Teilungsmittel teilt einen in einem sequenziellen Programm beschriebenen Prozess unabhängig von Eingangsinformation in eine Vielzahl von Makroaufgaben. Das sequenzielle Programm wird durch ein Einprozessorsystem ausgeführt, und das sequenzielle Programm beinhaltet eine Bedingungsbeschreibung, die als durch eine bedingte Kompilierung zu kompilieren oder nicht ausgewählt wird, in Übereinstimmung mit der Eingangsinformation. Das Extraktionsmittel extrahiert auf der Grundlage einer Datenabhängigkeit zwischen den Makroaufgaben aus den Makroaufgaben parallelisierbare Makroaufgaben, die durch eine Vielzahl von Prozessoreinheiten, die ein Multiprozessorsystem konfigurieren, parallel ausführbar sind. Das Ablaufplanungsmittel weist jede der Makroaufgaben einer beliebigen der Prozessoreinheiten zu, weist alle oder einen Teil der parallelisierbaren Makroaufgaben Prozessoreinheiten zu, die sich voneinander unterscheiden, und führt eine statische Ablaufplanung durch, um ein durch das Multiprozessorsystem ausgeführtes Parallelisierungsprogramm zu generieren.
  • In Übereinstimmung mit einem anderen Aspekt der Erfindung beinhaltet eine elektronische Vorrichtung ein Multiprozessorsystem, das durch ein Parallelisierungsprogramm betrieben wird. Das Parallelisierungsprogramm wird durch ein Parallelisierungskompilierungsverfahren generiert. Das Parallelisierungskompilierungsverfahren beinhaltet: einen Teilungsschritt, der einen in einem sequenziellen Programm beschriebenen Prozess unabhängig von Eingangsinformation in eine Vielzahl von Makroaufgaben teilt, wobei das sequenzielle Programm durch ein Einprozessorsystem ausgeführt wird und das sequenzielle Programm eine Bedingungsbeschreibung beinhaltet, die als durch eine bedingte Kompilierung zu kompilieren oder nicht ausgewählt wird, in Übereinstimmung mit der Eingangsinformation; einen Extraktionsschritt, der auf der Grundlage einer Datenabhängigkeit zwischen den Makroaufgaben aus den Makroaufgaben parallelisierbare Makroaufgaben extrahiert, die durch eine Vielzahl von Prozessoreinheiten, die ein Multiprozessorsystem konfigurieren, parallel ausführbar sind; und einen Ablaufplanungsschritt, der jede der Makroaufgaben einer beliebigen der Prozessoreinheiten zuweist, alle oder einen Teil der parallelisierbaren Makroaufgaben Prozessoreinheiten zuweist, die sich voneinander unterscheiden, und eine statische Ablaufplanung durchführt, um ein durch das Multiprozessorsystem ausgeführtes Parallelisierungsprogramm zu generieren.
  • In Übereinstimmung mit dieser Konfiguration wird das Parallelisierungsprogramm aus dem sequenziellen Programm generiert, während alle Bedingungsbeschreibungen enthalten sind. Wenn die Eingangsinformation festgelegt wird, kann es möglich sein, ausgehend von der Bedingungsbeschreibung in dem Parallelisierungsprogramm den Abschnitt zu entfernen, der nicht kompiliert wird.
  • Daher kann dann, wenn ein beliebiger Typ von Eingangsinformation festgelegt wird, ein anderer Prozess (zum Beispiel ein Prozess, der unabhängig von Inhalten der Eingangsinformation immer ausgeführt wird) als ein der Bedingungsbeschreibung entsprechender Prozess immer derselben Prozessoreinheit zugewiesen werden. Daher kann es möglich sein, eine Ähnlichkeit von Parallelisierungsprogrammen in jedem Typ auch dann weiter zu verbessern, wenn mehrere Typen von Parallelisierungsprogrammen mit unterschiedlichen Zielen durch Festlegen der Eingangsinformation generiert werden. Daher kann es möglich sein, eine Beibehaltung der Qualität und eine Verwaltung des Parallelisierungsprogramms leicht zu machen.
  • Die vorstehenden sowie weitere Ziele, Merkmale und Vorteile der Erfindung sind der nachfolgenden detaillierten Beschreibung unter Bezugnahme auf die beigefügten Zeichnungen besser entnehmbar. Es zeigen:
  • 1 ein Blockdiagramm, das eine Konfiguration eines Personal Computers darstellt, auf welchem ein automatischer Parallelisierungskompilierer installiert ist;
  • 2 ein Ablaufdiagramm, das einen automatischen Parallelisierungsprozess darstellt;
  • 3 ein Ablaufdiagramm, das einen Softwarestruktur-Analyseprozess darstellt;
  • 4 ein Blockdiagramm, das eine Konfiguration einer bordeigenen Vorrichtung darstellt;
  • 5 ein Diagramm, das ein sequenzielles Programm, Zuweisungsinformation und ein Vergleichsprogramm in einem ersten bestimmten Beispiel darstellt;
  • 6 ein Diagramm, das eine Prozesszeit oder dergleichen eines in dem sequenziellen Programm beschriebenen Prozesses in dem ersten bestimmten Beispiel darstellt;
  • 7 ein Diagramm, das ein Verifizierungsergebnis einer Leistung des Vergleichsprogramms darstellt, generiert in dem ersten bestimmten Beispiel;
  • 8 ein Diagramm, das ein sequenzielles Programm und einen Makroaufgabengraphen in einem zweiten bestimmten Beispiel darstellt;
  • 9 ein Diagramm, das den Makroaufgabengraphen und Zuweisungsinformation in dem zweiten bestimmten Beispiel darstellt;
  • 10 ein Diagramm, das eine Prozesszeit eines Prozesses darstellt, der in dem sequenziellen Programm in dem zweiten bestimmten Beispiel beschrieben ist;
  • 11 ein Diagramm, das eine Parallelausführungszeit des in dem zweiten bestimmten Beispiel generierten Vergleichsprogramms darstellt;
  • 12 ein Diagramm, das ein Verifizierungsergebnis einer Leistung eines in einem dritten bestimmten Beispiel generierten Vergleichsprogramms darstellt;
  • 13 ein Diagramm, das ein sequenzielles Programm in einem vierten bestimmten Beispiel darstellt;
  • 14 ein Diagramm, das ein Argument oder dergleichen eines Kompilierungsbedingungsschalters in dem vierten bestimmten Beispiel darstellt;
  • 15 ein Diagramm, das Argumente des Kompilierungsbedingungsschalters entsprechend jedem Typ in dem vierten bestimmten Beispiel darstellt;
  • 16 ein Diagramm, das ein Vergleichsprogramm darstellt, das in dem vierten bestimmten Beispiel generiert wird; und
  • 17 ein Diagramm, das ein Parallelisierungsprogramm in dem vierten bestimmten Beispiel darstellt.
  • Nachstehend wird ein Ausführungsbeispiel der Erfindung unter Bezugnahme auf die Zeichnungen beschrieben. Es wird angemerkt, dass die Erfindung nicht auf das folgende Ausführungsbeispiel beschränkt ist, und dass die Erfindung verschiedenartige Modifikationen innerhalb eines technischen Rahmens der Erfindung beinhaltet.
  • (Ausführungsbeispiel)
  • (1. Automatischer Parallelisierungskompilierer)
  • Ein automatischer Parallelisierungskompilierer bzw. Parallelisierungscompiler des vorliegenden Ausführungsbeispiels generiert ein Parallelisierungsprogramm für ein Mehrprozessorsystem für ein ”embedded” bzw. eingebettetes System aus einem Source- bzw. Quellprogramm für ein Einprozessorsystem für ein embedded bzw. eingebettetes System. Das Quellprogramm für das Einprozessorsystem wird als ein sequenzielles Programm bezeichnet.
  • (1-1. Designkonzept des automatischen Parallelisierungskompilierers)
  • Der automatische Parallelisierungskompilierer des vorliegenden Ausführungsbeispiels hat die folgenden Funktionen:
    (Funktion 1) Ein mehrkörniger paralleler Prozess bzw. Multigrain-Prozess;
    (Funktion 2) Einfügung eines statischen Planungscodes zur Zeit der Kompilierung;
    (Funktion 3) Generierung eines dynamischen Planungscodes zur Zeit der Ausführung;
    (Funktion 4) Implementierung eines hierarchischen Makrodatenflusses;
    (Funktion 5) Eine Parallelitäts- bzw. Parallelismusextraktion wie beispielsweise eine Division bzw. Teilung und/oder Fusion bzw. Vereinigung einer Makroaufgabe, und eine Schleifenverteilung und/oder einen Schleifenaustausch;
    (Funktion 6) Verbesserung der Datenübertragungseffizienz durch eine Datenlokalisierung; und
    (Funktion 7) Verringerung des Leistungsverbrauchs durch einen Kompilierer.
  • (1-2. Interner Prozess des automatischen Parallelisierungskompilierers)
  • Der automatische Parallelisierungskompilierer hat drei Stufen einschließlich eines Frontends (nachstehend als ein FE bezeichnet), eines Mittelpfads (nachstehend als ein MP bezeichnet) und eines Backends sich (nachstehend als ein BE) bezeichnet. Jede Stufe ist unabhängig als eine Ausführungsform. Ein Codeaustausch wird mittels einer aus dem FE und dem MP generierten Zwischensprache durchgeführt.
  • Das FE führt eine lexikalische Analyse und eine Syntaxanalyse eines Quellcodes für das sequenzielle Programm durch. Das FE generiert die Zwischensprache, die es ermöglicht, ein Parsen in dem MP durchzuführen bzw. in dem MP zu parsen. Die Zwischensprache, die durch das FE generiert wird, wird durch einen Syntaxbaum ausgedrückt, der grundlegend vier Operanden aufweist. Die durch das FE generierte Zwischensprache stellt einen einzelnen Block als Ganzes unstrukturiert bereit.
  • Der MP führt die Steuerungsabhängigkeitsanalyse, die Datenabhängigkeitsanalyse und eine Optimierung durch. Der MP führt einen mehrkörnigen parallelen Prozess einer Grobkorn-Parallelisierung, einer Mittelkorn-Parallelisierung und einer nahezu Feinkorn-Parallelisierung unter Verwendung der Daten der Steuerungsabhängigkeitsanalyse, der Datenabhängigkeitsanalyse und der Optimierung durch.
  • Das BE liest die durch den MP generierte Parallelisierungs- Zwischensprache, um einen tatsächlichen Maschinencode zu generieren. Das BE beinhaltet ein Backend, das einen Assembler-Code der Mehrkernarchitektur generiert, welche bzw. welcher ein Ziel ist, und beinhaltet darüber hinaus ein weiteres Backend, das einen Parallelisierungs-Fortran-Code und einen Parallelisierungs-C-Code für OpenMP generiert.
  • Ferner beinhaltet das BE ein weiteres Backend, das einen Code entsprechend verschiedenen Architekturen ausgibt, wie beispielsweise ein Backend, das einen Parallelisierungscode einschließlich einer Speicheranordnung und einer Datenübertragung mittels einer Parallelisierungs-API generiert.
  • (1-3. Parallelitätsanalyse des automatischen Parallelisierungskompilierers)
  • Der automatische Parallelisierungskompilierer führt einen Makrodatenflussprozess durch zum Teilen eines sequenziellen Programms in drei Typen von Grobkorn-Aufgaben einschließlich eines Basisblocks (der auch als BB bezeichnet wird), eines Wiederholungsblocks bzw. Repetierungsblocks (der auch als ein RB bezeichnet wird), und eines Unterroutinenblocks bzw. Subroutinenblocks (der auch als ein SB bezeichnet wird). Die drei Typen von grobkörnigen Aufgaben werden als Makroaufgaben bzw. Makrotasks (MT) bezeichnet.
  • In Abhängigkeit von einer Form eines Programms kann der Makrodatenflussprozess die Nutzungseffizienz eines Prozessors nicht verbessern, und kann einen ausreichenden Grobkorn-Parallelismus nicht extrahieren.
  • In dem automatischen Parallelisierungskompilierer kann eine konventionelle Einzelhierarchie-Makrodatenflussprozesstechnik so erweitert sein, dass der hierarchische Makrodatenflussprozess angewandt werden kann. Der hierarchische Makrodatenflussprozess verwendet hierarchisch einen Makrodatenflussprozess für das Innere einer Makroaufgabe. In dem hierarchischen Makrodatenflussprozess sind Makroaufgaben hierarchisch definiert, und wird eine Parallelität zwischen den Makroaufgaben für die Makroaufgabe in jeder Hierarchie analysiert.
  • (Erzeugung eines Makroflussgraphen)
  • Der automatische Parallelisierungskompilierer analysiert die Steuerungsabhängigkeit und die Datenabhängigkeit zwischen den Makroaufgaben zu einer generierten Makroaufgabe in jeder Hierarchie. Das Analyseergebnis wird als ein Makroflussgraph (MFG) ausgedrückt.
  • (Generierung eines Makroaufgabengraphen)
  • Der MFG repräsentiert die Steuerungsabhängigkeit und die Datenabhängigkeit zwischen Makroaufgaben. Der MFG repräsentiert jedoch nicht eine Parallelität zwischen den Makroaufgaben. Um die Parallelität zu extrahieren, ist es erforderlich, eine Frühest-Ausführbar-Bedingungs-Analyse zu jeder Makroaufgabe durchzuführen. In der Frühest-Ausführbar-Bedingungs-Analyse werden die Steuerungsabhängigkeit und die Datenabhängigkeit berücksichtigt. Nebenbei bemerkt ist die Frühest-Ausführbar-Bedingung eine Bedingung, bei der eine MT zur frühestmöglichen Zeit ausführbar wird, und die Bedingung wird aus den folgenden Ausführungsbedingungen ermittelt.
  • (Ausführungsbedingung 1) Wenn eine MTi eine Datenabhängigkeit zu einer MTj aufweist, wird die MTi nicht ausgeführt, bis eine Ausführung der MTj beendet ist.
  • (Ausführungsbedingung 2) wenn ein bedingtes Verzweigungsziel der MTj fest ist, wird die MTi, die eine Datenabhängigkeit zu der MTj aufweist, auch dann ausführbar, wenn eine Ausführung der MTj nicht beendet ist.
  • Daher ist eine allgemeine Form der Frühest-Ausführbar-Bedingung wie folgt:
    (Die MTj mit der Steuerungsabhängigkeit mit bzw. von der MTi verzweigt zu der MTi)
    UND
    ((eine MTk mit der Datenabhängigkeit zu der MTi ((0 ≤ k ≤ |N|) endet) ODER (es wird ermittelt, dass die MTk nicht ausgeführt wird).
  • Ein Makroaufgabengraph (MTG) drückt die Frühest-Ausführbar-Bedingungen der Makroaufgabe aus.
  • (1-4. Mehrkörniger paralleler Prozess)
  • In dem automatischen Parallelisierungskompilierer ist zusätzlich zu einer konventionellen Schleifenparallelisierung ein mehrkörniger paralleler Prozess, in welchem der Grobkorn-Aufgabe-Parallelprozess und der nahezu Feinkorn-Parallelprozess wirksam kombiniert sind, implementiert (siehe auch eine Referenz 1). Der Grobkorn-Aufgabe-Parallelprozess nutzt bzw. verwendet eine Parallelität zwischen den Grobkorn-Aufgaben in Schleifen und in Unterroutinen. Der nahezu Feinkorn-Parallelprozess nutzt bzw. verwendet eine Parallelität zwischen Ausdrücken bzw. Anweisungen (statements).
  • Referenz 1: Hiroki Honda, Masahiko Iwata und Hironori Kasahara, "Coarse grain parallelism detection scheme of a Fortran program" Transactions of IEICE D-I. Vol. J73-D-I No. 12, pp. 951–960, 1990.
  • (Grobkorn-Aufgabe-Parallelprozess)
  • Der automatische Parallelisierungskompilierer generiert den Makroflussgraphen (MFG), der die Steuerungsabhängigkeit und die Datenabhängigkeit zwischen den MTs, wie beispielsweise dem BB, dem RB und dem SB, ausdrückt. Darüber hinaus drückt der automatische Parallelisierungskompilierer die Parallelität zwischen den MTs, die aus dem MFG abgeleitet wurden, durch die Frühest-Ausführbar-Bedingung-Analyse als den Makroaufgabengraphen (MTG) aus (siehe auch Referenz 1 und eine Referenz 2).
  • Referenz 2: Hironori Kasahara, Kento Aida, Akimasa Yoshida, Masami Okamoto und Hiroki Honda "A macro-task generation scheme for Fortran macrodataflow computation", Transactions of IEICE D-I. Vol. J75-D-I, No. 8, pp. 511–525, 1992.
  • Ein oder mehr Prozessorelemente (PEs) wurden in eine Prozessorgruppe (PG) gruppiert. Der automatische Parallelisierungskompilierer weist die MTs des MTG zu PGs zu.
  • (Mittelkorn-Parallelprozess)
  • Wenn die der PG zugewiesene MT auf einer DOALL-Schleife oder einer Iterationsebene parallel verarbeitet wird, führt der Prozessor in einem Prozessorcluster den Mittelkorn-Parallelprozess durch. Der Mittelkorn-Parallelprozess repräsentiert einen parallelen Prozess unter Verwendung einer Parallelität zwischen DO-Schleifeniterationen. Der Mittelkorn-Parallelprozess ist der allgemeinste in bzw. unter den parallelen Prozessen in dem Multiprozessor.
  • (Nahezu Feinkorn-Parallelprozess)
  • Der nahezu Feinkorn-Parallelprozess repräsentiert den parallelen Prozess für eine nahezu feinkörnige Aufgabe auf einer Ausdrucks- bzw. Anweisungsebene. Durch den nahezu Feinkorn-Parallelprozess wird eine parallele Ausführung in einem Ausdruck bzw. einer Anweisung ausführbar, der bzw. das keine Abhängigkeit aufweist, um eine Ausführungszeit zu verkürzen.
  • (1-5. Makroaufgabenplanung)
  • In dem Grobkorn-Aufgaben-Parallelprozess wird eine in jeder Hierarchie generierte Makroaufgabe der PG zugewiesen und durchgeführt. Als eine Planungstechnik oder Ablaufplanungstechnik, die ermittelt, welcher PG eine Makroaufgabe zugewiesen ist, sind eine dynamische (Ablauf)Planung und eine statische (Ablauf)Planung zu nennen. Die Planungstechnik wird auf der Grundlage einer Form des Makroaufgabengraphen und eines Nichtdeterminismus bzw. einer Unbestimmtheit zur Ausführungszeit des Makroaufgabengraphen ausgewählt.
  • (Dynamische Planung)
  • Wenn zur Ausführungszeit eine Unbestimmtheit vorliegt, wie beispielsweise eine bedingte Verzweigung, wird eine Makroaufgabe zur Ausführungszeit durch die dynamische Planung der PG zugewiesen. In Übereinstimmung mit einer Beendigung der Makroaufgabe und/oder einer Ermittlung einer Verzweigungsrichtung der Makroaufgabe operiert eine dynamische Planungsroutine in einer Makroaufgaben-Ausführungssteuerungstabelle und untersucht die Frühest-Ausführbar-Bedingung jeder Makroaufgabe.
  • Wenn die Makroaufgabe ausführbar ist, wird die Makroaufgabe in eine Bereitschafts-Warteschlange eingestellt. Die Makroaufgaben in der Bereitschafts-Warteschlange werden in Übereinstimmung mit einer Priorität sortiert. Die an einem vorderen Ende der Bereitschaftswarteschlange positionierte Makroaufgabe wird einem Prozessorcluster zugewiesen, der sich in einem Leerlaufzustand befindet.
  • Zur Zeit der Erzeugung eines dynamischen Planungscodes kann ein konzentriertes Planungssystem oder ein verteiltes Planungssystem in Übereinstimmung mit der Anzahl von Prozessoren und einem synchronen Überhang eines Systems verwendet werden. In dem konzentrierten Planungssystem führt ein einzelner, exklusiv verwendeter Prozessor die Planung durch. In dem verteilten Planungssystem wird die Planungsfunktion auf jeden Prozessor verteilt.
  • (Statische Planung)
  • Die statische Planung wird verwendet, wenn der Makroaufgabengraph nur einen Datenabhängigkeitsrand aufweist. In der statischen Planung ermittelt der automatische Parallelisierungskompilierer eine Zuweisung der Makroaufgabe zu der PG zur Kompilierungszeit.
  • Da es die statische Planung ermöglicht, einen Planungsüberhang zur Ausführungszeit zu eliminieren, und ermöglicht, einen Überhang der Datenübertragung und Synchronisation zu minimieren, kann die statische Planung wirkungsvoll in Bezug auf eine Aufgabe mit einer Feinkorngröße verwendet werden.
  • Zur Zeit der Durchführung der statischen Planung verwendet die statische Ablaufplanung einen Aufgabenkosten-Schätzwert in dem automatischen Parallelisierungskompilierer bezüglich Kosten einer Aufgabe. Alternativ können unter Verwendung einer automatischen Fallanalyse- bzw. Profilrückkopplungsfunktion des automatischen Parallelisierungskompilierers aus tatsächliche Kosten einer Aufgabe (auch als reale Kosten bezeichnet) angesetzt werden.
  • Wenn die automatische Profilrückkopplungsfunktion verwendet wird, wird in einer ersten Phase ein sequenzielles Programm in die Makroaufgaben (MTs) zerlegt. Eine Profilierungsfunktion bzw. Profiler-Funktion wird in jede MT eingefügt, und ein sequenzielles Programm mit der Profilierungsfunktion wird generiert. Die Profilierungsfunktion misst die Kosten einer Aufgabenausführung (ein Taktzyklus) und eine Gesamtanzahl von Aufgabenausführungen. Wenn das sequenzielle Programm, in das die Profilierungsfunktion eingefügt ist, auf einer Zielmaschine einmalig ausgeführt wird, wird eine Datei, die Information über die Aufgabenausführungskosten und die Gesamtanzahl von Ausgabenausführungen auf der Zielmaschine enthält, ausgegeben.
  • In einer zweiten Phase empfängt der automatische Parallelisierungskompilierer die ausgegebene Datei der ersten Phase und das sequenzielle Programm. Der automatische Parallelisierungskompilierer erzeugt ein Parallelisierungsprogramm, in welchem eine Ablaufplanung auf der Grundlage der tatsächlichen Kosten durchgeführt wird.
  • (1-6. Datenlokalisierung)
  • Der automatische Parallelisierungskompilierer ermöglicht es, eine Cache- bzw. Zwischenspeicheroptimierung über das gesamte Programm durchzuführen. Der automatische Parallelisierungskompilierer analysiert die Parallelität zwischen Schleifen. Nach dieser Analyse versucht dann, wenn der automatische Parallelisierungskompilierer erfasst, dass eine Datenabhängigkeit zwischen den Schleifen besteht, der automatische Parallelisierungskompilierer, eine globale Optimierung eines Zwischenspeichers zwischen den Schleifen mit der Datenabhängigkeit durchzuführen (siehe auch eine Referenz 3: JP-Patent Nr. 4177681 ).
  • Im Einzelnen untersucht der automatische Parallelisierungskompilierer eine Feldanordnung, auf die in jeder Schleife zugegriffen wird, führt eine Justierung bzw. Einstellung derart durch, dass die identischen geteilten Schleifen auf den identischen Abschnitt der Feldanordnung zugreifen, und weist die identischen geteilten Schleifen dem gleichen Prozessor zu. Demgemäß werden in den identischen geteilten Schleifen alle Feldanordnungsdaten in einem Zwischenspeicher wiederverwendet.
  • Diese Lokalisierungstechnologie bezieht sich auf die folgende Verwaltungstechnologie für lokalen Speicher und die Folgen der Datenübertragungstechnologie (siehe auch eine Referenz 5: UK-Patent Nr. 2478874 ). Genauer weist die Lokalisierungstechnologie die folgenden Merkmale auf.
  • (Merkmal 1) Wenn ein lokaler Speicher oder ein verteilter gemeinsam genutzter Speicher mit einer wahlfreien Größe gegeben ist, werden, bevor auf den lokalen Speicher oder den verteilten gemeinsam genutzten Speicher mittels DMA (DTU) zugegriffen wird (siehe auch die Referenz 4: JP-Patent Nr. 4476267 ), Daten vorab in einen lokalen Speicher oder einen verteilten gemeinsam genutzten Speicher geladen, der nahe an dem Prozessor liegt, und über ein Programm hinweg wiederverwendet. DMA repräsentiert einen direkten Speicherzugriff (Direct Memory Access), und DTU repräsentiert eine Datenübertragungseinheit (Data Transfer Unit).
  • (Merkmal 2) Wenn ein Empfängerspeicher voll ist und wenn ein Quellprozessor durch einen synchrones Flag, das eine DTU eines Empfängerprozessors repräsentiert, darüber informiert wird, dass dieser auf der Grundlage einer Auslagerungspriorität Daten in einen gemeinsam genutzten Speicher oder dergleichen ausgelagert hat, überträgt der Quellprozessor Daten automatisch an den Empfängerspeicher.
  • (Merkmal 3) Wenn Daten, welche zukünftig wieder verwendet werden und für eine Weile nicht verwendet werden, in einem Speicherbereich gespeichert sind, und wenn es erforderlich ist, den Speicherbereich freizugeben, verschiebt die DTU die Daten in einen konzentrierten gemeinsam genutzten Speicher hinter einer Aufgabenausführung durch eine CPU, und lädt vor der Zeit der Verwendung neu.
  • (1-7. Generierung des Parallelisierungsprogramms)
  • Ein Parallelisierungsprogramm in dem automatischen Parallelisierungskompilierer durch eine automatische Parallelisierungsschnittstelle bzw. automatische Parallelisierungs-API in einer Weise einer Quelle-zu-Quelle-Parallelisierung wie beispielsweise einer Parallelisierung C oder einer Parallelisierung FORTRAN erzeugt bzw. generiert werden (siehe auch eine Referenz 7: "Optimally Scheduled Advanced Multiprocessor Application Program Interface", WASEDA University, 2008).
  • In diesem Fall wandelt der automatische Parallelisierungskompilierer einen direktiven Abschnitt von C oder Fortran für jeden Prozessor mittels eines Standardübersetzers für die automatische Parallelisierungs-API in einen Laufzeitbibliotheksaufruf um, so dass das Parallelisierungsprogramm auf verschiedenen Plattformen ausführbar ist.
  • Nach dem Umwandeln in den Laufzeitbibliotheksaufruf kompiliert der automatische Parallelisierungskompilierer einen Code für jeden Prozessor mit einem sequenziellen Kompilierer, um eine Binärdatei (mit Bezug zu einem Binärcode) zu generieren. Die Binärdateien sind miteinander verknüpft. Ein Parallelisierungsprogramm ist auf einem Ziel-Multiprozessor ausführbar.
  • (2. Parallelisierungsschritt und Verfahren eines sequenziellen Programms für ein eingebettetes System)
  • Ein Merkmal eines sequenziellen Programms für ein eingebettetes System wird nachstehend beschrieben. Ein Parallelisierungsverfahren in Übereinstimmung mit dem automatischen Parallelisierungskompilierer gemäß der Erfindung wird erklärt. Nebenbei bemerkt kann das eingebettete System zum Beispiel eine bordeigene Vorrichtung sein, und kann eine beliebige andere elektronische Vorrichtung als die bordeigene Vorrichtung sein. Das sequenzielle Programm kann ein Programm sein, das automatisch durch ein modellbasiertes Design generiert wird, und kann ein Programm sein, das automatisch durch zum Beispiel Matlab (eingetragenes Warenzeichen) oder Simulink (eingetragenes Warenzeichen), das von MathWork produziert wird, generiert wird. Die bordeigene Vorrichtung bezeichnet eine Vorrichtung, die an einem Fahrzeug angebracht ist.
  • Der automatische Parallelisierungskompilierer wird aus einer bedingten Verzweigung und einem Zuweisungsausdruck konfiguriert. Der automatische Parallelisierungskompilierer führt eine Inline-Expansion und eine Umbenennung zu einem sequenziellen Programm mit einem feinen Prozess durch, um die Parallelität zu extrahieren. Der automatische Parallelisierungskompilierer führt eine Aufgabenzusammenführung bzw. Aufgabenverschmelzung durch zum Verbergen einer bedingten Verzweigung, um eine Echtzeitnatur beizubehalten. Der automatische Parallelisierungskompilierer führt eine statische Ablaufplanung durch, um den Überhang zu verringern. Darüber hinaus kann der automatische Parallelisierungskompilierer die automatische Profilrückkopplungsfunktion verwenden, um die statische Ablaufplanung zu tatsächlichen Kosten durchzuführen Bezüglich des sequenziellen Programms kann eine bedingte Kompilierung durchgeführt werden. In der bedingten Kompilierung wird eine Beschreibung zugunsten eines Kompilierungsziels in Übereinstimmung mit einem Typ eines eingebetteten Systems durch einen Schalter für bedingte Kompilierung bzw. Kompilierungsbedingungsschalter (auch als eine Anweisung an einen Präprozessor bezeichnet) ausgewählt. Nebenbei bemerkt kann jeder Typ eines eingebetteten Systems unterschiedliche Ziele, unterschiedliche Funktionen und eine unterschiedliche Konfiguration von Hardware aufweisen. In einem Fall, in dem die Auswahl durchgeführt wird, wird Information (Information, die ein Ziel oder dergleichen repräsentiert) entsprechend einem beliebigen Typ eines eingebetteten Systems als ein Argument jedes Kompilierungsbedingungsschalters des sequenziellen Programms festgelegt, so dass ein Binärcode entsprechend dem Typ des eingebetteten Systems aus dem sequenziellen Programm generiert wird.
  • Demgegenüber verwirft der automatische Parallelisierungskompilierer des vorliegenden Ausführungsbeispiels die Auswahl des Kompilierungsziels durch die bedingte Kompilierung. Der automatische Parallelisierungskompilierer führt die Teilung einer Makroaufgabe, die Extraktion der Parallelität und eine statische Ablaufplanung für alle Abschnitte des sequenziellen Programms durch. Der automatische Parallelisierungskompilierer generiert ein Parallelisierungsprogramm. Nach der Generierung des Parallelisierungsprogramms spezifiziert der automatische Parallelisierungskompilierer aus dem Parallelisierungsprogramm eine Beschreibung, die kein Kompilierungsziel durch die bedingte Kompilierung ist. Nach Entfernen der Beschreibung, nicht das Kompilierungsziel ist, werden binäre Daten zum Betreiben eines Mehrkernprozessors generiert.
  • (2-1. Betriebsumgebung des automatischen Parallelisierungskompilierers)
  • Der automatische Parallelisierungskompilierer 1 ist für einen Benutzer in einem Zustand bereitgestellt, der in einem Speichermedium 18 gespeichert ist, das als eine optische Platte, eine Magnetplatte, ein Halbleiterspeicher, wie beispielsweise DVD, CD-ROM, ein USB-Speicher, eine Speicherkarte bzw. Memory Card (eingetragenes Warenzeichen) konfiguriert ist. Der automatische Parallelisierungskompilierer 1 kann für den Benutzer über ein Netzwerk bereitgestellt sein.
  • Ein Personal Computer (PC) 10, auf welchem der automatische Parallelisierungskompilierer 1 installiert ist, arbeitet als eine automatische Parallelisierungskompilierungsvorrichtung. Der Personal Computer 10 beinhaltet eine Anzeige 11, eine HDD 12, eine CPU 13, ein ROM 14, ein RAM 15, eine Eingabeeinrichtung 16 und einen Leseabschnitt 17.
  • Die Anzeige 11 zeigt ein Videobild eines von der CPU 13 empfangenen Videosignals für einen Benutzer an.
  • Die Eingabeeinrichtung 16 beinhaltet eine Tastatur und eine Maus. Wenn der Benutzer die Eingabeeinrichtung 16 betätigt, gibt die Eingabeeinrichtung 16 ein Signal in Übereinstimmung mit der Betätigung an die CPU 13 aus.
  • Der Leseabschnitt 17 liest Daten aus dem Speichermedium 18, wo der automatische Parallelisierungskompilierer 1 gespeichert worden ist.
  • Das RAM 15 ist ein lesbarer und beschreibbarer flüchtiger Speicher. Das ROM 14 ist ein nicht flüchtiger Nurlesespeicher bzw. Festspeicher. In dem ROM 14 und auf der HDD 12 ist ein Programm vorab gespeichert. Die CPU 13 liest das Programm und führt es aus.
  • Wenn die CPU 13 das in dem ROM 14 oder auf der HDD 12 gespeicherte Programm ausführt, arbeitet das RAM 15 als ein Speicherbereich zum temporären Speichern eines Programms und von Arbeitsdaten.
  • Die CPU 13 liest ein Betriebssystem (OS bzw. BS) von der HDD 12 und führt es aus. Die CPU 13 führt verschiedene auf der HDD 12 gespeicherte Programme als ein Prozess in dem Betriebssystem aus. Die CPU 13 empfängt in dem Prozess bedarfsweise eine Signaleingabe von der Eingabeeinrichtung 16. Die CPU 13 gibt das Videosignal an die Anzeige 11 aus. Die CPU 13 steuert ein Auslesen und ein Schreiben der Daten in Bezug auf das RAM 15 oder die HDD 12.
  • Der Personal Computer 10 ist mit dem automatischen Parallelisierungskompilierer 1 installiert, der von den Speichermedium 18 über den Leseabschnitt 17 gelesen wurde. Der automatische Parallelisierungskompilierer 1 ist eine von Anwendungen, die auf der HDD 12 abgelegt sind und als ein Prozess in den Betriebssystem ausgeführt werden.
  • Die automatische Parallelisierungskompilierungsvorrichtung wird zur Entwicklung des Parallelisierungsprogramms für das eingebettete System für eine bordeigene Vorrichtung verwendet. Der automatische Parallelisierungskompilierer ist jedoch nicht auf diese Art der Entwicklung des Parallelisierungsprogramms für das eingebettete System für eine bordeigene Vorrichtung beschränkt. Zum Beispiel kann der automatische Parallelisierungskompilierer gemäß der Erfindung für eine Entwicklung von verschiedenen Parallelisierungsprogramme für ein eingebettetes System für verschiedene Anwendungen wie beispielsweise eine Informationsanwendung verwendet werden, und kann für eine Entwicklung eines Parallelisierungsprogramms für andere Anwendungen außer dem eingebetteten Systemen verwendet werden.
  • (2-2. Automatischer Parallelisierungsprozess)
  • Der automatische Parallelisierungsprozess, der das Parallelisierungsprogramm auf der Grundlage des sequenziellen Programms generiert, für welches die bedingte Kompilierung durchgeführt wird, wird nachstehend unter Bezugnahme auf ein Ablaufdiagramm von 2 erklärt. Nebenbei bemerkt werden durch die bedingte Kompilierung binäre Daten, die auf ein eingebettetes System gemountet sind, aus dem sequenziellen Programm generiert. Dieser Typ des eingebetteten Systems entspricht einem Wert eines Arguments, auf den durch den Kompilierungsbedingungsschalter Bezug genommen wird. Der in dem Personal Computer 10 betriebene automatische Parallelisierungskompilierer 1 beginnt den Prozess in Übereinstimmung mit einer Anweisung von den Benutzer.
  • In S100 spezifiziert der automatische Parallelisierungskompilierer 1 eine Bedingungsbeschreibung in dem sequenziellen Programm basierend auf dem in dem sequenziellen Programm beschriebenen Kompilierungsbedingungsschalter und separiert die Bedingungsbeschreibung in einen oder mehrere bedingte Blöcke bzw. Bedingungsblöcke. Nebenbei bemerkt wird in der Beschreibungsbedingung ausgewählt, ob eine Kompilierung durch eine bedingte Kompilierung durchgeführt wird oder nicht. Jeder der Bedingungsblöcke wird in eine Makroaufgabe separiert bzw. getrennt (die auch als eine bedingte Makroaufgabe bezeichnet wird). Nebenbei bemerkt kann beschrieben sein, dass S100 eine Kompilierungsschalteranalyse durchführt.
  • Der Bedingungsblock kann eine Reihe bzw. Serie von Beschreibungen sein, die durch einen Satz von Kompilierungsbedingungsschaltern in Übereinstimmung mit einem Wert des Arguments zusammen dahingehend ausgewählt werden, ob sie ein Kompilierungsziel sind oder nicht. Der Bedingungsblock kann jede von mehreren Reihen von Beschreibungen, die das Auswahlziel sein sollen, sein. Nebenbei bemerkt wird ein bestimmtes Beispiel zum Festlegen des Bedingungsblocks in einem vierten bestimmten Beispiel beschrieben.
  • In S105 führt der automatische Parallelisierungskompilierer 1 einen Softwarestruktur-Analyseprozess (siehe auch 3) aus und generiert einen MTG. Der automatische Parallelisierungskompilierer 1 wählt einen der Typen der eingebetteten Systeme, die durch das sequenzielle Programm betrieben werden, und der Prozess schreitet zu S110 fort. Nebenbei bemerkt entspricht einer der Typen der eingebetteten Systeme einem Wert des Arguments eines Kompilierungsbedingungsschalters entsprechend irgendeinem der Typen der eingebetteten Systeme.
  • In S110 führt der automatische Parallelisierungskompilierer 1 die statische Ablaufplanung entsprechend dem Typ durch, der gegenwärtig ausgewählt ist, auf der Grundlage des MTG, der durch den Softwarestruktur finde Analyseprozess generiert wurde. Demgemäß werden Makroaufgaben, die parallel ausführbar sind, unterschiedlichen PGs zugewiesen. Die Makroaufgaben, die parallel ausführbar sind, können als parallelisierbare Makroaufgaben bezeichnet werden. Ein Parallelisierungsprogramm (nachstehend auch als ein Vergleichsprogramm bezeichnet) wird generiert. Zuweisungsinformation zeigt ein Ergebnis der Zuweisung. In diesem Fall wird ein Vergleichsprogramm in Übereinstimmung mit jedem Typ der eingebetteten Systeme generiert. D. h., die statische Ablaufplanung, die einem einzelnen Typ der eingebetteten Systeme entspricht, generiert mehrere Vergleichsprogramme, die denselben Inhalt entsprechend jedem der Typen haben. Nachstehend wird ein einem Vergleichsprogramm entsprechender Typ als ein finaler Typ bezeichnet.
  • Nebenbei bemerkt wird ein Kompilierungsbedingungsschalter in dem Vergleichsprogramm für die Beschreibung entsprechend jeder der bedingten Makroaufgaben festgelegt. Der Kompilierungsbedingungsschalter des Vergleichsprogramms hat denselben Inhalt wie ein Kompilierungsbedingungsschalter, der in der Bedingungsbeschreibung entsprechend der Beschreibung in dem sequenziellen Programm festgelegt worden ist. Daher wird dann, wenn das Argument des Kompilierungsbedingungsschalters des Vergleichsprogramms auf einen Wert festgelegt ist, der irgendeinem der Typen entspricht, das Vergleichsprogramm zu einem Parallelisierungsprogramm, das dem ausgewählten Typ entspricht.
  • In der statischen Ablaufplanung kann der automatische Parallelisierungskompilierer 1 tatsächliche Kosten (zum Beispiel eine Prozesszeit) zur Zeit des Ausführen jeder Makroaufgabe mit einer automatischen Profilrückkopplungsfunktion spezifizieren. Darüber hinaus kann der automatische Parallelisierungskompilierer 1 die Makroaufgaben, die parallel ausführbar sind, jeder PG so zuweisen, dass Prozesslasten auf den PGs nahezu gleich sind. Ferner kann der automatische Parallelisierungskompilierer 1 auf der Grundlage des Kompilierungsbedingungsschalters eine Makroaufgabe spezifizieren, die kein Kompilierungsziel in dem ausgewählten Typ sein soll, und kann die statische Ablaufplanung unter in Betracht ziehen, dass es keine Prozesslast der Makroaufgabe gibt, durchführen.
  • Der automatische Parallelisierungskompilierer 1 kann das Parallelisierungsprogramm, zu welchem eine automatische Parallelisierungs-API hinzugefügt ist, in ein anderes Parallelisierungsprogramm konvertieren, in welchem eine Laufzeitbibliothek implementiert ist. Daher kann das Parallelisierungsprogramm in bzw. auf verschiedenen Plattformen betrieben werden.
  • In S115 ermittelt der automatische Parallelisierungskompilierer 1, ob die statische Ablaufplanung entsprechend allen Typen der eingebetteten Systeme, die durch das sequenzielle Programm betrieben werden, durchgeführt worden ist. Wenn eine positive Ermittlung erhalten wird (S115: JA), schreitet der Prozess zu S120 fort. Wenn eine negative Ermittlung erhalten wird (S115: NEIN), wird ein anderer Typ, in welchem die statische Ablaufplanung nicht durchgeführt worden ist, ausgewählt, und schreitet der Prozess zu S110 fort.
  • In S120 verifiziert der automatische Parallelisierungskompilierer 1 Leistungen aller in S110 bis S115 generierter Vergleichsprogramme und wählt eine geeignete statische Ablaufplanung auf der Grundlage eines Verifizierungsergebnisses. Der Prozess schreitet zu S125 fort. In diesem Fall kann eine statische Ablaufplanung, die es ermöglicht, ein Vergleichsprogramm mit der relativ besten Leistung zu generieren, ausgewählt werden. Alternativ kann eine statische Ablaufplanung ausgewählt werden, die es ermöglicht, ein Vergleichsprogramm mit einer vorbestimmten Leistung zu generieren.
  • In S125 ermittelt der automatische Parallelisierungskompilierer 1, ob die statische Ablaufplanung erfolgreich ausgewählt ist. Im Einzelnen kann zum Beispiel dann, wenn genau eine statische Ablaufplanung, die es ermöglicht, ein Vergleichsprogramm mit der relativ besten Leistung zu generieren, erhalten wird, in Betracht gezogen werden, dass die Auswahl erfolgreich durchgeführt ist. Wenn zwei oder mehr statische Ablaufplanungen, die es ermöglichen, Vergleichsprogramme mit der relativ besten Leistung zu generieren, erhalten werden, kann in Betracht gezogen werden, dass die Auswahl fehlschlägt. Alternativ kann dann, wenn die statische Ablaufplanung mit einer vorbestimmten Leistung existiert, in Betracht gezogen werden, dass die Auswahl erfolgreich durchgeführt ist. Wenn die statische Ablaufplanung mit der vorbestimmten Leistung nicht existiert, kann in Betracht gezogen werden, dass die Auswahl fehlschlägt. Wenn eine positive Ermittlung erhalten wird (S125: JA), wird ein Typ der durch das sequenzielle Programm betriebenen eingebetteten Systeme ausgewählt, und schreitet der Prozess zu S130 fort. Wenn eine negative Ermittlung erhalten wird (S125: NEIN), schreitet der Prozess zu S145 fort.
  • Ein Vergleichsprogramm, das durch die statische Ablaufplanung ausgewählt wird und dem ausgewählten Typ des eingebetteten Systems entspricht, wird als ein Auswahlprogramm bezeichnet. In S130 analysiert der automatische Parallelisierungskompilierer 1 einen in dem Auswahlprogramm beschriebenen Kompilierungsschalter und führt eine Vorverarbeitung aus. In der Vorverarbeitung führt der automatische Parallelisierungskompilierer 1 einen Prozess entsprechend dem Analyseergebnis des Kompilierungsschalters durch. Der automatische Parallelisierungskompilierer 1 spezifiziert auf der Grundlage des Kompilierungsbedingungsschalters eine Beschreibung, die in dem ausgewählten Typ nicht kompiliert ist bzw. wird, aus dem Auswahlprogramm. Der Prozess schreitet zu S135 fort.
  • In S135 generiert der automatische Parallelisierungskompilierer 1 auf der Grundlage der Beschreibung, die in dem Auswahlprogramm kompiliert ist bzw. wird, binäre Daten zum Veranlassen des Mehrkernprozessors, zu arbeiten. Der Prozess schreitet zu S140 fort.
  • In S140 ermittelt der automatische Parallelisierungskompilierer 1, ob binäre Daten entsprechend allen Typen der eingebetteten Systeme generiert sind oder nicht. Wenn eine positive Ermittlung erhalten wird (S140: JA), endet der Prozess. Wenn eine negative Ermittlung erhalten wird (S140: NEIN), wird ein anderer Typ, von welchem binäre Daten nicht generiert worden sind, ausgewählt, und schreitet der Prozess zu S130 fort.
  • In S145 benachrichtigt der automatische Parallelisierungskompilierer 1 über eine Anzeige 11 oder dergleichen, dass er die statische Ablaufplanung nicht auswählen kann. In diesem Fall kann der automatische Parallelisierungskompilierer 1 die Anzeige 11 oder dergleichen dazu veranlassen, zum Beispiel eine Parallelausführungszeit jedes Vergleichsprogramms, ein Reduktionsverhältnis jedes Vergleichsprogramms, eine maximale Parallelausführungszeit von Vergleichsprogrammen, die durch statische Ablaufplanungen generiert wurden, ein minimales Reduktionsverhältnis von Vergleichsprogrammen als ein Verifizierungsergebnis der Leistung von Vergleichsprogrammen anzuzeigen. Dann beendet der automatische Parallelisierungskompilierer 1 den Prozess. Es kann beschrieben sein, dass S145 über ein Verifizierungsergebnis benachrichtigt.
  • (2-3. Softwarestruktur-Analyseprozess)
  • Der Softwarestruktur-Analyseprozess, der den MTG aus dem sequenziellen Programm generiert, wird unter Bezugnahme auf das Ablaufdiagramm von 3 erklärt. Dieser Prozess wird in dem automatischen Parallelisierungsprozess ausgeführt.
  • In S200 führt der automatische Parallelisierungskompilierer 1 die Inline-Expansion für das sequenzielle Programm durch, und der Prozess schreitet zu S205 fort. In der Inline-Expansion wird eine Beschreibung, die eine Unterroutine aufruft, durch eine Beschreibung eines durch die Unterroutine definierten Prozesses ersetzt bzw. substituiert. Das sequenzielle Programm für das eingebettete System weist im Allgemeinen einen feinen Prozess bzw. eine feine bzw. fein abgestufte Verarbeitung auf. Es kann schwierig sein, eine Parallelisierung in einem groben Grad bzw. in grober Abstufung durchzuführen. Durch Durchführen der Inline-Expansion kann es möglich sein, in der Unterroutine eine Parallelität wirkungsvoll zu verwenden.
  • In S205 benennt der automatische Parallelisierungskompilierer 1 eine lokale Variable um. Zum Beispiel kann in dem sequenziellen Programm, das automatisch aus einem Simulink-Modell generiert wird, dieselbe lokale Variable an vielen Stellen wiederholt verwendet werden, um die Belegung des ROM zu verringern. In diesem Fall kann ermittelt werden, dass die Datenabhängigkeit zur Zeit der Parallelisierungsanalyse besteht, und kann es schwierig sein, die Parallelität hinreichend herauszulösen. Daher wird in S205 die lokale Variable, welche wiederholt verwendet wird, umbenannt.
  • Im Einzelnen spezifiziert der automatische Parallelisierungskompilierer 1 mehrere Prozessblöcke, in welchen eine lokale Variable mit demselben Namen in jeder Funktion des sequenziellen Programms verwendet wird. Der automatische Parallelisierungskompilierer 1 ändert das sequenzielle Programm so, dass eine lokale Variable mit einem eindeutigen Namen in jedem der spezifizierten Prozessblöcke verwendet wird.
  • Nebenbei bemerkt kann der Prozessblock eine Aggregation sein einschließlich der Anweisung des Verzweigungsprozesses, wie beispielsweise eines Schleifenprozesses, eines if-Satzes und eines Umschaltfallsatzes, und einer Zuweisungsanweisung mit Bezug zu der Anweisung. Der Prozessblock kann zum Beispiel eine Aggregation von Beschreibungen entsprechend jedem Block in dem Simulink-Modell, welche das sequenzielle Programm generiert, sein.
  • In S210 teilt der automatische Parallelisierungskompilierer 1 das sequenzielle Programm, für welches der vorstehende Prozess durchgeführt wird, in Makroaufgaben. Nebenbei bemerkt wird jeder Bedingungsblock in zumindest eine Makroaufgabe (als eine bedingte Makroaufgabe bezeichnet) geteilt. Der automatische Parallelisierungskompilierer 1 analysiert die Datenabhängigkeit und die Steuerungsabhängigkeit zwischen den Makroaufgaben und erzeugt den MFG. Der Prozess schreitet zu S215 fort.
  • In S215 spezifiziert der automatische Parallelisierungskompilierer 1 auf der Grundlage der durch den MFG angegebenen Steuerungsabhängigkeit eine Anfangsendaufgabe und eine Beendigungsendaufgabe. Die Anfangsendaufgabe verzweigt zu einer unterschiedlichen Makroaufgabe. Die Beendigungsendaufgabe ist die erste Makroaufgabe unter Makroaufgaben, die gemeinsam bzw. für gewöhnlich in mehreren sequenziellen Prozessen sequenziell ausgeführt werden. Die mehreren sequenziellen Prozesse haben eine gemeinsame Anfangsendaufgabe als einen Startpunkt bzw. Anfangspunkt, und werden parallel ausgeführt.
  • Der automatische Parallelisierungskompilierer 1 verschmilzt (i) die spezifizierte Anfangsendaufgabe, (ii) die spezifizierte Beendigungsendaufgabe, welche in einem Prozess mit der spezifizierten Anfangsendaufgabe als dem Startpunkt enthalten ist, und (iii) alle Makroaufgaben, die nach einer Ausführung der Anfangsendaufgabe und vor einer Ausführung der Beendigungsendaufgabe ausgeführt werden, zu einer bzw. in eine einzelne(n) Makroaufgabe. Der Prozess schreitet zu S220 fort. Dieser Prozess kann als eine Aufgabenverschmelzung bezeichnet werden.
  • Bezüglich der Beendigungsendaufgabe kann es, um eine Korngröße einer Makroaufgabe herunter zu brechen, bevorzugt sein, dass die Beendigungsendaufgabe die erste Makroaufgabe ist, die unter den Makroaufgaben, die gemeinsam in mehreren sequenziellen Prozessen ausgeführt werden, ausgeführt wird, wie in S215 beschrieben. Die mehreren sequenziellen Prozesse haben die gemeinsame Anfangsendaufgabe als den Anfangspunkt, und werden parallel ausgeführt. Eine Art und Weise zum Spezifizieren der Beendigungsendaufgabe ist jedoch nicht auf diese Art und Weise beschränkt. Jede beliebige der Makroaufgaben, welche in der zweiten und nachfolgenden Ordnung unter den mehreren Makroaufgaben ausgeführt werden, kann als die Beendigungsendaufgabe spezifiziert werden.
  • Es kann in Betracht gezogen werden, dass eine nahezu feine Parallelisierung oder eine grobe Aufgabenparallelisierung auf das sequenzielle Programm für ein eingebettetes System (insbesondere für eine bordeigene Vorrichtung) angewandt wird, da das sequenzielle Programm für ein eingebettetes System nicht so viele Schleifenstrukturen durchläuft. Um den Ausführungsüberhang zu reduzieren, verwendet der automatische Parallelisierungskompilierer 1 die grobe Aufgabenparallelisierung.
  • In dem sequenziellen Programm können die Kosten jeder Makroaufgabe mehrere zehn Takte betragen. Wenn jedoch der automatische Parallelisierungskompilierer 1 die dynamische Ablaufplanung durchführt, tritt im Allgemeinen ein Überhang von mehreren zehn bis mehreren hundert Takten auf. Daher kann die dynamische Ablaufplanung für das sequenzielle Programm nicht geeignet sein.
  • In einem Fall, in dem Makroaufgabe eine bedingte Verzweigung aufweist, wird ein Verzweigungsziel zur Ausführungszeit dynamisch ermittelt. Die statische Ablaufplanung, welche den Prozessorkern zur Kompilierungszeit zuweist, kann für die Makroaufgabe mit der bedingten Verzweigung nicht verwendet werden.
  • Erfindungsgemäß führt der automatische Parallelisierungskompilierer 1 einen Aufgabenverschmelzungsalgorithmus durch, sodass ein Abschnitt ausgehend von einer Makroaufgabe mit einer bedingten Verzweigung bis zu einer Makroaufgabe nach der Verzweigung zu einer einzelnen groben Aufgabe (bezeichnet als eine Blockaufgabe) verschmolzen wird. Durch Durchführen der Aufgabenverschmelzung verliert der MFG die Steuerungsabhängigkeit, und die statische Ablaufplanung kann verwendet werden.
  • In S220 analysiert der automatische Parallelisierungskompilierer 1 die Frühest-Ausführbar-Bedingung jeder Makroaufgabe auf der Grundlage des MFG, dass die Aufgabenverschmelzung durchgeführt ist, und generiert den MTG und beendet den Prozess.
  • (3. Konfiguration der bordeigenen Vorrichtung)
  • Eine Konfiguration einer bordeigenen Vorrichtung 20 wird unter Bezugnahme auf 4 erklärt. Die bordeigene Vorrichtung 20 arbeitet auf der Grundlage des Parallelisierungsprogramms, das durch den automatischen Parallelisierungskompilierer 1 des vorliegenden Ausführungsbeispiels generiert wird. Es wird angemerkt, dass der automatische Parallelisierungskompilierer 1 es ermöglicht, ein Parallelisierungsprogramm zu generieren, das verschiedene elektronische Vorrichtungen mit einer zu der der bordeigenen Vorrichtung 20 ähnlichen Konfiguration veranlasst, zu arbeiten.
  • Die bordeigene Vorrichtung 20 beinhaltet einen Mehrkernprozessor 21, einen Kommunikationsabschnitt 22, einen Sensor 23 und einen Eingangs- und Ausgangs-Port 24.
  • Der Mehrkernprozessor 21 beinhaltet ein ROM 21a, ein RAM 21b und mehrere PEs 21c, 21d.
  • Das ROM 21a speichert ein Parallelisierungsprogramm 21a-1 (zum Beispiel binäre Daten), das durch den automatischen Parallelisierungskompilierer 1 generiert wird. Der Mehrkernprozessor 21 arbeitet in Übereinstimmung mit den Parallelisierungsprogramm 21a-1 und steuert integral bzw. insgesamt die bordeigene Vorrichtung 20.
  • Auf das RAM 21b wird durch die PEs 21c, 21d zugegriffen. Der Kommunikationsabschnitt 22 kommuniziert mit einer anderen ECU, die über ein fahrzeuginternes LAN verbunden ist.
  • Der Sensor 23 beinhaltet verschiedene Sensoren zum Erfassen eines Status eines Steuerungsziels.
  • Der Eingangs- und Ausgangs-Port 24 sendet und empfängt verschiedene Signale, die ein Steuerungsziel steuern.
  • (Bestimmtes Beispiel)
  • Nachstehend wird ein bestimmtes Beispiel eines Prozesses, in welchem ein Parallelisierungsprogramm durch den automatischen Parallelisierungskompilierer 1 des vorliegenden Ausführungsbeispiels generiert wird, erklärt. Nachstehend repräsentiert eine Beschreibung wie beispielsweise ein ”Prozess A” oder dergleichen eine Beschreibung einer Reihe von Prozessen einschließlich verschiedener Berechnungen, einer Substitution, eines Verzweigungsprozesses und eines Funktionsaufrufs.
  • (1. Erstes bestimmtes Beispiel)
  • In einem ersten bestimmten Beispiel werden Vergleichsprogramme auf der Grundlage eines sequenziellen Programms 300 generiert, in welchem eine bedingte Kompilierung entsprechend zwei Typen (einer Spezifikation A und einer Spezifikation B) von eingebetteten Systemen durchgeführt wird und eine Leistung jedes der Vergleichsprogramme verifiziert wird (siehe auch 5). Nebenbei bemerkt können die Spezifikation A und die Spezifikation B in der Zeichnung jeweils auch als ”Spec A” und ”Spec B” bezeichnet sein.
  • Nebenbei bemerkt wird in dem ersten bestimmten Beispiel ein Parallelisierungsprogramm, das durch einen Mehrkernprozessor mit zwei PEs (einem ersten Kern und einem zweiten Kern) ausgeführt wird, erzeugt.
  • Darüber hinaus entsprechen in dem sequenziellen Programm 301 ein ”Prozess C1” und ein ”Prozess C2” einer Bedingungsbeschreibung. Ein Kompilierungsbedingungsschalter 301 wählt einen des ”Prozesses C1” und des ”Prozesses C2” als ein Kompilierungsziel aus. Im Einzelnen wird in einem Fall der Spezifikation A (”CSW = A”) der Prozess C1 als das Kompilierungsziel ausgewählt. In einem Fall der Spezifikation B (”CSW ≠ A”) wird der Prozess C2 als das Kompilierungsziel ausgewählt (bezugnehmend auf 5 und 6) Der automatische Parallelisierungskompilierer 1 spezifiziert in S100 des automatischen Parallelisierungsprozesses jeden des Prozesses C1 und des Prozesses C2 in dem sequenziellen Programm 300 als einen Bedingungsblock. Nebenbei bemerkt kann ”der Prozess C1 und der Prozess C2” als ein Bedingungsblock spezifiziert werden.
  • In S105 (einem Softwarestruktur-Analyseprozess) bezeichnet der automatische Parallelisierungskompilierer 1 jeden von ”der Prozess A, der Prozess B, der Prozess C1 und der Prozess C2” als die Makroaufgabe und generiert den MTG.
  • In dem Prozess von S110 bis S115 führt der automatische Parallelisierungskompilierer 1 die statische Ablaufplanung A entsprechend der Spezifikation A und die statische Ablaufplanung B entsprechend der Spezifikation B auf der Grundlage des sequenziellen Programms 300 durch.
  • Zuweisungsinformation 310 in 5 repräsentiert Zuweisungsinformation, die durch die statische Ablaufplanung A generiert wurde. Zuweisungsinformation 311 repräsentiert Zuweisungsinformation, die durch die statische Ablaufplanung B generiert wurde.
  • ”Der Prozess A”, ”der Prozess B”, ”der Prozess C1”, und ”der Prozess C2” in der Zuweisungsinformation 310 und der Zuweisungsinformation 311 zeigen Makroaufgaben, die jedem Prozess in dem sequenziellen Programm entsprechen. In jeder der statischen Ablaufplanung an wird zum Beispiel eine Prozesszeit jedes Prozesses als eine Prozesslast jedes Prozesses betrachtet. Darüber hinaus wird in der statischen Ablaufplanung A in Betracht gezogen, dass es keine Prozesslast ”des Prozesses C2” gibt. In der statischen Ablaufplanung B wird in Betracht gezogen, dass es keine Prozesslast ”des Prozesses C1” gibt.
  • In Übereinstimmung mit der vorstehenden statischen Ablaufplanung werden vier Vergleichsprogramme AA, AB, BA, BB generiert. Die Vergleichsprogramme AA, AB werde durch die statische Ablaufplanung A generiert. Der finale Typ des Vergleichsprogramms AA ist die Spezifikation A. Der finale Typ des Vergleichsprogramms AB ist die Spezifikation B. Die Vergleichsprogramme BA, BB werden durch die statische Ablaufplanung B generiert. Der finale Typ des Vergleichsprogramms BA ist die Spezifikation A. Der finale Typ des Vergleichsprogramms BB ist die Spezifikation B.
  • Ein Vergleichsprogramm 320 in 5 repräsentiert die Vergleichsprogramme AA, AB. Ein Vergleichsprogramm 322 repräsentiert die Vergleichsprogramme BA, BB. Wenn ein Wert ”CSW”, der das Argument der Kompilierungsbedingungsschalter 321, 323 in den Vergleichsprogrammen 320, 322 ist, festgelegt ist, wird eines der Vergleichsprogramme AA, AB, BA, BB generiert.
  • In S120 verifiziert der automatische Parallelisierungskompilierer 1 Leistungen der Vergleichsprogramme AA, AB, BA, BB, die in S110 bis S115 generiert wurden. Auf der Grundlage eines Verifizierungsergebnisses wählt der automatische Parallelisierungskompilierer 1 die optimale statische Ablaufplanung. In diesem Fall berechnet der automatische Parallelisierungskompilierer 1 eine Parallelausführungszeit und ein Reduktionsverhältnis jedes der Vergleichsprogramme AA, AB, BA, BB. Auf der Grundlage der Parallelisierungszeiten und der Reduktionsverhältnis wird die Verifizierung durchgeführt.
  • Die Parallelausführungszeit bezeichnet einen Maximalwert der Summen der Prozesszeiten der Makroaufgaben, die jedem Kern (PG) in einem Vergleichsprogramm zugewiesen sind. Nebenbei ist dann, wenn die Summe berechnet wird, die Prozesszeit einer Makroaufgabe, die nicht kompiliert ist bzw. wird, in einem finalen Typ in Übereinstimmung mit dem Vergleichsprogramm gleich null. Nebenbei bemerkt kann die Makroaufgabe, die nicht kompiliert ist bzw. wird, auch als eine nicht zu kompilierende Makroaufgabe oder als eine Makroaufgabe, die kein Kompilierungsziel ist, bezeichnet sein bzw. werden.
  • Das Reduktionsverhältnis bedeutet ein Schätzergebnis eines Unterschieds bzw. einer Differenz zwischen Leistungen eines Mehrkernprozessors, der durch das Vergleichsprogramm betrieben wird, und eines Einkernprozessors, der durch ein sequenzielles Programm betrieben wird, das derselbe bzw. von demselben Typ ist wie das Vergleichsprogramm. Das Reduktionsverhältnis wird berechnet als ein Verhältnis der Parallelausführungszeit des Vergleichsprogramms zu der Summe (auch als eine Totalprozesszeit bzw. Gesamtprozesszeit bezeichnet) der Prozesszeit jedes Prozesses, welcher durch einen Prozessor für einen einzelnen Kern ausgeführt wird, welcher durch das sequenzielle Programm betrieben wird, in welchem eine bedingte Kompilierung entsprechend einem finalen Typ in Übereinstimmung mit dem Vergleichsprogramm durchgeführt worden ist. Das Reduktionsverhältnis wird berechnet durch (1 – ”die Parallelausführungszeit eines Vergleichsprogramms”/”die Totalprozesszeit”)·100.
  • 6 zeigt die Prozesszeiten ”der Prozesse A, B, C1, C2”. 7 zeigt die Parallelausführungszeit und die Reduktionsverhältnis, welche bezüglich der Vergleichsprogramme AA, AB, BA, BB berechnet werden. Nebenbei bemerkt ist die Totalprozesszeit des sequenziellen Programms der Spezifikation A gleich 240 μs (Mikrosekunden). Die Totalprozesszeit des sequenziellen Programms der Spezifikation B ist gleich 190 μs.
  • Der Maximalwert (auch als eine maximale Parallelausführungszeit bezeichnet) der Parallelausführungszeit in den Vergleichsprogrammen AA, AB, welche durch die statische Ablaufplanung A erzeugt werden, ist gleich 120 μs. Der Minimalwert (auch als ein minimales Reduktionsverhältnis bezeichnet) des Reduktionsverhältnisses ist gleich 37%. Demgegenüber ist die maximale Parallelausführungszeit der Vergleichsprogramme BA, BB, welche durch die statische Ablaufplanung B generiert werden, gleich 140 μs. Die minimalen Reduktionsverhältnisse der Vergleichsprogramme BA, BB sind gleich 42%.
  • Daher ist dann, wenn die optimale statische Ablaufplanung auf der Grundlage der Parallelausführungszeit ausgewählt wird, die maximale Parallelausführungszeit der statischen Ablaufplanung A relativ kleiner als diejenige der statischen Ablaufplanung B. Die maximale Parallelausführungszeit (120 μs in diesem Beispiel) der statischen Ablaufplanung A ist kleiner als die maximale Parallelausführungszeit (140 μs in diesem Beispiel) der statischen Ablaufplanung B. Daher wird ermittelt, dass ein durch die statische Ablaufplanung A generiertes Vergleichsprogramm eine relativ bessere Leistung hat, so dass die statische Ablaufplanung A ausgewählt wird.
  • Demgegenüber ist dann, wenn die optimale statische Ablaufplanung auf der Grundlage des Reduktionsverhältnisses ausgewählt wird, das minimale Reduktionsverhältnis der statischen Ablaufplanung B relativ größer als das minimale Reduktionsverhältnis der statischen Ablaufplanung A. Daher wird ermittelt, dass ein durch die statische Ablaufplanung B generiertes Vergleichsprogramm eine relativ bessere Leistung hat, so dass die statische Ablaufplanung B ausgewählt wird.
  • Nebenbei bemerkt kann dann, wenn die statische Ablaufplanung allgemein auf der Grundlage der maximalen Parallelausführungszeit ausgewählt wird, und wenn die maximalen Parallelausführungszeiten der statischen Ablaufplanungen zu einander gleich sind (oder im Wesentlichen zueinander gleich sind), eine statische Ablaufplanung auf der Grundlage des minimalen Reduktionsverhältnisses ausgewählt werden. Demgegenüber kann dann, wenn die statische Ablaufplanung allgemein auf der Grundlage des minimalen Reduktionsverhältnisses ausgewählt wird, und wenn die minimalen Reduktionsverhältnis der statischen Ablaufplanungen gleich zueinander sind (oder im Wesentlichen gleich zueinander sind), die statische Ablaufplanung auf der Grundlage der maximalen Parallelausführungszeit ausgewählt werden.
  • Wenn es drei oder mehr Typen von Spezifikationen gibt, kann in ähnlicher Weise eine statische Ablaufplanung auf der Grundlage der maximalen Parallelausführungszeit und/oder des minimalen Reduktionsverhältnis ausgewählt werden.
  • (2. Zweites bestimmtes Beispiel)
  • In dem zweiten bestimmten Beispiel wird das Vergleichsprogramm auf der Grundlage eines sequenziellen Programms 400 generiert, in welchem eine bedingte Kompilierung entsprechend den 2 Typen (der Spezifikation A und der Spezifikation B) der eingebetteten Systeme durchgeführt wird. Eine Leistung jedes Vergleichsprogramms wird verifiziert (siehe auch 8).
  • In dem zweiten bestimmten Beispiel wird ein Parallelisierungsprogramm, das durch einen Mehrkernprozessor mit 2PEs (einem ersten Kern und einem zweiten Kern) ausgeführt wird, generiert. Jede Makroaufgabe wird dem ersten Kern oder dem zweiten Kern zugewiesen.
  • Darüber hinaus entsprechen in dem sequenziellen Programm 400 ”Prozesse D1, D2, F, G” Bedingungsbeschreibungen. Kompilierungsbedingungsschalter 401, 402, 403 wählen einen Teil der vorstehenden Bedingungsbeschreibungen als ein Kompilierungsziel. Im Einzelnen werden in einem Fall der Spezifikation A (”CSW = A”), ”die Prozesse D1, F” ausgewählt. In einem Fall der Spezifikation B (”CSW ≠ A”) werden ”die Prozesse D2, G” ausgewählt (bezugnehmend auf 8 und 10).
  • In S100 des automatischen Parallelisierungsprozesses spezifiziert der automatische Parallelisierungskompilierer 1 ”die Prozesse D1, D2, F, G” in dem sequenziellen Programm 400 als bedingte Blöcke.
  • Nebenbei kann ein einzelner Bedingungsblock ”die Prozesse D1, D2” beinhalten, die zusammen dahingehend ausgewählt werden, ob sie ein Kompilierungsziel oder nicht sein sollen, in Übereinstimmung mit einem Wert eines Arguments durch eine Festlegung bzw. einen Satz des Kompilierungsbedingungsschalters 401. Ein einzelner Bedingungsblock kann ”die Prozesse F, G” beinhalten, die zusammen dahingehend ausgewählt werden, ob sie Kompilierungsziele oder nicht sein sollen, in Übereinstimmung mit Werten von Argumenten durch die beiden Festlegungen bzw. Sätze der Kompilierungsbedingungsschalter 402, 403.
  • In S105 (der Softwarestruktur-Analyseprozess) ermittelt der automatische Parallelisierungskompilierer 1 jeden ”der Prozesse A to I (A, B, C, D1, D2, F, G, H, I)” als eine Makroaufgabe und generiert den MTG. Der MTG 410 in 8 wird auf der Grundlage eines sequenziellen Programms 400 generiert. Nebenbei bemerkt wird in dem automatischen Parallelisierungsprozess unabhängig von einem Kompilierungsbedingungsschalter eine Parallelisierung für alle in dem sequenziellen Programm 400 beschriebenen Prozesse extrahiert. Daher wird in dem MTG 410 eine Datenabhängigkeit aller Makroaufgaben, die in jedem Typ zu kompilieren sind, ausgedrückt.
  • In einem Abschnitt von S110 bis S115 führt der automatische Parallelisierungskompilierer 1 die statische Ablaufplanung A und die statische Ablaufplanung B auf der Grundlage des sequenziellen Programms 400 durch. Die statische Ablaufplanung A entspricht der Spezifikation A. Die statische Ablaufplanung B entspricht der Spezifikation B. Diese statischen Ablaufplanungen werden auf der Grundlage einer Prozesslast jeder Makroaufgabe durchgeführt. Die Prozesslast kann zum Beispiel als eine Prozesszeit ausgedrückt werden.
  • Ein MTG 411 in 9 ist ein MTG basierend auf dem sequenziellen Programm 400. In dem MTG 411 ist eine mit der Spezifikation A zu kompilierende Makroaufgabe durch eine ausgezogene Linie gezeigt, und ist eine nicht kompilierte Makroaufgabe durch eine gepunktete Linie gezeigt. Die Prozesse A, B, C, D1, F, H, I sind Kompilierungsziel, so dass sie durch ausgezogene Linien gezeigt sind. Die Prozesse G, D2 sind keine Kompilierungsziel, sollte dass sie durch gepunktete Linien gezeigt sind. Der MTG 412 in 9 ist ein MTG basierend auf dem sequenziellen Programm 400. In dem MTG 412 ist eine mit der Spezifikation B zu kompilierenden Makroaufgabe durch eine ausgezogene Linie gezeigt, und ist eine nicht kompilierte Makroaufgabe durch eine gepunktete Linie gezeigt. Daher sind in dem MTG 412 die Prozesse A, B, C, G, D2, H, I Kompilierungsziele. Die Prozesse D1, F sind keine Kompilierungsziele.
  • In der statischen Ablaufplanung A wird in Betracht gezogen, dass es keine Prozesslast der Makroaufgabe gibt, welche durch die gepunktete Linie in dem MTG 411 gezeigt ist. In ähnlicher Weise wird in der statischen Ablaufplanung B in Betracht gezogen, dass es keine Prozesslast der Makroaufgabe gibt, welche durch die gepunktete Linie in dem MTG 412 gezeigt ist.
  • In diesen statischen Ablaufplanungen (d. h. der statischen Ablaufplanung A und der statischen Ablaufplanung B) wird eine Gruppe von mehreren Makroaufgaben, die durch eine Datenabhängigkeit verbunden sind, spezifiziert. Im Einzelnen werden eine Gruppe ”der Prozesse A, B, D2, I”, eine Gruppe ”der Prozesse A, B, D1, I”, eine Gruppe ”der Prozesse A, C, F, I”, eine Gruppe ”der Prozesse A, G, H, I” und eine Gruppe ”der Prozesse A, H, I” spezifiziert.
  • Der automatische Parallelisierungskompilierer 1 berechnet die Summe der Prozesszeiten der Makroaufgaben, die zu jeder Gruppe gehören. Eine eine Gruppe mit der größten Summe der Prozesszeiten konfigurierende Makroaufgabe wird dem ersten Kern zugewiesen. Darüber hinaus wird eine andere Makroaufgabe dem ersten Kern oder dem zweiten Kern so zugewiesen, dass die maximale Prozesszeit (ein maximaler Wert der Summe der Prozesszeiten von jedem Kern zugewiesenen Makroaufgaben) minimiert wird.
  • Nebenbei bemerkt werden im Allgemeinen mehrere Makroaufgaben mit der Datenabhängigkeit demselben Kern zugewiesen. In manchen Fällen können die mehreren Makroaufgaben mit der Datenabhängigkeit unterschiedlichen Kernen zugewiesen werden. In diesem Fall kann ein Prozess in einem Kern warten, bis ein anderer Kern einen anderen Prozess beendet. Daher beinhaltet die Summe der Prozesszeiten der Makroaufgaben, die jedem Kern zugewiesen sind, die Wartezeit.
  • Eine Zuweisungsinformation 420 und eine Zuweisungsinformation 421 repräsentieren eine Zuweisungsinformation, die durch die statische Ablaufplanung A generiert wurde. Eine Zuweisungsinformation 422 und eine Zuweisungsinformation 423 repräsentieren eine Zuweisungsinformation, die durch die statische Ablaufplanung B generiert wurde. Die Zuweisungsinformation 420 und die Zuweisungsinformation 492 entsprechen einem Fall, in dem der finale Typ die Spezifikation A ist. Die Zuweisungsinformation 421 und die Zuweisungsinformation 423 entsprechen einem Fall, in dem der finale Typ die Spezifikation B ist. In diesen Zuweisungsinformationen 420, 421, 422, 423 in 9 ist eine Makroaufgabe, die ein Kompilierungsziel sein soll, durch eine ausgezogene Linie gezeigt, und ist eine Makroaufgabe, die kein Kompilierungsziel sein soll, durch eine gepunktete Linie gezeigt.
  • Eine Beschreibung ”WARTEN” in den Zuweisungsinformationen 420, 421, 422, 423 repräsentiert, dass der zweite Kern auf das Ende eines Prozesses wartet, während der erste Kern ”den Prozess A” oder ”den Prozess I” ausführt.
  • In Übereinstimmung mit der vorstehenden statischen Ablaufplanung werden vier Vergleichsprogramme AA, AB, BA, BB generiert. Die Vergleichsprogramme AA, AB werden durch die statische Ablaufplanung A generiert. Der finale Typ des Vergleichsprogramms AA ist die Spezifikation A. Der finale Typ des Vergleichsprogramms AB ist die Spezifikation B. Die Vergleichsprogramme BA, BB werden durch die statische Ablaufplanung B generiert. Der finale Typ des Vergleichsprogramms BA ist die Spezifikation A. Der finale Typ des Vergleichsprogramms BB ist die Spezifikation B.
  • In S120 verifiziert der automatische Parallelisierungskompilierer 1 Leistungen der Vergleichsprogramme AA, AB, BA, BB, die in dem Prozess von S110 bis S115 generiert wurden. Auf der Grundlage des Verifizierungsergebnisses wählt der automatische Parallelisierungskompilierer 1 die optimale statische Ablaufplanung. Um die optimale statische Ablaufplanung auszuwählen, berechnet der automatische Parallelisierungskompilierer 1 die Parallelausführungszeit jedes der Vergleichsprogramme AA, AB, BA, BB. Auf der Grundlage der Parallelisierungszeiten verifiziert der automatische Parallelisierungskompilierer 1 die Leistungen bzw. Leistungsvermögen.
  • 10 zeigt die Prozesszeiten ”der Prozesse A, B, C, D1, D2, F, G, H, I”. 11 zeigt die Parallelausführungszeiten, die bezüglich der Vergleichsprogramme AA, AB, BA, BB berechnet wurden.
  • Die maximale Parallelausführungszeit der statischen Ablaufplanung A ist gleich 200 μs. Die maximale Parallelausführungszeit der statischen Ablaufplanung B ist gleich 190 μs. Daher wird dann, wenn die optimale statische Ablaufplanung auf der Grundlage der Parallelausführungszeit ausgewählt wird, die statische Ablaufplanung B ausgewählt.
  • Ähnlich zu dem ersten bestimmten Beispiel kann die optimale statische Ablaufplanung auf der Grundlage des Reduktionsverhältnisses oder einer Kombination der Parallelausführungszeit und des Reduktionsverhältnisses ausgewählt werden.
  • (3. Drittes bestimmtes Beispiel)
  • In dem dritten bestimmten Beispiel wird ein Vergleichsprogramm auf der Grundlage eines sequenziellen Programms generiert, für welches eine bedingte Kompilierung entsprechend drei Typen (einer Spezifikation A, einer Spezifikation B und einer Spezifikation C) von eingebetteten Systemen durchgeführt wird. Leistungen der Vergleichsprogramme werden verifiziert. Nachstehend wird ein Verifizierungsverfahren einer Leistung bzw. eines Leistungsvermögens im Einzelnen erklärt.
  • Ein Prozess von S100 bis S115 in dem automatischen Parallelisierungsprozess generiert neun Vergleichsprogramme AA, AB, AC, BA, BB, BC, CA, CB, CC (bezugnehmend auf 12).
  • Die Vergleichsprogramme AA, AB, AC werden durch die statische Ablaufplanung A generiert. Der finale Typ des Vergleichsprogramms AA entspricht der Spezifikation A. Der finale Typ des Vergleichsprogramms AB entspricht der Spezifikation B. Der finale Typ des Vergleichsprogramms AC entspricht der Spezifikation C.
  • Die Vergleichsprogramme BA, BB, BC werden durch die statische Ablaufplanung B generiert. Der finale Typ des Vergleichsprogramms BA entspricht der Spezifikation A. Der finale Typ des Vergleichsprogramms BB entspricht der Spezifikation B. Der finale Typ des Vergleichsprogramms BC entspricht der Spezifikation C.
  • Die Vergleichsprogramme CA, CB, CC werden durch die statische Ablaufplanung C generiert. Der finale Typ des Vergleichsprogramms CA entspricht der Spezifikation A. Der finale Typ des Vergleichsprogramms CB entspricht der Spezifikation B. Der finale Typ des Vergleichsprogramms CC entspricht der Spezifikation C.
  • In S120 verifiziert der automatische Parallelisierungskompilierer 1 eine Leistung dieser Vergleichsprogramme. Auf der Grundlage des Verifizierungsergebnisses wählt der automatische Parallelisierungskompilierer 1 der die optimale statische Ablaufplanung. Die Parallelausführungszeit und das Reduktionsverhältnis ist jedes Vergleichsprogramms wird berechnet, auf siehe auch 12). Der automatische Parallelisierungskompilierer 1 ermittelt, ob jede der statischen Ablaufplanungen eine Auswahlbedingung erfüllt, die auf der Grundlage von sowohl der Parallelausführungszeit und des Reduktionsverhältnisses festgelegt ist. Nebenbei bemerkt zeigt ein Beispiel von 12, dass die Totalprozesszeit des sequenziellen Programms der Spezifikation A gleich 100 μs ist, die Totalprozesszeit des sequenziellen Programms der Spezifikation B gleich 50 μs ist und die Totalprozesszeit des sequenziellen Programms der Spezifikation C gleich 50 μs ist.
  • Im Einzelnen sei zum Beispiel angenommen, dass eine erste Auswahlbedingung festgelegt ist. Die erste Auswahlbedingung besteht darin, dass die Parallelausführungszeit eines Vergleichsprogramms, in welchem der finale Typ der Spezifikation A entspricht, kleiner ist als 65 μs, die Parallelausführungszeit des Vergleichsprogramms, in welchem der finale Typ der Spezifikation B entspricht, kleiner ist als 35 μs, und die Parallelausführungszeit des Vergleichsprogramms, in welchem der finale Typ der Spezifikation C entspricht, kleiner ist als 35 μs.
  • In dem in 12 beschriebenen Beispiel erfüllen die Vergleichsprogramme BA, BB, BC, die durch die statische Ablaufplanung B generiert wurden, die erste Auswahlbedingung. Daher wählt der automatische Parallelisierungskompilierer 1 die statische Ablaufplanung B.
  • Nebenbei bemerkt kann die erste Auswahlbedingung in einem Fall verwendet werden, in dem Mehrkernprozessoren, die auf verschiedene Typen von eingebetteten Systemen gemountet sind, unterschiedliche Leistungen aufweisen.
  • Zum Beispiel sei angenommen, dass eine zweite Auswahlbedingung festgelegt ist. Die zweite Auswahlbedingung besteht darin, dass die Parallelausführungszeit des Vergleichsprogramms, in welchem der finale Typ der Spezifikation A entspricht, kleiner ist als 65 μs, und der Minimalwert der Reduktionsverhältnisse des Vergleichsprogramms, in welchem der finale Typ der Spezifikation B entspricht, und des Vergleichsprogramms, in welchem der finale Typ der Spezifikation C entspricht, relativ groß ist.
  • In dem in 12 beschriebenen Beispiel erfüllen die Vergleichsprogramme, die durch die statische Ablaufplanung B generiert wurden, die zweite Auswahlbedingung. Der automatische Parallelisierungskompilierer 1 wählt die statische Ablaufplanung B.
  • Nebenbei bemerkt kann die zweite Auswahlbedingung in einem Fall verwendet werden, in dem Mehrkernprozessoren, die auf verschiedene Typen von eingebetteten Systemen gemountet sind, im wesentlichen dieselben Leistungen aufweisen, und die Prozesslast des sequenziellen Programms, das die Spezifikation A ist, größer ist als eine Prozesslast des sequenziellen Programms, das ein anderer bzw. der andere Typ ist.
  • (4. Viertes bestimmtes Beispiel)
  • In einem vierten bestimmten Beispiel wird ein Vergleichsprogramm auf der Grundlage eines sequenziellen Programms generiert, in welchem die bedingte Kompilierung entsprechend drei Typen (einer Spezifikation A, einer Spezifikation B und einer Spezifikation C) von eingebetteten Systemen durch drei Kompilierungsbedingungsschalter 501, 502, 503 durchgeführt wird. Die Kompilierungsbedingungsschalter 501, 502, 503 verwenden unterschiedliche multiple Argumente. Ein Verfahren zum Teilen einer Bedingungsbeschreibung 500 in dem sequenziellen Programm in Makroaufgaben wird erklärt (bezugnehmend auf 13).
  • Die Kompilierungsbedingungsschalter 501, 502, 503 verwenden jeweils Argumente ”NA”, ”JC” und ”TM”. 14 zeigt Werte von Argumenten, die festgelegt werden können. 15 zeigt festgelegte Werte der Argumente in jedem der Typen.
  • In S100 spezifiziert der automatische Parallelisierungskompilierer 1 jeden ”der Prozesse A, B, C, D, E”, die in einem sequenziellen Programm 500 beschrieben sind, als einen Bedingungsblock.
  • In S105 (entsprechend dem Softwarestruktur-Analyseprozess) bestimmt bzw. ermittelt der automatische Parallelisierungskompilierer 1 jeden ”der Prozesse A, B, C, D, E”, welche als der Bedingungsblock spezifiziert ist, als eine Makroaufgabe. Der automatische Parallelisierungskompilierer 1 generiert einen MTG. Makroaufgaben entsprechend ”den Prozessen A, B, C, D, E” werden jeweils als ”Makroaufgaben A, B, C, D, E” bezeichnet.
  • In einem Prozess von S110 bis S115 führt der automatische Parallelisierungskompilierer 1 die statische Ablaufplanung entsprechend jedem Typ durch. Der automatische Parallelisierungskompilierer 1 weist jede ”der Makroaufgaben A, B, C, D, E” zu irgendeiner der PGs zu und generiert Vergleichsprogramme mit den Spezifikationen A, B, C als den finalen Typ. 16 zeigt eine Beschreibung entsprechend ”den Makroaufgaben A, B, C, D, E” in dem Vergleichsprogramm.
  • Die ”Prozesse A, B, C, D, E” entsprechend ”den Makroaufgaben A, B, C, D, E” sind in dem Vergleichsprogramm beschrieben. Ein Kompilierungsbedingungsschalter wird für jeden ”der Prozesse A, B, C, D, E” festgelegt. Die Kompilierungsbedingungsschalter, die in den ”Prozessen A, B, C, D, E” festgelegt sind, haben einen Inhalt ähnlich zu dem der Kompilierungsbedingungsschalter, die für Prozesse in der Bedingungsbeschreibung 500 des sequenziellen Programms festgelegt sind.
  • Wenn in dem Vergleichsprogramm ein Argument des Kompilierungsbedingungsschalters auf einen Wert entsprechend dem Typ festgelegt ist, wird ein dem Typ entsprechender Prozess als das Kompilierungsziel ausgewählt.
  • Nebenbei bemerkt können unter ”den Prozessen A, B, C, D, E”, die in der Bedingungsbeschreibung 500 des sequenziellen Programms beschrieben sind, ”die Prozesse A, B, C” und ”die Prozesse D, E” unterschiedliche Bedingungsblöcke in S100 sein.
  • In diesem Fall werden ”eine Makroaufgabe X” und ”eine Makroaufgabe Y” durch jeweils Entsprechen zu ”den Prozessen A, B, C” und ”den Prozessen D, E” generiert bzw. festgelegt. Die ”Prozesse A, B, C” entsprechend ”der Makroaufgabe X” sind in dem Vergleichsprogramm beschrieben, und, ”die Prozesse D, E” entsprechend ”der Makroaufgabe Y” sind in dem Vergleichsprogramm beschrieben. Kompilierungsbedingungsschalter werden jeweils für diese Prozesse festgelegt. Die Kompilierungsbedingungsschalter, welche für jeden ”der Prozesse A, B, C” und ”der Prozesse D, E” festgelegt sind, haben Inhalte ähnlich zu denjenigen der Kompilierungsbedingungsschalter, die für die Prozesse in der Bedingungsbeschreibung 500 des sequenziellen Programms festgelegt sind.
  • (Wirkung)
  • Der automatische Parallelisierungskompilierer 1 des vorliegenden Ausführungsbeispiels generiert ein Parallelisierungsprogramm aus einem sequenziellen Programm, während alle Bedingungsbeschreibungen enthalten sind bzw. unter Einbezug aller Bedingungsbeschreibungen. Der automatische Parallelisierungskompilierer 1 entfernt einen Abschnitt, der nicht kompiliert wird, in bzw. aus einem Typ eines eingebetteten Systems entsprechend dem Parallelisierungsprogramm, und generiert einen Binärcode, der den Typ des eingebetteten Systems veranlasst, zu arbeiten. Nebenbei bemerkt ist das eingebettete System durch ein System einschließlich eines Mehrkernprozessors bereitgestellt.
  • Daher kann es möglich sein, immer einen anderen Prozess als einen Prozess entsprechend einer Bedienungsbeschreibung zu der identischen Prozessorgruppe zuzuweisen. Nebenbei bemerkt repräsentiert der andere Prozess als der der Bedingungsbeschreibung entsprechende Prozess einen Prozess, der gemeinsam bzw. für gewöhnlich in allen Typen der Parallelisierungsprogramme ausgeführt wird. Es kann möglich sein, die Kommunalität bzw. Gemeinsamkeit(en) zwischen Typen der Parallelisierungsprogramme weiter zu verbessern, und die Beibehaltung der Qualität und die Verwaltung der Parallelisierungsprogramme leichter zu machen bzw. zu erleichtern.
  • Der automatische Parallelisierungskompilierer 1 führt eine statische Ablaufplanung basierend auf realen Kosten (zum Beispiel einer Prozesslast) einer Makroaufgabe durch. Im Einzelnen werden, damit Prozesslasten in jeder PG im Wesentlichen gleich sind, Makroaufgaben, die parallel ausführbar sind, unterschiedlichen PGs zugewiesen. Daher kann es möglich sein, eine Leistung bzw. ein Leistungsvermögen eines Mehrkernprozessors, der in Übereinstimmung mit dem Parallelisierungsprogramm arbeitet, zu verbessern.
  • Der automatische Parallelisierungskompilierer 1 führt die statische Ablaufplanung unter Entsprechung zu einem Typ irgendeines der sequenziellen Programme durch. In diesem Fall wird in Betracht gezogen, dass eine Makroaufgabe, welche nicht in dem entsprechenden Typ kompiliert ist bzw. wird, keine Prozesslast aufweist. Demgemäß kann es dann, wenn eine Beschreibung, die in dem zu der statischen Ablaufplanung entsprechenden Typ nicht kompiliert ist bzw. wird, aus einem durch die statische Ablaufplanung generierten Vergleichsprogramm entfernt ist bzw. wird, möglich sein, die optimale Leistung zu erhalten. Es kann möglich sein, die Leistung des durch den automatischen Parallelisierungskompilierer 1 generierten Parallelisierungsprogramms zu verbessern.
  • Der automatische Parallelisierungskompilierer 1 führt die statische Ablaufplanung durch, welche zu jedem Typ entspricht, und generiert in jeder der statischen Ablaufplanungen in mehrere Vergleichsprogramme entsprechend jedem Typ. Der automatische Parallelisierungskompilierer 1 verifiziert eine Leistung jedes Vergleichsprogramms. Auf der Grundlage eines Vergleichsergebnisses wählt der automatische Parallelisierungskompilierer 1 eine statische Ablaufplanung aus, welches es ermöglicht, ein Vergleichsprogramm mit der optimalen Leistung zu generieren.
  • Ferner wird ein Abschnitt (der auch als einen nicht Kompilierungsziel Abschnitt bezeichnet wird), der nicht kompiliert ist bzw. wird, aus dem durch die ausgewählte statische Ablaufplanung generierten Vergleichsprogramm entfernt, und wird ein zu jedem Typ entsprechendes Parallelisierungsprogramm generiert. Demgemäß wird ein Prozess, der in jedem Typ in dem Parallelisierungsprogramm gemeinsam (vorhanden) ist, immer der identischen PG zugewiesen, sodass es möglich sein kann, die Kommunalität bzw. Gemeinsamkeit(en) zwischen Parallelisierungsprogramme in jedem Typ weiter zu verbessern.
  • Da eine statische Ablaufplanung auf der Grundlage eines Verifizierungsergebnisses von Leistungen von Vergleichsprogrammen ausgewählt wird, kann es möglich sein, ein Parallelisierungsprogramm mit einer hohen Leistung zu generieren. Daher kann es unter Verhindern einer Verringerung einer Leistung eines Parallelisierungsprogramms möglich sein, die Beibehaltung der Qualität und die Verwaltung des Parallelisierungsprogramms leicht zu machen.
  • Der automatische Parallelisierungskompilierer 1 berechnet die Parallelausführungszeit und das Reduktionsverhältnis jedes Vergleichsprogramms. Der automatische Parallelisierungskompilierer 1 verifiziert eine Leistung jedes Vergleichsprogramms auf der Grundlage von sowohl als auch oder einem von Parallelausführungszeit und Reduktionsverhältnis. Daher kann es möglich sein, die Leistung jedes Vergleichsprogramms präzise zu bestimmen, und kann es möglich sein, eine statische Ablaufplanung geeigneter auszuwählen.
  • In einem Fall, in dem der automatische Parallelisierungskompilierer 1 eine statische Ablaufplanung nicht auswählt, benachrichtigt der automatische Parallelisierungskompilierer 1 einen Benutzer über diese Situation. Demgemäß kann es möglich sein, die Benutzbarkeit des automatischen Parallelisierungskompilierers 1 zu verbessern.
  • (Andere Ausführungsbeispiele)
  • wie vorstehend erwähnt wurde, ist, obwohl die Ausführungsbeispiele beschrieben wurden, die Erfindung nicht auf die vorliegenden Ausführungsbeispiele beschränkt, sondern kann verschiedene Ausführungsformen aufweisen.
    • (1) Der automatische Parallelisierungsprozess in dem vorliegenden Ausführungsbeispiel führt die statische Ablaufplanung entsprechend allen Typen der sequenziellen Kompilierer durch. Alternativ kann eine statische Ablaufplanung, die zu irgend einem der Typen der statischen Ablaufplanungen entspricht, durchgeführt werden, und kann ein Vergleichsprogramm, das durch die statische Ablaufplanung generiert wird, ein zu jedem Typ entsprechendes Parallelisierungsprogramm sein. Nebenbei bemerkt kann ein Benutzer den Typ auswählen.
  • Der automatische Parallelisierungsprozess kann mehrere Typen der statischen Ablaufplanungen entsprechend einem Teil von Typen oder allen Typen der sequenziellen Kompilierer durchführen, und kann eine Leistung jedes Vergleichsprogramms ähnlich wie in dem vorliegenden Ausführungsbeispiel verifizieren, so das eine beliebige eine der statischen Ablaufplanungen ausgewählt werden kann.
  • In diesem Fall kann es möglich sein, die Kommunalität zwischen den Typen der Parallelisierungsprogramme weiter zu verbessern, und die Beibehaltung der Qualität und die Verwaltung der Parallelisierungsprogramme leicht zu machen.
    • (2) Der automatische Parallelisierungskompilierer 1 des vorliegenden Ausführungsbeispiels führt die Inline-Expansion des sequenziellen Programms in S200 des Softwarestruktur-Analyseprozesses durch, und führt die Umbenennung der lokalen Variablen in S205 durch. Jedoch können beide oder eine der Inline-Expansion und der Umbenennung weggelassen werden. In diesem Fall kann es in Abhängigkeit von einer Struktur eines sequenziellen Programms möglich sein, ähnliche Wirkungen wie in dem vorliegenden Ausführungsbeispiel zu erhalten.
    • (3) Eine in einem einzelnen Konfigurationselement enthaltene Funktion kann auf mehrere Konfigurationselemente verteilt sein, und Funktionen, die in mehreren Konfigurationselementen enthalten sind, können auf ein einzelnes Konfigurationselement vereinigt sein. Zumindest ein Teil der Konfiguration in den Ausführungsbeispielen kann durch eine bekannte Konfiguration mit der identischen Funktion ersetzt sein. Ein Teil der Konfiguration in den vorliegenden Ausführungsbeispielen kann weggelassen werden. Zumindest ein Teil der Konfiguration in einem Ausführungsbeispiel kann zu der Konfiguration in einem anderen Ausführungsbeispiel hinzugefügt sein oder in dieser ersetzen.
    • (4) Die Erfindung kann durch den in dem vorliegenden Ausführungsbeispiel beschriebenen automatischen Parallelisierungskompilierer, die automatische Parallelisierungskompilierervorrichtung, ein Speichermedium, das den automatischen Parallelisierungskompilierer speichert, ein Verfahren entsprechend einem durch den automatischen Parallelisierungskompilierer durchgeführten Prozess, und verschiedene Ausführungsformen implementiert sein.
  • Der automatische Parallelisierungskompilierer 1 kann einem Beispiel eines automatischen Parallelisierungskompilierers entsprechen. Die bordeigene Vorrichtung 20 kann einem Beispiel einer elektronischen Vorrichtung entsprechen.
  • Die Prozessorgruppe (PG) kann einem Beispiel einer Prozessoreinheit entsprechen.
  • S110 des automatischen Parallelisierungsprozesses kann einem Beispiel eines Ablaufplanungsschritts und eines Ablaufplanungsmittels entsprechen. S120 kann einem Beispiel eines Verifizierungsschritts, eines Verifizierungsmittels, eines Auswahlschritts und eines Auswahlmittels entsprechen. S145 kann einem Beispiel eines Benachrichtigungsschritts und eines Benachrichtigungsmittels entsprechen.
  • S210 des Softwareanalyseprozesses kann einem Beispiel eines Teilungsschritts und eines Teilungsmittels entsprechen. S220 kann einem Beispiel eines Extraktionsschritts und eines Extraktionsmittels entsprechen.
  • Der Wert des Arguments des Kompilierungsbedingungsschalters kann einem Beispiel von Eingangsinformationen entsprechen.
  • Die Parallelausführungszeit kann einem Beispiel einer maximalen Prozesslast eines Vergleichsprogramms entsprechen. Das Reduktionsverhältnis kann einem Beispiel eines Unterschieds bzw. einer Differenz von Leistungen eines mehr Prozessorsystems, das in Übereinstimmung mit dem Vergleichsprogramm arbeitet, und eines Einprozessorsystem, das in Übereinstimmung mit dem sequenziellen Programm arbeitet, entsprechen.
  • Es wird angemerkt, dass ein Ablaufdiagramm oder der Prozess des Ablaufdiagramms in der vorliegenden Anmeldung Schritte beinhaltet (die auch als Sektionen bzw. Abschnitte bezeichnet werden), von welchen jeder zum Beispiel als S100 repräsentiert ist. Ferner kann jeder Schritt in mehrere Unterschritte unterteilt sein, während mehrere Schritte zu einem einzelnen Schritt kombiniert sein können.
  • Während die Erfindung unter Bezugnahme auf Ausführungsbeispiele derselben beschrieben wurde, versteht sich, dass die Erfindung nicht auf die Ausführungsbeispiele und Anordnungen beschränkt ist. Die Erfindung soll verschiedenartige Modifikationen und äquivalente Anordnungen wecken. Darüber hinaus liegen auch verschiedenartige Kombinationen und Konfigurationen, andere Kombinationen und Konfigurationen, einschließlich mehr oder weniger Elementen oder nur eines einzelnen Elements, ebenfalls im Rahmen der Erfindung.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • JP 4177681 [0062]
    • GB 2478874 [0064]
    • JP 4476267 [0065]
  • Zitierte Nicht-Patentliteratur
    • K. Seo, J. Yoon, J. Kim, T. Chung, K. Yi und N. Chang, ”Coordinated implementation and processing of a unified chassis control algorithm with multi-central processing unit”, JAUTO1346, IMechE, 2009, Vol. 224, Part D. [0002]
    • Hiroki Honda, Masahiko Iwata und Hironori Kasahara, ”Coarse grain parallelism detection scheme of a Fortran program” Transactions of IEICE D-I. Vol. J73-D-I No. 12, pp. 951–960, 1990 [0047]
    • Hironori Kasahara, Kento Aida, Akimasa Yoshida, Masami Okamoto und Hiroki Honda ”A macro-task generation scheme for Fortran macrodataflow computation”, Transactions of IEICE D-I. Vol. J75-D-I, No. 8, pp. 511–525, 1992 [0049]
    • ”Optimally Scheduled Advanced Multiprocessor Application Program Interface”, WASEDA University, 2008 [0068]

Claims (10)

  1. Parallelisierungskompilierungsverfahren, beinhaltend: einen Teilungsschritt (S210), der einen in einem sequenziellen Programm beschriebenen Prozess unabhängig von Eingangsinformation in eine Vielzahl von Makroaufgaben teilt, wobei das sequenzielle Programm durch ein Einprozessorsystem ausgeführt wird und das sequenzielle Programm eine Bedingungsbeschreibung beinhaltet, die als durch eine bedingte Kompilierung zu kompilieren oder nicht ausgewählt wird, in Übereinstimmung mit der Eingangsinformation; einen Extraktionsschritt (S220), der auf der Grundlage einer Datenabhängigkeit zwischen den Makroaufgaben aus den Makroaufgaben parallelisierbare Makroaufgaben extrahiert, die durch eine Vielzahl von Prozessoreinheiten, die ein Multiprozessorsystem konfigurieren, parallel ausführbar sind; und einen Ablaufplanungsschritt (S110), der jede der Makroaufgaben einer beliebigen der Prozessoreinheiten zuweist, alle oder einen Teil der parallelisierbaren Makroaufgaben Prozessoreinheiten zuweist, die sich voneinander unterscheiden, und eine statische Ablaufplanung durchführt, um ein durch das Multiprozessorsystem ausgeführtes Parallelisierungsprogramm zu generieren.
  2. Parallelisierungskompilierungsverfahren nach Anspruch 1, bei dem: der Ablaufplanungsschritt die statische Ablaufplanung auf der Grundlage von Prozesslasten der Makroaufgaben durchführt.
  3. Parallelisierungskompilierungsverfahren nach Anspruch 2, bei dem: der Ablaufplanungsschritt die statische Ablaufplanung entsprechend einer vorbestimmten Eingangsinformation durchführt; und der Ablaufplanungsschritt berücksichtigt, dass in der statischen Ablaufplanung eine Makroaufgabe, die der Bedingungsbeschreibung entspricht, die nicht durch die Eingangsinformation kompiliert wird, keine Prozesslast hat.
  4. Parallelisierungskompilierungsverfahren nach einem der Ansprüche 1 bis 3, bei der: der Ablaufplanungsschritt statische Ablaufplanungen entsprechend vorbestimmten zwei oder mehr Typen von Eingangsinformation durchführt, und Parallelisierungsprogramme entsprechend den zwei oder mehr Typen von Eingangsinformation generiert; ein Vergleichsprogramm bereitgestellt wird durch Entfernen, aus jedem der Parallelisierungsprogramme, der Bedingungsbeschreibung, die als nicht zu kompilieren ausgewählt ist, durch die Eingangsinformation, wobei das jede der Parallelisierungsprogramme einer vorbestimmten Eingangsinformation entspricht und in der statischen Ablaufplanung generiert wird; das Parallelisierungskompilierungsverfahren weiter beinhaltet: einen Verifizierungsschritt (S120), der bezüglich der statischen Ablaufplanungen eine Leistung des Vergleichsprogramms verifiziert, das aus dem Parallelisierungsprogramm generiert wird, das durch die statische Ablaufplanung generiert wird und jedem der Typen der Eingangsinformation entspricht; und einen Auswahlschritt (S120), der eine beliebige der statischen Ablaufplanungen auf der Grundlage eines Verifizierungsergebnisses des Verifizierungsschritts auswählt.
  5. Parallelisierungskompilierungsverfahren nach Anspruch 4, bei dem: bezüglich jedem von Vergleichsprogrammen der Verifizierungsschritt eine Summe von Prozesslasten der Makroaufgaben berechnet, die für jede der Prozessoreinheiten zugewiesen sind; ein Maximalwert der Summe als eine maximale Prozesslast des Vergleichsprogramms definiert wird; und der Auswahlschritt eine beliebige der statischen Ablaufplanungen auf der Grundlage der maximalen Prozesslast auswählt.
  6. Parallelisierungskompilierungsverfahren nach Anspruch 4, bei dem: bezüglich jedem von Vergleichsprogrammen der Verifizierungsschritt einen Unterschied abschätzt von (i) einer Leistung des Multiprozessorsystems, das in Übereinstimmung mit dem Vergleichsprogramm arbeitet, und (ii) einer Leistung des Einprozessorsystems, das in Übereinstimmung mit dem sequenziellen Programm arbeitet, in welchem die Bedingungsbeschreibung, die als nicht zu kompilieren ausgewählt ist, durch die Eingangsinformation, entsprechend dem Vergleichsprogramm, entfernt ist; und der Auswahlschritt eine beliebige der statischen Ablaufplanungen auf der Grundlage eines Schätzergebnisses des Unterschieds der Leistungen auswählt.
  7. Parallelisierungskompilierungsverfahren nach Anspruch 4, bei dem: bezüglich jedem von Vergleichsprogrammen der Verifizierungsschritt eine Summe von Prozesslasten der Makroaufgaben berechnet, die für jede der Prozessoreinheiten zugewiesen sind, und ein Maximalwert der Summe als eine maximale Prozesslast des Vergleichsprogramms definiert wird, einen Unterschied abschätzt von (i) einer Leistung des Multiprozessorsystems, das in Übereinstimmung mit dem Vergleichsprogramm arbeitet, und (ii) einer Leistung des Einprozessorsystems, das in Übereinstimmung mit dem sequenziellen Programm arbeitet, in welchem die Bedingungsbeschreibung, die als nicht zu kompilieren ausgewählt ist, durch die Eingangsinformation, entsprechend dem Vergleichsprogramm, entfernt ist; und der Auswahlschritt eine beliebige der statischen Ablaufplanungen auf der Grundlage der maximalen Prozesslast und eines Schätzergebnisses des Unterschieds der Leistung auswählt.
  8. Parallelisierungskompilierungsverfahren nach einem der Ansprüche 4–7, ferner beinhaltend: einen Benachrichtigungsschritt (S145), der darüber benachrichtigt, dass die statische Ablaufplanung nicht ausgewählt wird, wenn der Auswahlschritt die statische Ablaufplanung nicht auswählt.
  9. Parallelisierungskompilierer, der einen Computer dazu veranlasst, durchzuführen: ein Teilungsmittel (S210), das einen in einem sequenziellen Programm beschriebenen Prozess unabhängig von Eingangsinformation in eine Vielzahl von Makroaufgaben teilt, wobei das sequenzielle Programm durch ein Einprozessorsystem ausgeführt wird und das sequenzielle Programm eine Bedingungsbeschreibung beinhaltet, die als durch eine bedingte Kompilierung zu kompilieren oder nicht ausgewählt wird, in Übereinstimmung mit der Eingangsinformation; ein Extraktionsmittel (S220), das auf der Grundlage einer Datenabhängigkeit zwischen den Makroaufgaben aus den Makroaufgaben parallelisierbare Makroaufgaben extrahiert, die durch eine Vielzahl von Prozessoreinheiten, die ein Multiprozessorsystem konfigurieren, parallel ausführbar sind; und ein Ablaufplanungsmittel (S110), das jede der Makroaufgaben einer beliebigen der Prozessoreinheiten zuweist, alle oder einen Teil der parallelisierbaren Makroaufgaben Prozessoreinheiten zuweist, die sich voneinander unterscheiden, und eine statische Ablaufplanung durchführt, um ein durch das Multiprozessorsystem ausgeführtes Parallelisierungsprogramm zu generieren.
  10. Elektronische Vorrichtung, beinhaltend: ein Multiprozessorsystem, das durch ein Parallelisierungsprogramm betrieben wird, wobei das Parallelisierungsprogramm durch ein Parallelisierungskompilierungsverfahren generiert wird, und das Parallelisierungskompilierungsverfahren beinhaltet: einen Teilungsschritt (S210), der einen in einem sequenziellen Programm beschriebenen Prozess unabhängig von Eingangsinformation in eine Vielzahl von Makroaufgaben teilt, wobei das sequenzielle Programm durch ein Einprozessorsystem ausgeführt wird und das sequenzielle Programm eine Bedingungsbeschreibung beinhaltet, die als durch eine bedingte Kompilierung zu kompilieren oder nicht ausgewählt wird, in Übereinstimmung mit der Eingangsinformation; einen Extraktionsschritt (S220), der auf der Grundlage einer Datenabhängigkeit zwischen den Makroaufgaben aus den Makroaufgaben parallelisierbare Makroaufgaben extrahiert, die durch eine Vielzahl von Prozessoreinheiten, die ein Multiprozessorsystem konfigurieren, parallel ausführbar sind; und einen Ablaufplanungsschritt (S110), der jede der Makroaufgaben einer beliebigen der Prozessoreinheiten zuweist, alle oder einen Teil der parallelisierbaren Makroaufgaben Prozessoreinheiten zuweist, die sich voneinander unterscheiden, und eine statische Ablaufplanung durchführt, um ein durch das Multiprozessorsystem ausgeführtes Parallelisierungsprogramm zu generieren.
DE102016201612.1A 2015-02-05 2016-02-03 Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Vorrichtung Pending DE102016201612A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015021113A JP6488739B2 (ja) 2015-02-05 2015-02-05 並列化コンパイル方法、及び、並列化コンパイラ
JP2015-21113 2015-02-05

Publications (1)

Publication Number Publication Date
DE102016201612A1 true DE102016201612A1 (de) 2016-08-11

Family

ID=56498743

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016201612.1A Pending DE102016201612A1 (de) 2015-02-05 2016-02-03 Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Vorrichtung

Country Status (2)

Country Link
JP (1) JP6488739B2 (de)
DE (1) DE102016201612A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112019006739B4 (de) 2019-02-26 2023-04-06 Mitsubishi Electric Corporation Informationsverarbeitungsvorrichtung, informationsverarbeitungsverfahren und informationsverarbeitungsprogramm

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108614696B (zh) * 2016-12-08 2021-10-29 腾讯科技(深圳)有限公司 一种应用制作的方法、静态库生成的方法及装置
EP3343351B1 (de) * 2016-12-28 2023-04-26 Waseda University Paralleles programmgenerierungsverfahren und kompilierende parallelisierungsvorrichtung
JP7333889B2 (ja) * 2021-05-24 2023-08-25 三菱電機株式会社 ソフトウェア設計支援システム、ソフトウェア設計支援方法およびソフトウェア設計支援プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4177681B2 (ja) 2003-02-20 2008-11-05 学校法人早稲田大学 コンパイル方法、コンパイラ、およびコンパイル装置
JP4476267B2 (ja) 2006-10-06 2010-06-09 株式会社日立製作所 プロセッサ及びデータ転送ユニット
GB2478874A (en) 2007-02-28 2011-09-21 Univ Waseda Modifying a program to allocate memory in block sizes based on the program

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02245934A (ja) * 1989-03-20 1990-10-01 Fujitsu Ltd データ処理装置
JP3614372B2 (ja) * 2001-02-26 2005-01-26 三菱電機株式会社 コンパイル方法
JP4728563B2 (ja) * 2003-01-27 2011-07-20 株式会社デンソー コード生成装置、コード生成プログラム、機能実行装置、機能実行プログラム、モデル生成装置、およびモデル生成プログラム
JP5119590B2 (ja) * 2005-11-10 2013-01-16 富士通セミコンダクター株式会社 マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置
JP5381302B2 (ja) * 2009-05-07 2014-01-08 三菱電機株式会社 並列化スケジューリング装置
JP6018022B2 (ja) * 2013-06-14 2016-11-02 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4177681B2 (ja) 2003-02-20 2008-11-05 学校法人早稲田大学 コンパイル方法、コンパイラ、およびコンパイル装置
JP4476267B2 (ja) 2006-10-06 2010-06-09 株式会社日立製作所 プロセッサ及びデータ転送ユニット
GB2478874A (en) 2007-02-28 2011-09-21 Univ Waseda Modifying a program to allocate memory in block sizes based on the program

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"Optimally Scheduled Advanced Multiprocessor Application Program Interface", WASEDA University, 2008
Hironori Kasahara, Kento Aida, Akimasa Yoshida, Masami Okamoto und Hiroki Honda "A macro-task generation scheme for Fortran macrodataflow computation", Transactions of IEICE D-I. Vol. J75-D-I, No. 8, pp. 511–525, 1992
K. Seo, J. Yoon, J. Kim, T. Chung, K. Yi und N. Chang, "Coordinated implementation and processing of a unified chassis control algorithm with multi-central processing unit", JAUTO1346, IMechE, 2009, Vol. 224, Part D.

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112019006739B4 (de) 2019-02-26 2023-04-06 Mitsubishi Electric Corporation Informationsverarbeitungsvorrichtung, informationsverarbeitungsverfahren und informationsverarbeitungsprogramm

Also Published As

Publication number Publication date
JP6488739B2 (ja) 2019-03-27
JP2016143378A (ja) 2016-08-08

Similar Documents

Publication Publication Date Title
DE102014211047A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer, Parallelisierungskompiliervorrichtung und Bordvorrichtung
DE102016204963A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
CN102902512B (zh) 一种基于多线程编程及消息队列的多线程并行处理方法
US10515118B2 (en) Processing a data flow graph of a hybrid flow
DE102016201612A1 (de) Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Vorrichtung
DE102017109239A1 (de) Computerimplementiertes verfahren, computerlesbares medium und heterogenes rechnersystem
DE112011101391T5 (de) GPU-fähige Datenbanksysteme
DE102015112202A1 (de) Kombinieren von Pfaden
DE102017213160B4 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
DE102020110655A1 (de) Verfahren und vorrichtung zum verbessern der verwendung eines heterogenen systems, das software ausführt
Danalis et al. Efficient quality threshold clustering for parallel architectures
Wang et al. Elastic pipelining in an in-memory database cluster
EP0825540B1 (de) Prozessor mit Pipelining-Aufbau
DE102016208339A1 (de) Parallelisierungskompilierverfahren, parallelisierungskompilierer und fahrzeuggebundene vorrichtung
CN108241532A (zh) Gpu资源的管理分配方法和管理分配装置
DE102016204960A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE102017210126A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
DE112019005584T5 (de) Arithmetiksteuervorrichtung
DE102016219403A1 (de) Parallelisierungsverarbeitung, parallelisierungswerkzeug und fahrzeuggebundene vorrichtung
Zhang et al. Hypha: a framework based on separation of parallelisms to accelerate persistent homology matrix reduction
DE102016201614A1 (de) Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Vorrichtung
DE102016204970A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung
Traoré et al. Deque-free work-optimal parallel STL algorithms
DE112020000657T5 (de) Dienstverwaltung in einem dbms
Jin et al. Automatic multilevel parallelization using OpenMP

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009450000

Ipc: G06F0009440000

R084 Declaration of willingness to licence