DE112019006739B4 - Informationsverarbeitungsvorrichtung, informationsverarbeitungsverfahren und informationsverarbeitungsprogramm - Google Patents

Informationsverarbeitungsvorrichtung, informationsverarbeitungsverfahren und informationsverarbeitungsprogramm Download PDF

Info

Publication number
DE112019006739B4
DE112019006739B4 DE112019006739.7T DE112019006739T DE112019006739B4 DE 112019006739 B4 DE112019006739 B4 DE 112019006739B4 DE 112019006739 T DE112019006739 T DE 112019006739T DE 112019006739 B4 DE112019006739 B4 DE 112019006739B4
Authority
DE
Germany
Prior art keywords
parallelization
program
time
information
executing
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.)
Active
Application number
DE112019006739.7T
Other languages
English (en)
Other versions
DE112019006739T5 (de
Inventor
Kenzo Yamamoto
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of DE112019006739T5 publication Critical patent/DE112019006739T5/de
Application granted granted Critical
Publication of DE112019006739B4 publication Critical patent/DE112019006739B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/314Parallel programming languages

Abstract

Informationsverarbeitungsvorrichtung (100), umfassend:einen Bestimmungsabschnitt (109), um als eine parallelisierbare Zahl die Anzahl von Parallelisierung von Prozessen, die zu einer Zeit des Ausführens eines aus einer Vielzahl von Blöcken zusammengestellten Programms möglich ist, zu bestimmen,einen Zeitplan-Generierungsabschnitt (112), um als einen Parallelisierung-Ausführungszeitplan einen Ausführungszeitplan des Programms zu der Zeit des Ausführens des Programms zu generieren;einen Berechnungsabschnitt (114), um eine Parallelisierung-Ausführungszeit, die eine Zeit ist, die zum Ausführen des Programms zu einer Zeit des Ausführens des Programms gemäß dem Parallelisierung-Ausführungszeitplan erforderlich ist, zu berechnen; undeinen Informationserzeugungsabschnitt (114), um Parallelisierungsinformationen, angebend die parallelisierbare Zahl, den Parallelisierung-Ausführungszeitplan, die Parallelisierung-Ausführungszeit, die Anzahl von gemeinsamen Variablen, die die Anzahl von Variablen ist, die in zwei oder mehr Blöcken unter der Vielzahl von Blöcken gemeinsam genutzt werden, und eine Speichernutzungsmenge zu der Zeit des Ausführens des Programms zu generieren und die generierten Parallelisierungsinformationen auszugeben.

Description

  • Gebiet der Technik
  • Die vorliegende Erfindung bezieht sich auf parallele Verarbeitung auf einem Programm.
  • Stand der Technik
  • Um Skalierbarkeit der Rechenleistung oder -kapazität zu realisieren, ist es effektiv, ein Programm einer Vielzahl von Prozessoreinheiten zuzuordnen und das Programm parallel zu verarbeiten. Als eine solcher Parallelisierungstechniken gibt es eine Technik, die in der Patentliteratur 1 beschrieben ist. Bei der in Patentliteratur 1 beschriebenen Technik werden Parallelität aufweisende Tasks aus einem Programm extrahiert. Dann wird eine Verarbeitungszeit für jede Task geschätzt. Dadurch ist es möglich, Zuordnungen der Tasks gemäß Eigenschaften der Prozessoreinheiten zu erzielen.
  • US 2007 / 0 038 987 A1 beschreibt einen Compiler, der die parallele Verarbeitung optimiert.
  • US 2009 / 0 138 862 A1 beschreibt ein Verfahren zur Unterstützung der Programmparallelisierung, das einen Benutzer beim effizienten Ausführen der Programmparallelisierung unterstützt.
  • DE 10 2016 201 612 A1 beschreibt ein Parallelisierungskompilierungsverfahren beinhaltet einen Teilungsschritt, einen Extraktionsschritt und einen Ablaufplanungsschritt.
  • US 2002 / 0 095 666 A1 beschreibt ein Computerprogramm-Optimierungsverfahren.
  • US 2005 / 0 229 090 A1 beschreibt ein Dekodierungsverfahren.
  • Liste der Anführungen
  • Patentliteratur
  • Patentliteratur 1: JP4082706B
  • Kurzfassung der Erfindung
  • Technische Aufgabe
  • Gemäß der Patentliteratur 1 ist es möglich, das Programm automatisch zu parallelisieren. Da die Verbesserung der Rechenleistung durch Parallelisierung jedoch von der Unabhängigkeit der Tasks und Steuerungsstrukturen der Tasks in dem Programm abhängig ist, besteht das Problem, dass ein Programmierer die Codierung unter Berücksichtigung der Parallelität durchführen muss.
  • Falls der Programmierer zum Beispiel ein Programm generiert, in dem die Unabhängigkeit der Tasks gering ist, ohne die Parallelität zu berücksichtigen, sind die Anteile, mit denen jede Prozessoreinheit unabhängig arbeiten kann, selbst bei Durchführung von Parallelisierung begrenzt. Daher kommt es häufig zu einer Kommunikation zur Synchronisation zwischen den Prozessoreinheiten, und die Rechenleistung wird nicht verbessert.
  • Insbesondere in einem System wie einer SPS (Speicherprogrammierbare Steuerung), da jede von einer Vielzahl von Prozessoreinheiten über einen Arbeitsspeicher verfügt, wird ein Overhead aufgrund der Kommunikation zur Synchronisation groß. Aus diesem Grund ist in einem System wie der SPS ein Grad der Verbesserung der Rechenleistung durch die Parallelisierung wesentlich von der Unabhängigkeit der Tasks und den Steuerungsstrukturen der Tasks in dem Programm abhängig.
  • Eine Hauptaufgabe der vorliegenden Erfindung besteht darin, eine Konfiguration zur Realisierung von effizienter Parallelisierung eines Programms zu erhalten.
  • Technische Lösung
  • Diese Aufgabe wird durch Gegenstände mit den Merkmalen nach den unabhängigen Ansprüchen gelöst. Vorteilhafte Ausführungsformen der Erfindung sind Gegenstand der abhängigen Ansprüche.
  • Eine Informationsverarbeitungsvorrichtung gemäß der vorliegenden Erfindung umfasst:
    • einen Bestimmungsabschnitt, um als eine parallelisierbare Zahl die Anzahl von Parallelisierung von Prozessen, die zu einer Zeit des Ausführens eines aus einer Vielzahl von Blöcken zusammengestellten Programms möglich ist, zu bestimmen,
    • einen Zeitplan-Generierungsabschnitt, um als einen Parallelisierung-Ausführungszeitplan einen Ausführungszeitplan des Programms zu der Zeit des Ausführens des Programms zu generieren;
    • einen Berechnungsabschnitt, um eine Parallelisierung-Ausführungszeit, die eine Zeit ist, die zum Ausführen des Programms zu einer Zeit des Ausführens des Programms gemäß dem Parallelisierung-Ausführungszeitplan erforderlich ist, zu berechnen; und
    • einen Informationserzeugungsabschnitt, um Parallelisierungsinformationen, angebend die parallelisierbare Zahl, den Parallelisierung-Ausführungszeitplan, die Parallelisierung-Ausführungszeit, die Anzahl von gemeinsamen Variablen, die die Anzahl von Variablen ist, die in zwei oder mehr Blöcken unter der Vielzahl von Blöcken gemeinsam genutzt werden, und eine Speichernutzungsmenge zu der Zeit des Ausführens des Programms zu generieren und die generierten Parallelisierungsinformationen auszugeben.
  • Vorteilhafte Wirkungen der Erfindung
  • Im Rahmen der vorliegenden Erfindung werden Parallelisierungsinformationen, angebend eine parallelisierbare Zahl, einen Parallelisierung-Ausführungszeitplan und eine Parallelisierung-Ausführungszeit, ausgegeben. Daher kann ein Programmierer durch Bezugnehmen auf die Parallelisierungsinformationen die Anzahl von Parallelisierung, die in einem gerade generierten Programm möglich ist, einen Zustand von Verbesserung der Rechenleistung durch Parallelisierung und einen Abschnitt, der Verbesserung der Rechenleistung in dem Programm beeinflusst, erkennen. Daher ist es möglich, effiziente Parallelisierung zu realisieren.
  • Figurenliste
    • 1 ist ein Diagramm, das ein Konfigurationsbeispiel für ein System gemäß einer ersten Ausführungsform darstellt;
    • 2 ist ein Diagramm, das ein Hardware-Konfigurationsbeispiel einer Informationsverarbeitungsvorrichtung gemäß der ersten Ausführungsform darstellt;
    • 3 ist ein Diagramm zur Darstellung eines funktionalen Konfigurationsbeispiels der Informationsverarbeitungsvorrichtung gemäß der ersten Ausführungsform;
    • 4 ist ein Flussdiagramm, das ein Betriebsbeispiel der Informationsverarbeitungsvorrichtung gemäß der ersten Ausführungsform darstellt;
    • 5 ist ein Diagramm, das ein Beispiel für ein Programm gemäß der ersten Ausführungsform darstellt;
    • 6 ist ein Diagramm, das ein Beispiel für Parallelisierungsinformationen gemäß der ersten Ausführungsform darstellt;
    • 7 ist ein Flussdiagramm, das ein Betriebsbeispiel einer Informationsverarbeitungsvorrichtung gemäß einer zweiten Ausführungsform darstellt;
    • 8 ist ein Flussdiagramm, das ein Betriebsbeispiel der Informationsverarbeitungsvorrichtung gemäß einer dritten Ausführungsform darstellt;
    • 9 ist ein Diagramm, das ein Beispiel für Parallelisierungsinformationen gemäß der dritten Ausführungsform darstellt;
    • 10 ist ein Flussdiagramm, das einen Extrahierungsvorgang gemeinsamer Einrichtungen gemäß der ersten Ausführungsform darstellt;
    • 11 ist ein Diagramm, das ein Beispiel für das Aussehen von Anweisungen und Einrichtungsnamen für jeden Block gemäß der ersten Ausführungsform darstellt; und
    • 12 ist ein Diagramm, das einen Vorgang von Extrahierungsabhängigkeitsbeziehungen gemäß der ersten Ausführungsform darstellt.
  • Beschreibung von Ausführungsformen
  • Im Folgenden werden Ausführungsformen der vorliegenden Erfindung unter Bezugnahme auf die Zeichnungen beschrieben. In der folgenden Beschreibung der Ausführungsformen und in den Zeichnungen geben Teile mit den gleichen Bezugszahlen gleiche oder entsprechende Teile an.
  • Erste Ausführungsform.
  • *** Beschreibung der Konfiguration ***
  • 1 stellt ein Konfigurationsbeispiel für ein System gemäß der vorliegenden Ausführungsform dar.
  • Ein System gemäß der vorliegenden Ausführungsform ist mit einer Informationsverarbeitungsvorrichtung 100, Steuerungsausrüstung 200, einer Anlage (1) 301, einer Anlage (2) 302, einer Anlage (3) 303, einer Anlage (4) 304, einer Anlage (5) 305 und einem Netzwerk 401 und einem Netzwerk 402 konfiguriert.
  • Die Informationsverarbeitungsvorrichtung 100 generiert ein Programm zur Steuerung der Anlage (1) 301 bis zur Anlage (5) 305. Die Informationsverarbeitungsvorrichtung 100 überträgt das generierte Programm über das Netzwerk 402 an die Steuerungsausrüstung 200.
  • Es ist zu beachten, dass Operationen, die durch die Informationsverarbeitungsvorrichtung 100 durchgeführt werden, einem Informationsverarbeitungsverfahren und einem Informationsverarbeitungsprogramm entsprechen.
  • Die Steuerungsausrüstung 200 führt das durch die Informationsverarbeitungsvorrichtung 100 generierte Programm aus, überträgt Steuerungsbefehle über das Netzwerk 401 an die Anlage (1) 301 bis zur Anlage (5) 305 und steuert die Anlage (1) 301 bis zur Anlage (5) 305.
  • Die Steuerungsausrüstung 200 ist zum Beispiel eine SPS. Weiterhin kann die Steuerungsausrüstung 200 ein allgemeiner PC (Personal Computer) sein.
  • Die Anlage (1) 301 bis zur Anlage (5) 305 sind Fertigungsanlagen, die auf einer Fabriklinie 300 platziert sind.
  • Obwohl in 1 fünf Anlagen dargestellt sind, ist die Anzahl von auf der Fabriklinie 300 platzierten Anlagen nicht auf fünf beschränkt.
  • Das Netzwerk 401 und das Netzwerk 402 sind zum Beispiel Feldnetzwerke wie CC-Link. Weiterhin können das Netzwerk 401 und das Netzwerk 402 allgemeine Netzwerke wie Ethernet (eingetragenes Warenzeichen) oder dedizierte Netzwerke sein. Außerdem kann es sich bei dem Netzwerk 401 und dem Netzwerk 402 jeweils um einen anderen Typ von Netzwerk handeln.
  • 2 zeigt ein Beispiel für ein Hardware-Konfigurationsbeispiel für die Informationsverarbeitungsvorrichtung 100.
  • Die Informationsverarbeitungsvorrichtung 100 ist ein Computer, und eine Software-Konfiguration der Informationsverarbeitungsvorrichtung 100 kann durch ein Programm realisiert sein. Als eine Hardwarekonfiguration der Informationsverarbeitungsvorrichtung 100 sind ein Prozessor 11, ein Arbeitsspeicher 12, ein Massespeicher 13, eine Kommunikationseinrichtung 14, eine Eingabeeinrichtung 15 und eine Anzeigeeinrichtung 16 mit einem Bus verbunden.
  • Der Prozessor 11 ist beispielsweise eine CPU (Central-Processing-Unit = Zentrale Verarbeitungseinheit).
  • Der Arbeitsspeicher 12 ist beispielsweise ein RAM (Random Access Memory = Direktzugriffspeicher).
  • Der Massespeicher 13 ist zum Beispiel ein Festplattenlaufwerk, eine SSD oder eine Speicherkarte-Lese-/Schreibeinrichtung.
  • Die Kommunikationseinrichtung 14 ist eine Kommunikationsplatine für einen Feldnetzwerkzweck, wie zum Beispiel eine Ethernet-(eingetragenes Warenzeichen)-Kommunikationsplatine oder CC-Link.
  • Die Eingabeeinrichtung 15 ist zum Beispiel eine Maus oder eine Tastatur.
  • Die Anzeigeeinrichtung 16 ist zum Beispiel eine Anzeige.
  • Außerdem kann ein Berührungsfeld genutzt werden, das durch Kombinieren der Eingabeeinrichtung 15 und der Anzeigeeinrichtung 16 erhalten ist.
  • Der Massespeicher 13 speichert Programme, die Funktionen eines Eingabeverarbeitungsabschnitts 101, eines Zeilenprogramm-Erwerbungsabschnitts 104, eines Block-Generierungsabschnitts 106, eines Taskgraph-Generierungsabschnitts 108, eines Taskgraph-Entflechtungsabschnitts 109, eines Zeitplan-Generierungsabschnitts 112 und eines Anzeigeverarbeitungsabschnitts 114 realisieren, die später beschrieben werden.
  • Diese Programme werden von dem Massespeicher 13 in den Arbeitsspeicher 12 geladen. Dann führt der Prozessor 11 diese Programme aus und führt Betrieb des Eingabeverarbeitungsabschnitts 101, des Zeilenprogramm-Erwerbungsabschnitts 104, des Block-Generierungsabschnitts 106, den Taskgraph-Generierungsabschnitts 108, des Taskgraph-Entflechtungsabschnitt 109, des Zeitplan-Generierungsabschnitts 112 und des Anzeigeverarbeitungsabschnitts 114 durch, die später beschrieben werden.
  • 2 zeigt schematisch einen Zustand, in dem der Prozessor 11 die Programme ausführt, die die Funktionen des Eingabeverarbeitungsabschnitts 101, des Zeilenprogramm-Erwerbungsabschnitts 104, des Block-Generierungsabschnitts 106, des Taskgraph-Generierungsabschnitts 108, des Taskgraph-Entflechtungsabschnitts 109, des Zeitplan-Generierungsabschnitts 112 und des Anzeigeverarbeitungsabschnitts 114 realisieren.
  • 3 zeigt ein funktionales Konfigurationsbeispiel der Informationsverarbeitungsvorrichtung 100. Es ist zu beachten, dass ein Pfeil mit einer durchgezogenen Linie in 3 eine Ruf-Beziehung anzeigt, und Pfeile mit gestrichelten Zeilen Datenflüsse mit Datenbanken anzeigen.
  • Der Eingabeverarbeitungsabschnitt 101 überwacht einen bestimmten Bereich auf der Anzeigeeinrichtung 16 und speichert in einer Programmdatenbank 102 ein Programm in dem Massespeicher 13, wenn eine Aktion (ein Mausklick oder dergleichen) über die Eingabeeinrichtung 15 erfasst wird.
  • In der vorliegenden Ausführungsform speichert der Eingabeverarbeitungsabschnitt 101 ein in 5 beispielhaft dargestelltes Programm aus dem Massespeicher 13 in die Programmdatenbank 102.
  • In dem Programm in 5 sind ein erstes Argument und ein zweites Argument Schrittnummerninformationen. Außerdem ist in dem Programm in 5 das dritte Argument eine Anweisung und das vierte und die folgenden Argumente sind Einrichtungen. Eine Schrittnummer ist ein numerischer Wert, der als ein Index zur Messung einer Skala des Programms dient. Die Anweisung ist eine Zeichenkette, die eine durch den Prozessor der Steuerungsausrüstung 200 auszuführende Operation definiert. Es ist zu beachten, dass die Einrichtung eine Variable ist, die der Anweisung unterliegt.
  • Der Zeilenprogramm-Erwerbungsabschnitt 104 erwirbt jede Zeile des Programms aus der Programmdatenbank 102. Ein Programm aus einer Zeile wird im Folgenden als ein Zeilenprogramm bezeichnet. Weiterhin erwirbt der Zeilenprogramm-Erwerbungsabschnitt 104 die Anweisung und die Einrichtung aus dem erworbenen Zeilenprogramm. Weiterhin erwirbt der Zeilenprogramm-Erwerbungsabschnitt 104 aus einer Anweisung-Datenbank 103 einen Typ de erworbenen Anweisung, eine Ausführungszeit, ein Kopf-Flag und ein End-Flag.
  • In der Anweisung-Datenbank 103 sind für jedes Zeilenprogramm der Typ der Anweisung, die Ausführungszeit, das Kopf-Flag und das End-Flag definiert.
  • Der Typ der Anweisung gibt an, ob es sich bei der Anweisung des Zeilenprogramms um eine Referenzanweisung oder eine Schreibanweisung handelt.
  • Die Ausführungszeit gibt eine Zeit an, die für die Ausführung des Zeilenprogramms erforderlich ist.
  • Das Kopf-Flag zeigt an, ob sich oder ob sich nicht das Zeilenprogramm an einem Kopf eines Blocks befindet, der später beschrieben wird. Das heißt, das Zeilenprogramm, dessen Kopf-Flag „1“ ist, befindet sich am Kopf des Blocks.
  • Das End-Flag zeigt an, ob sich oder ob sich nicht das Zeilenprogramm an dem Ende des Blocks befindet. Das heißt, das Zeilenprogramm, dessen End-Flag „1“ ist, befindet sich am Kopf des Blocks.
  • Dann speichert der Zeilenprogramm-Erwerbungsabschnitt 104 das Zeilenprogramm, die Einrichtung, den Typ der Anweisung, die Ausführungszeit, das Kopf-Flag und das End-Flag in einer gewichteten Programmdatenbank 105.
  • Der Block-Generierungsabschnitt 106 erwirbt das Zeilenprogramm, die Einrichtung, den Typ der Anweisung, die Ausführungszeit, das Kopf-Flag und das End-Flag aus der gewichteten Programmdatenbank 105.
  • Dann gruppiert der Block-Generierungsabschnitt 106 eine Vielzahl von Zeilenprogrammen basierend auf dem Kopf-Flag und dem End-Flag, um einen Block zu konfigurieren.
  • Das heißt, der Block-Generierungsabschnitt 106 gruppiert das Zeilenprogramm, dessen Kopf-Flag „1“ ist, mit dem Zeilenprogramm, dessen End-Flag „1“ ist, um einen Block zu generieren.
  • Als ein Ergebnis der Generierung des Blocks durch den Block-Generierungsabschnitt 106 wird das Programm in eine Vielzahl von Blöcke unterteilt.
  • Weiterhin bestimmt der Block-Generierungsabschnitt 106 eine Abhängigkeitsbeziehung zwischen den Blöcken. Einzelheiten der Abhängigkeitsbeziehung zwischen den Blöcken werden später erläutert.
  • Weiterhin generiert der Block-Generierungsabschnitt 106 Blockinformationen, angebend für jeden Block die in dem Block enthaltenen Zeilenprogramme und die Einrichtung, den Typ von Anweisung und die Ausführungszeit des in dem Block enthaltenen Zeilenprogramms, und Abhängigkeitsbeziehungsinformationen, angebend die Abhängigkeitsbeziehung zwischen den Blöcken.
  • Dann speichert der Block-Generierungsabschnitt 106 die Blockinformationen und die Abhängigkeitsbeziehungsinformationen in einer Abhängigkeitsbeziehung-Datenbank 107.
  • Der Taskgraph-Generierungsabschnitt 108 erwirbt die Blockinformationen und die Abhängigkeitsbeziehungsinformationen aus der Abhängigkeitsbeziehung-Datenbank 107, bezieht sich auf die Blockinformationen und die Abhängigkeitsbeziehungsinformationen und generiert einen Taskgraphen.
  • Der Taskgraph-Entflechtungsabschnitt 109 entflechtet den durch den Tastgraph-Generierungsabschnitt 108 generierten Taskgraphen. Das heißt, der Taskgraph-Entflechtungsabschnitt 109 organisiert die Abhängigkeitsbeziehungen zwischen den Blöcken und generiert den Taskgraphen nach Löschen einer nicht notwendigen Route zwischen den Taskgraphen.
  • Weiterhin analysiert der Taskgraph-Entflechtungsabschnitt 109 den Taskgraphen nach Entflechtung und bestimmt als eine parallelisierbare Zahl die Anzahl von Parallelisierung von Prozessen, die zu einer Zeit des Ausführens des Programms möglich ist. Konkreter ausgedrückt, bestimmt der Taskgraph-Entflechtungsabschnitt 109 die parallelisierbare Zahl entsprechend der maximalen Anzahl von Verbindungen unter den Anzahlen von Verbindungen zwischen den Blöcken in dem Taskgraphen nach Entflechtung.
  • Der Taskgraph-Entflechtungsabschnitt 109 speichert in einer Taskgraph-Datenbank 110 den Taskgraphen nach Entflechtung und die parallelisierbare-Zahl-Informationen, die die parallelisierbare Zahl angeben.
  • Es ist zu beachten, dass ein Taskgraph-Entflechtungsabschnitt 109 äquivalent zu dem Bestimmungsabschnitt ist. Außerdem ist ein Prozess, der durch den Taskgraph-Entflechtungsabschnitt 109 durchgeführt wird, äquivalent zu einem Bestimmungsprozess.
  • Der Zeitplan-Generierungsabschnitt 112 erwirbt den Taskgraphen nach Entflechtung aus der Taskgraph-Datenbank 110. Dann generiert der Zeitplan-Generierungsabschnitt 112 einen Ausführungszeitplan für das Programm zu einer Zeit des Ausführens des Programms aus dem Taskgraphen nach Entflechtung. Der durch den Zeitplan-Generierungsabschnitt 112 generierte Zeitplan wird als ein Parallelisierung-Ausführungszeitplan bezeichnet. Der Parallelisierung-Ausführungszeitplan wird manchmal einfach als ein Zeitplan bezeichnet.
  • In der vorliegenden Ausführungsform generiert der Zeitplan-Generierungsabschnitt 112 ein Gantt-Diagramm, das den Parallelisierung-Ausführungszeitplan anzeigt.
  • Der Zeitplan-Generierungsabschnitt 112 speichert das generierte Gantt-Diagramm in einer Zeitplan-Datenbank 113.
  • Außerdem ist ein Prozess, der durch den Zeitplan-Generierungsabschnitt 112 durchgeführt wird, äquivalent zu einem Zeitplan-Generierungsprozess.
  • Der Anzeigeverarbeitungsabschnitt 114 erwirbt das Gantt-Diagramm aus der Zeitplan-Datenbank 113.
  • Dann berechnet der Anzeige-Verarbeitungsabschnitt 114 eine Parallelisierung-Ausführungszeit, die eine Zeit ist, die zum Ausführen des Programms zu einer Zeit des Ausführens des Programms gemäß dem Parallelisierung-Ausführungszeitplan erforderlich ist.
  • Außerdem generiert der Anzeigeverarbeitungsabschnitt 114 Parallelisierungsinformationen. Der Anzeige-Verarbeitungsabschnitt 114 generiert beispielsweise die in 6 dargestellten Parallelisierungsinformationen. Die Parallelisierungsinformationen in 6 sind mit Basisinformationen, dem Taskgraphen und dem Parallelisierung-Ausführungszeitplan (Gantt-Diagramm) konfiguriert. Details zu den Parallelisierungsinformationen in 6 werden später beschrieben.
  • Der Anzeige-Verarbeitungsabschnitt 114 gibt die generierten Parallelisierungsinformationen an die Anzeigeeinrichtung 16 aus.
  • Es ist zu beachten, dass der Anzeigeverarbeitungsabschnitt 114 äquivalent ist zu einem Berechnungsabschnitt und einem Informationserzeugungsabschnitt. Außerdem ist ein Prozess, der durch den Anzeige-Verarbeitungsabschnitt 114 ausgeführt wird, äquivalent zu einem Berechnungsprozess und einem Informationserzeugungsprozess.
  • *** Beschreibung der Betriebsweise***
  • Als nächstes wird ein Betriebsbeispiel der Informationsverarbeitungsvorrichtung 100 gemäß der vorliegenden Ausführungsform unter Bezugnahme auf ein Flussdiagramm in 4 beschrieben.
  • Der Eingabe-Verarbeitungsabschnitt 101 überwacht einen Bereich, in dem eine Bestätigungstaste angezeigt ist, auf der Anzeigeeinrichtung 16 und bestimmt, ob oder ob nicht die Bestätigungstaste über die Eingabeeinrichtung 15 gedrückt wird (ob es oder ob es nicht einen Mausklick oder dergleichen gibt) (Schritt S101). Der Eingabe-Verarbeitungsabschnitt 101 bestimmt, ob oder ob nicht die Bestätigungstaste in konstanten Intervallen, zum Beispiel jede Sekunde, jede Minute, jede Stunde und jeden Tag, gedrückt wird.
  • Wenn die Bestätigungstaste gedrückt wird (JA in Schritt S101), speichert der Eingabe-Verarbeitungsabschnitt 101 in der Programmdatenbank 102 das Programm in dem Massespeicher 13 (Schritt S102).
  • Als nächstes erwirbt der Zeilenprogramm-Erwerbungsabschnitt 104 das Zeilenprogramm aus der Programmdatenbank 102 (Schritt S103).
  • Das heißt, der Zeilenprogramm-Erwerbungsabschnitt 104 erwirbt jede Zeile des Programms aus der Programm-Datenbank 102.
  • Weiterhin erfasst der Zeilenprogramm-Erwerbungsabschnitt 104 die Einrichtung, den Typ der Anweisung, die Ausführungszeit und dergleichen für jedes Zeilenprogramm (Schritt S104).
  • Das heißt, der Zeilenprogramm-Erwerbungsabschnitt 104 erwirbt die Einrichtung aus dem in Schritt S103 erworbenen Zeilenprogramm. Ferner erwirbt der Zeilenprogramm-Erwerbungsabschnitt 104 aus der Anweisung-Datenbank 103 den Typ der Anweisung, die Ausführungszeit, das Kopf-Flag und das End-Flag entsprechend dem in Schritt S103 erworbenen Zeilenprogramm.
  • Wie oben beschrieben, sind in der Anweisung-Datenbank 103 für jedes Zeilenprogramm der Typ der Anweisung, die Ausführungszeit, das Kopf-Flag und das End-Flag definiert. Daher kann der Zeilenprogramm-Erwerbungsabschnitt 104 aus der Anweisung-Datenbank 103 den Typ der Anweisung, die Ausführungszeit, das Kopf-Flag und das End-Flag entsprechend dem in Schritt S103 erworbenen Zeilenprogramm erwerben.
  • Dann speichert der Zeilenprogramm-Erwerbungsabschnitt 104 das Zeilenprogramm, die Einrichtung, den Typ der Anweisung, die Ausführungszeit, das Kopf-Flag und das End-Flag in der gewichteten Programmdatenbank 105.
  • Der Zeilenprogramm-Erwerbungsabschnitt 104 wiederholt Schritt S103 und Schritt S104 für alle Zeilen des Programms.
  • Als nächstes erwirbt der Block-Generierungsabschnitt 106 das Zeilenprogramm, die Einrichtung, den Typ der Anweisung, die Ausführungszeit, das Kopf-Flag und das End-Flag aus der gewichteten Programmdatenbank 105.
  • Dann generiert der Block-Generierungsabschnitt 106 den Block (Schritt S105).
  • Genauer gesagt gruppiert der Block-Generierungsabschnitt 106 das Zeilenprogramm, dessen Kopf-Flag „1“ ist, mit dem Zeilenprogramm, dessen End-Flag „1“ ist, um einen Block zu generieren.
  • Der Block-Generierungsabschnitt 106 wiederholt den Schritt S105, bis das gesamte Programm in die Vielzahl von Blöcken unterteilt ist.
  • Weiterhin bestimmt der Block-Generierungsabschnitt 106 die Abhängigkeitsbeziehung zwischen den Blöcken (Schritt S106).
  • In der vorliegenden Ausführungsform erfolgt die Extrahierung der Abhängigkeitsbeziehung durch Kennzeichnen eines Inhalts eines Anweisungsworts und eines dem Anweisungswort entsprechenden Einrichtungsnamens. Das Sicherstellen einer einzuhaltenden Ausführungsreihenfolge bei diesem Vorgang erfordert die Einhaltung der Ausführungsreihenfolge der in einer Vielzahl von Blöcken genutzten Einrichtung (im Folgenden als gemeinsame Einrichtung bezeichnet). Der Einfluss auf die Einrichtung variiert in Abhängigkeit von jeder Anweisung, und in der vorliegenden Ausführungsform bestimmt der Block-Generierungsabschnitt 106 den Einfluss auf die Einrichtung wie folgt.
    • - Kontaktanweisung, Vergleichsberechnungsanweisung und dergleichen: Eingabe
    • - Ausgabeanweisung, Bitverarbeitungsanweisung und dergleichen: Ausgabe
  • Hier ist die Eingabe ein Prozess des Lesens der Informationen der Einrichtung, die in der Anweisung genutzt wird, und die Ausgabe ist ein Prozess des Neuschreibens der Informationen der Einrichtung, die in der Anweisung genutzt wird.
  • In der vorliegenden Ausführungsform führt der Block-Generierungsabschnitt 106 das Extrahieren der Abhängigkeitsbeziehung durch, indem er die in dem Programm beschriebenen Einrichtungen in eine für die Eingabe genutzte Einrichtung und eine für die Ausgabe genutzte Einrichtung kategorisiert und die Einrichtungen gekennzeichnet werden.
  • 10 zeigt ein Beispiel für ein Flussdiagramm des Extrahierens der Abhängigkeitsbeziehung in der gemeinsamen Einrichtung.
  • In Schritt S151 liest der Block-Generierungsabschnitt 106 das Zeilenprogramm aus dem Kopf des Blocks.
  • In Schritt S152 bestimmt der Block-Generierungsabschnitt 106, ob oder ob nicht die Einrichtung des in Schritt S151 gelesenen Zeilenprogramms die für die Eingabe genutzte Einrichtung ist. Das heißt, der Block-Generierungsabschnitt 106 bestimmt, ob oder ob nicht das in Schritt S151 gelesene Zeilenprogramm eine Beschreibung von „Kontaktanweisung + Einrichtungenname“ oder eine Beschreibung von „Vergleichsberechnungsanweisung + Einrichtungenname“ enthält.
  • Falls das in Schritt S151 gelesene Zeilenprogramm die Beschreibung von „Kontaktanweisung + Einrichtungenname“ oder die Beschreibung von „Vergleichsberechnungsanweisung + Einrichtungenname“ enthält (JA in Schritt S152), speichert der Block-Generierungsabschnitt 106 in einem spezifizierten Speicherbereich, dass die Einrichtung des in S151 gelesenen Zeilenprogramms die für die Eingabe genutzte Einrichtung ist.
  • Falls andererseits das in Schritt S151 gelesene Zeilenprogramm irgendeines von der Beschreibung von „Kontaktanweisung + Einrichtungenname“ und der Beschreibung von „Vergleichsberechnungsanweisung + Einrichtungenname“ nicht enthält (NEIN in Schritt S152), bestimmt der Block-Generierungsabschnitt 106 in Schritt S154, ob oder ob nicht die Einrichtung des in Schritt S151 gelesenen Zeilenprogramms die für die Ausgabe genutzte Einrichtung ist. Das heißt, der Block-Generierungsabschnitt 106 bestimmt, ob oder ob nicht das in Schritt S151 gelesene Zeilenprogramm eine Beschreibung von „Ausgabeanweisung + Einrichtungenname“ oder eine Beschreibung von „Bitverarbeitungsanweisung + Einrichtungenname“ enthält.
  • Falls das in Schritt S151 gelesene Zeilenprogramm die Beschreibung von „Ausgabeanweisung + Einrichtungenname“ oder die Beschreibung von „Bitverarbeitungsanweisung + Einrichtungenname“ enthält (JA in Schritt S154) enthält, speichert der Block-Generierungsabschnitt 106 in einem gespeicherten Speicherbereich, dass die Einrichtung des in Schritt S151 gelesenen Zeilenprogramms die für die Ausgabe genutzte Einrichtung ist.
  • Falls andererseits das in Schritt S151 gelesene Zeilenprogramm irgendeine der Beschreibung von „Ausgabeanweisung + Einrichtungsname“ und der Beschreibung von „Bitverarbeitungsanweisung + Einrichtungsname“ nicht enthält (NEIN in Schritt S154), bestimmt der Block-Generierungsabschnitt 106 in Schritt S156, ob es oder ob es nicht ein Zeilenprogramm gibt, das noch nicht gelesen wurde.
  • Falls es das Zeilenprogramm, das noch nicht gelesen wurde, gibt (JA in Schritt S156), kehrt der Prozess zu Schritt S151 zurück. Andererseits, wenn alle Zeilenprogramme gelesen wurden (NEIN in Schritt S156), beendet der Block-Generierungsabschnitt 106 den Prozess.
  • 11 zeigt ein Beispiel für das Aussehen der Anweisungen und der Einrichtungennamen für jeden Block.
  • Fokussierung auf eine erste Zeile eines Blocknamens: N1 in 11, LD wird für die Anweisung genutzt und M0 für den Einrichtungennamen genutzt. Da die LD die Kontaktanweisung ist, wird gespeichert, dass die Einrichtung M0 als die Eingabe in einen Block N1 genutzt wird. Durch Durchführen des gleichen Prozesses auf alle Zeilen, können die in 11 in einem unteren Teil dargestellten Extrahierungsergebnisse erhalten werden.
  • 12 stellt ein Verfahren des Extrahierens der Abhängigkeitsbeziehungen zwischen den Blöcken und Beispiele für die Abhängigkeitsbeziehungen dar.
  • Falls es folgende Fälle bezüglich der gemeinsamen Einrichtung gibt, bestimmt der Block-Generierungsabschnitt 106, dass es die Abhängigkeitsbeziehung zwischen den Blöcken gibt.
    • - Ersterer: Eingabe, Letzterer: Ausgabe
    • - Ersterer: Ausgabe, Letzterer: Eingabe
    • - Ersterer: Ausgabe, Letzterer: Ausgabe
  • Es ist zu beachten, dass „Ersterer“ einen Block bedeutet, der in der Ausführungsreihenfolge unter den Blöcken, in denen die gemeinsame Einrichtung genutzt wird, vorgeordnet ist. Ferner bedeutet „Letzterer“ einen Block, der in der Ausführungsreihenfolge unter den Blöcken, in denen die gemeinsame Einrichtung genutzt wird, nachgeordnet ist.
  • Bezüglich einer spezifischen gemeinsamen Einrichtung, wenn zwei miteinander zu vergleichende Blöcke beide Eingaben sind, ist ein Wert der gemeinsamen Einrichtung als der gleiche Wert zu bezeichnen. Daher wird ein Ausführungsergebnis nicht beeinflusst, auch wenn die Ausführungsreihenfolge geändert wird (N1 und N3 in M1 in 12). Andererseits ändert sich in einem Fall der oben genannten drei Muster der Wert der gemeinsamen Einrichtung, auf die sich zu beziehen ist, und daher entsteht ein unbeabsichtigtes Ausführungsergebnis, falls die Ausführungsreihenfolge geändert wird. Bei Fokussierung zum Beispiel auf die gemeinsame Einrichtung M0 in 12, wird die gemeinsame Einrichtung M0 als die Eingabe in den Block N1 und als die Ausgabe in dem Block N3 genutzt. Es besteht also die Abhängigkeitsbeziehung zwischen dem Block N1 und dem Block N3. Durch Durchführen des gleichen Prozesses für alle gängigen Einrichtungen, kann die Abhängigkeitsbeziehungen zwischen den Blöcken in 12 erhalten werden.
  • Ein Datenflussgraph (DFG) kann erhalten werden, indem Blöcke miteinander verbunden werden, die in der Abhängigkeitsbeziehung stehen, basierend auf der Abhängigkeitsbeziehung zwischen den Blöcken.
  • Als nächstes speichert der Block-Generierungsabschnitt 106 die Blockinformationen und die Abhängigkeitsbeziehungsinformationen in der Abhängigkeitsbeziehung-Datenbank 107.
  • Wie oben beschrieben, werden in den Blockinformationen das in dem Block enthaltene Zeilenprogramm, die Einrichtung des in dem Block enthaltenen Zeilenprogramms, der Typ der Anweisung und die Ausführungszeit für jeden Block angegeben. Die Abhängigkeitsbeziehungsinformationen zeigen die Abhängigkeitsbeziehungen zwischen den Blöcken an.
  • Als nächstes generiert der Taskgraph-Generierungsabschnitt 108 einen Taskgraphen, der einen Prozessfluss zwischen den Blöcken anzeigt (Schritt S107).
  • Der Taskgraph-Generierungsabschnitt 108 erwirbt die Blockinformationen, die parallelisierbare-Zahl-Informationen und die Abhängigkeitsbeziehungsinformationen aus der Abhängigkeitsbeziehung-Datenbank 107 und generiert den Taskgraphen durch Bezugnehmen auf die Blockinformationen, die Abhängigkeitsbeziehungsinformationen.
  • Als Nächstes entflechtet der Taskgraph-Entflechtungsabschnitt 109 den in Schritt S107 generierten Taskgraphen (Schritt S108).
  • Das heißt, der Taskgraph-Entflechtungsabschnitt 109 löscht eine nicht notwendige Route in dem Taskgraphen durch Organisieren der Abhängigkeitsbeziehungen zwischen den Blöcken in dem Taskgraphen.
  • Als nächstes bestimmt der Taskgraph-Entflechtungsabschnitt 109 die parallelisierbare Zahl (Schritt S109).
  • Der Taskgraph-Entflechtungsabschnitt 109 legt als die parallelisierbare Zahl, die maximale Anzahl von Verbindungen unter den Anzahlen von Verbindungen zwischen den Blöcken in dem Taskgraphen nach Entflechtung fest. Die Anzahl von Verbindungen ist die Anzahl von nachfolgenden Blöcken, die mit einem vorhergehenden Block verbunden sind.
  • Wenn beispielsweise in dem Taskgraphen nach Entflechtung der vorhergehende Block A und der nachfolgende Block B verbunden sind, der vorhergehende Block A und der nachfolgende Block C verbunden sind und der vorhergehende Block A und der nachfolgende Block D verbunden sind, beträgt die Anzahl von Verbindungen drei. Falls dann die Anzahl von drei Verbindungen die maximale Anzahl von Verbindungen in dem Taskgraphen nach Entflechtung ist, bestimmt der Taskgraph-Entflechtungsabschnitt 109, dass die parallelisierbare Zahl drei ist.
  • Auf diese Weise bestimmt der Taskgraph-Entflechtungsabschnitt 109 die parallelisierbare Zahl unter einer Vielzahl von in dem Programm enthaltenen Blöcken.
  • Der Taskgraph-Entflechtungsabschnitt 109 speichert in der Taskgraph-Datenbank 110 den Taskgraphen nach Entflechtung und die parallelisierbare-Zahl-Informationen, die die parallelisierbare Zahl angeben.
  • Als Nächstes generiert der Zeitplan-Generierungsabschnitt 112 den Parallelisierung-Ausführungszeitplan (Schritt S110).
  • Genauer gesagt, bezieht sich der Zeitplan-Generierungsabschnitt 112 auf den Taskgraphen nach Entflechtung und generiert unter Verwendung eines Zeitplanungsalgorithmus den Parallelisierung-Ausführungszeitplan (Gantt-Diagramm) zu einer Zeit des Ausführens des Programms mit der von einem Programmierer festgelegten Anzahl von CPU-Kernen. Der Zeitplan-Generierungsabschnitt 112 extrahiert zum Beispiel einen kritischen Pfad und generiert den Parallelisierung-Ausführungszeitplan (Gantt-Diagramm) so, dass der kritische Pfad in Rot angezeigt wird.
  • Der Zeitplan-Generierungsabschnitt 112 speichert den generierten Parallelisierung-Ausführungszeitplan (Gantt-Diagramm) in der Zeitplan-Datenbank 113.
  • Als nächstes berechnet der Anzeige-Verarbeitungsabschnitt 114 die Parallelisierung-Ausführungszeit (Schritt S111).
  • Genauer gesagt, erwirbt der Anzeige-Verarbeitungsabschnitt 114 den Zeitplan (Gantt-Diagramm) aus der Zeitplan-Datenbank 113 und erwirbt außerdem die
  • Blockinformationen aus der Abhängigkeitsbeziehung-Datenbank 107. Dann bezieht sich der Anzeige-Verarbeitungsabschnitt 114 auf die Blockinformationen, integriert die Ausführungszeiten der Zeilenprogramme für jeden Block, um die Ausführungszeit für jeden Block zu berechnen. Dann integriert der Anzeige-Verarbeitungsabschnitt 114 die Ausführungszeit jedes Blocks gemäß dem Zeitplan (Gantt-Diagramm) und erhält die Ausführungszeit (Parallelisierung-Ausführungszeit) zu der Zeit des Ausführens des Programms mit der von dem Programmierer festgelegten Anzahl von CPU-Kernen.
  • Als nächstes generiert der Anzeige-Verarbeitungsabschnitt 114 die Parallelisierungsinformationen (Schritt S112).
  • Der Anzeige-Verarbeitungsabschnitt 114 generiert beispielsweise die in 6 dargestellten Parallelisierungsinformationen.
  • Schließlich gibt der Anzeige-Verarbeitungsabschnitt 114 die Parallelisierungsinformationen an die Anzeigeeinrichtung 16 aus (Schritt S113). Dadurch kann sich der Programmierer auf die Parallelisierungsinformationen beziehen.
  • Hier werden die in 6 dargestellten Parallelisierungsinformationen beschrieben.
  • Die Parallelisierungsinformationen in 6 sind mit den Basisinformationen, dem Taskgraphen und dem Parallelisierung-Ausführungszeitplan (Gantt-Diagramm) konfiguriert.
  • Die Basisinformationen geben die Gesamtanzahl von Schritten in dem Programm, die Parallelisierung-Ausführungszeit, die parallelisierbare Zahl und die Einschränkungsbedingungen an.
  • Die Gesamtanzahl von Schritten in dem Programm ist ein Gesamtwert der Anzahl von Schritten, die in den in 5 dargestellten Schrittzahlinformationen angegeben sind. Der Anzeige-Verarbeitungsabschnitt 114 kann die Gesamtanzahl von Schritten erhalten durch Erwerben der Blockinformationen aus der Abhängigkeitsbeziehung-Datenbank 107 und Bezugnehmen auf die in den Blockinformationen enthaltenen Schrittanzahl-Informationen des Zeilenprogramms.
  • Außerdem ist die Parallelisierung-Ausführungszeit ein in Schritt S111 erhaltener Wert.
  • Die parallelisierbare Zahl ist ein in Schritt S107 erhaltener Wert. Der Anzeige-Verarbeitungsabschnitt 114 kann die parallelisierbare Zahl erhalten durch Erwerben der parallelisierbare-Zahl-Informationen aus derTaskgraph-Datenbank 110 und Bezugnehmen auf die parallelisierbare-Zahl-Informationen.
  • Außerdem kann die Anzahl von gemeinsamen Einrichtungen, die gemäß dem Vorgang in 10 extrahiert wurden, in den Parallelisierungsinformationen enthalten sein.
  • Außerdem kann der Anzeige-Verarbeitungsabschnitt 114 die Anzahl von ROM-Nutzungen für jeden CPU-Kern berechnen und die berechnete Anzahl von ROM-Nutzungen jedes CPU-Kerns in die Parallelisierungsinformationen aufnehmen. Der Anzeige-Verarbeitungsabschnitt 114 erhält die Schrittnummer für jeden Block, zum Beispiel durch Bezugnehmen auf die in den Blockinformationen enthaltenen Schrittzahlinformationen des Zeilenprogramms. Dann erhält der Anzeige-Verarbeitungsabschnitt 114 die Anzahl von ROM-Nutzungen jedes CPU-Kerns durch Integrieren für jeden in dem Parallelisierung-Ausführungszeitplan (Gantt-Diagramm) angegebenen CPU-Kern der Schrittanzahl in dem entsprechenden Block.
  • Die Einschränkungsbedingung definiert erforderliche Werte für das Programm. In einem Beispiel in 6 ist „Abtast-Zeit ist gleich oder kleiner 1,6 [µs]“ als ein erforderlicher Wert für die Parallelisierung-Ausführungszeit definiert. Des Weiteren ist „eine ROM-Nutzungsmenge ist gleich oder kleiner als 1000 [SCHRITT]“ als ein erforderlicher Wert für die Anzahl von Schritten (eine Arbeitsspeicher-Nutzungsmenge) definiert. Weiterhin ist „die Anzahl von gemeinsamen Einrichtungen ist gleich oder kleiner als 10 [Einrichtungen]“ als ein erforderlicher Wert für die gemeinsame Einrichtung definiert.
  • Der Anzeige-Verarbeitungsabschnitt 114 erwirbt die Einschränkungsbedingungen aus einer Einschränkungsbedingung-Datenbank 111.
  • Der Taskgraph ist der Taskgraph nach Entflechten, der in Schritt S109 generiert wird.
  • Der Anzeige-Verarbeitungsabschnitt 114 erwirbt den Taskgraphen nach Entflechtung aus der Taskgraph-Datenbank 110.
  • In 6 bezeichnet jedes von „A“ bis „F“ einen Block. Des Weiteren sind „0,2“, „0,4“ und dergleichen, die über den angezeigten Blöcken dargestellt sind, die Ausführungszeit in einer Einheit des Blocks.
  • Außerdem kann, wie in 6 dargestellt, die gemeinsame Einrichtung überlappend auf dem Taskgraphen angezeigt sein. Das Beispiel in 6 zeigt, dass die Einrichtung „M0“ und die Einrichtung „M1“ in dem Block A und in dem Block B gemeinsam genutzt werden.
  • Der Parallelisierung-Ausführungszeitplan (Gantt-Diagramm) wird in Schritt S110 generiert. Der Anzeige-Verarbeitungsabschnitt 114 erwirbt den Parallelisierung-Ausführungszeitplan (Gantt-Diagramm) aus der Zeitplan-Datenbank 113.
  • *** Beschreibung der Wirkung der Ausführungsform ***
  • Wie oben beschrieben, werden in der vorliegenden Ausführungsform die Parallelisierungsinformationen, die mit der Parallelisierung-Ausführungszeit, der parallelisierbaren Zahl, dem Parallelisierung-Ausführungszeitplan und dergleichen konfiguriert sind, angezeigt. Daher kann ein Programmierer durch Bezugnehmen auf die Parallelisierungsinformationen die Parallelisierung-Ausführungszeit und die parallelisierbare Zahl des gerade generierten Programms erkennen. Des Weiteren kann der Programmierer berücksichtigen, ob oder ob nicht die derzeit berücksichtigte Parallelisierung ausreichend ist. Weiterhin kann der Programmierer einen Zustand der Verbesserung der Rechenleistung durch die Parallelisierung und einen Teil in dem Programm, der eine Verbesserung der Rechenleistung beeinflusst, gemäß dem Parallelisierung-Ausführungszeitplan erkennen. Wie oben beschrieben, ist es gemäß der vorliegenden Ausführungsform möglich, für den Programmierer einen Leitfaden zur Verbesserung der Parallelisierung an die bereitzustellen und effiziente Parallelisierung zu realisieren.
  • Es ist zu beachten, dass oben ein Beispiel für die Anwendung des Ablaufs in 4 auf das gesamte Programm beschrieben wurde. Stattdessen kann der Ablauf in 4 nur auf eine Differenz zwischen den Programmen angewendet werden. Wenn zum Beispiel ein Programmierer das Programm modifiziert, extrahiert der Zeilenprogramm-Erwerbungsabschnitt 104 eine Differenz zwischen dem Programm vor der Modifikation und dem Programm nach der Modifikation. Dann können die Prozesse von und nach Schritt S103 in 4 nur auf eine extrahierte Differenz durchgeführt werden.
  • Zweite Ausführungsform.
  • In der vorliegenden Ausführungsform werden hauptsächlich Unterschiede zur ersten Ausführungsform beschrieben.
  • Es ist zu beachten, dass Aspekte, die im Folgenden nicht beschrieben werden, denen in der ersten Ausführungsform gleich sind.
  • *** Beschreibung der Konfiguration ***
  • Eine Systemkonfiguration gemäß der vorliegenden Ausführungsform ist wie in 1 dargestellt.
  • Ein Hardware-Konfigurationsbeispiel einer Informationsverarbeitungsvorrichtung 100 gemäß der vorliegenden Ausführungsform ist wie in 2 dargestellt.
  • Ein funktionales Konfigurationsbeispiel der Informationsverarbeitungsvorrichtung 100 gemäß der vorliegenden Ausführungsform ist wie in 3 dargestellt.
  • *** Beschreibung der Betriebsweise***
  • 7 zeigt ein Betriebsbeispiel des Informationsverarbeitungssystems 100 gemäß der vorliegenden Ausführungsform.
  • Als nächstes wird ein Betriebsbeispiel der Informationsverarbeitungsvorrichtung 100 gemäß der vorliegenden Ausführungsform unter Bezugnahme auf 7 beschrieben.
  • In der vorliegenden Ausführungsform bestimmt der Eingabe-Verarbeitungsabschnitt 101 unter Verwendung der Eingabeeinrichtung 15, ob oder ob nicht ein Programmierer das Programm (Schritt S201).
  • Wenn das Programm gespeichert ist (JA in Schritt S201), werden die in Schritt S102 bis Schritt S110 beschriebenen und in 4 dargestellten Prozesse durchgeführt (Schritt S202).
  • Da die Abläufe von Schritten S102 bis S110 wie in der ersten Ausführungsform beschrieben sind, wird auf eine Beschreibung verzichtet.
  • Nachdem der Schritt S110 durchgeführt wurde und die Parallelisierung-Ausführungszeit berechnet wurde, bestimmt der Anzeige-Verarbeitungsabschnitt 114, ob oder ob nicht die Einschränkungsbedingung erfüllt ist (Schritt S203).
  • Wenn beispielsweise die in den Basisinformationen in 6 beschriebenen Einschränkungsbedingungen genutzt werden, bestimmt der Anzeige-Verarbeitungsabschnitt 114, ob oder ob nicht die Parallelisierung-Ausführungszeit einen erforderlichen Wert („Abtast-Zeit ist gleich oder kürzer als 1,6 [µs]“) einer in den Einschränkungsbedingungen beschriebenen Abtast-Zeit erfüllt. Des Weiteren bestimmt der Anzeige-Verarbeitungsabschnitt 114, ob oder ob nicht die Gesamtanzahl von Schritten in dem Programm einen erforderlichen Wert („die ROM-Nutzungsmenge ist gleich oder kleiner als 1000 [SCHRITT]“) der in den Einschränkungsbedingungen beschriebenen ROM-Nutzungsmenge erfüllt. Weiterhin bestimmt der Anzeige-Verarbeitungsabschnitt 114, ob oder ob nicht die Anzahl von gemeinsamen Einrichtungen einen erforderlichen Wert („die Anzahl von gemeinsamen Einrichtungen ist gleich oder kleiner als 10 [Einrichtungen]“) für die in den Einschränkungsbedingungen beschriebenen gemeinsamen Einrichtungen erfüllt.
  • Wenn alle Einschränkungsbedingungen erfüllt sind (JA in Schritt S203), generiert der Anzeige-Verarbeitungsabschnitt 114 reguläre Parallelisierungsinformationen (Schritt S204).
  • Andererseits, wenn auch nur eine Einschränkungsbedingung nicht erfüllt ist (NEIN in Schritt S203), generiert der Anzeige-Verarbeitungsabschnitt 114 die Parallelisierungsinformationen, die mit einer Hervorhebung ein Element anzeigen, für das die Einschränkungsbedingung nicht erfüllt ist (Schritt S205).
  • Wenn zum Beispiel „Abtast-Zeit ist gleich oder kürzer als 1,6 [µs]“ in 6 nicht erfüllt ist, generiert der Anzeige-Verarbeitungsabschnitt 114 Parallelisierungsinformationen, die in roter Farbe „Parallelisierung-Ausführungszeit“ anzeigen, was ein Element ist, das der Einschränkungsbedingung entspricht.
  • Es ist zu beachten, dass, falls „Abtast-Zeit ist gleich oder kürzer als 1,6 [µs]“ in 6 nicht erfüllt ist, der Anzeige-Verarbeitungsabschnitt 114 beispielsweise die Parallelisierungsinformationen generieren kann, die einen Block, der eine Ursache für das Nichterfülltsein ist, auf dem Parallelisierung-Ausführungszeitplan (Gantt-Diagramm) in Blau anzeigen.
  • Wenn ferner zum Beispiel „die ROM-Nutzungsmenge ist gleich oder kleiner als 1000 [SCHRITT]“ in 6 nicht erfüllt ist, generiert der Anzeige-Verarbeitungsabschnitt 114 die Parallelisierungsinformationen, die die „Gesamtanzahl von Schritten in dem Programm“, was ein Element ist, das der Beschränkungsbedingung entspricht, in Rot anzeigen.
  • Wenn zum Beispiel „die Anzahl von gemeinsamen Einrichtungen ist gleich oder kleiner als 10 [Einrichtungen]“ in 6 nicht erfüllt ist, generiert der Anzeige-Verarbeitungsabschnitt 114 die Parallelisierungsinformationen, die „die Anzahl von gemeinsamen Einrichtungen“, was ein Element ist, das der Einschränkungsbedingung entspricht, in Rot anzeigen.
  • Danach gibt der Anzeige-Verarbeitungsabschnitt 114 die in Schritt S204 oder Schritt S205 generierten Parallelisierungsinformationen an die Anzeigeeinrichtung 160 aus (Schritt S206).
  • Ferner, falls die Einschränkungsbedingung nicht erfüllt ist, kann der Anzeige-Verarbeitungsabschnitt 114 außerdem einen Programmcode eines Blocks, der eine Ursache für das Nichterfülltsein ist, in Blau anzeigen.
  • *** Beschreibung der Wirkung der Ausführungsform ***
  • Gemäß der vorliegenden Ausführungsform, da die Parallelisierungsinformationen mit einer Hervorhebung das Element anzeigen, für das die Einschränkungsbedingung nicht erfüllt ist, ermöglicht dies einem Programmierer, ein Element zu erkennen, das verbessert werden sollte und es ist möglich, eine Zeit zu verkürzen, die für das Debuggen des Programms erforderlich ist.
  • Es ist zu beachten, dass oben ein Beispiel beschrieben wurde, in dem Erfassung des Speicherns des Programms (Schritt S201 in 7) als ein Auslöser für den Prozess dient. Die Erfassung (Schritt S101 in 4) des Drückens der Bestätigungstaste kann jedoch wie bei der ersten Ausführungsform als ein Auslöser für den Prozess dienen.
  • Außerdem können jedes Mal, wenn der Programmierer eine Zeile des Programms generiert, die Prozesse von und nach Schritt S202 in 7 beginnen.
  • Weiterhin können die Prozesse von und nach Schritt S202 in 7 in konstanten Zeitabständen (zum Beispiel eine Minute) beginnen. Weiterhin können die Prozesse von und nach Schritt S202 in 7 dadurch ausgelöst werden, dass der Programmierer eine bestimmte Programmkomponente (Kontaktanweisung oder dergleichen) in das Programm einfügt.
  • Dritte Ausführungsform.
  • In der vorliegenden Ausführungsform werden hauptsächlich Unterschiede zwischen der ersten Ausführungsform und der zweiten Ausführungsform beschrieben.
  • Es ist zu beachten, dass Aspekte, die im Folgenden nicht beschrieben werden, denen in der ersten Ausführungsform oder der zweiten Ausführungsform gleich sind.
  • *** Beschreibung der Konfiguration ***
  • Eine Systemkonfiguration gemäß der vorliegenden Ausführungsform ist wie in 1 dargestellt.
  • Ein Hardware-Konfigurationsbeispiel einer Informationsverarbeitungsvorrichtung 100 gemäß der vorliegenden Ausführungsform ist wie in 2 dargestellt.
  • Ein funktionales Konfigurationsbeispiel der Informationsverarbeitungsvorrichtung 100 gemäß der vorliegenden Ausführungsform ist wie in 3 dargestellt.
  • *** Beschreibung der Betriebsweise***
  • 8 zeigt ein Betriebsbeispiel der Informationsverarbeitungsvorrichtung 100 gemäß der vorliegenden Ausführungsform.
  • Das Betriebsbeispiel der Informationsverarbeitungsvorrichtung 100 gemäß der vorliegenden Ausführungsform wird unter Bezugnahme auf 8 beschrieben.
  • Der Eingabe-Verarbeitungsabschnitt 101 überwacht einen Bereich, in dem die Bestätigungstaste angezeigt wird, auf der Anzeigeeinrichtung 16 und bestimmt, ob oder ob nicht die Bestätigungstaste über die Eingabeeinrichtung 15 gedrückt wird (ob es einen Mausklick oder dergleichen gibt) (Schritt S301).
  • Wenn die Bestätigungstaste gedrückt wurde (JA in Schritt S301), werden die in Schritt S102 bis Schritt S109 beschriebenen und in 4 dargestellten Prozesse durchgeführt (Schritt S302).
  • Da die Prozesse von Schritt S102 bis Schritt S109 wie in der ersten Ausführungsform dargestellt sind, wird auf Beschreibungen verzichtet.
  • Als Nächstes generiert der Zeitplan-Generierungsabschnitt 112 den Parallelisierung-Ausführungszeitplan (Gantt-Diagramm) für jede Anzahl von CPU-Kernen auf Grundlage des Taskgraphen nach Entflechtung, der in Schritt S109 (Schritt S303) erhalten wird.
  • Falls ein Programmierer beispielsweise die Verwendung von Dual-Kernen, Triple-Kernen und Quad-Kernen in Betracht zieht, generiert der Zeitplan-Generierungsabschnitt 112 einen Parallelisierung-Ausführungszeitplan (Gantt-Diagramm) zu einer Zeit des Ausführens des Programms mit den Dual-Kernen; einen Parallelisierung-Ausführungszeitplan (Gantt-Diagramm) zu einer Zeit des Ausführens des Programms mit den Triple-Kernen und einen Parallelisierung-Ausführungszeitplan (Gantt-Diagramm) zu einer Zeit des Ausführens des Programms mit den Quad-Kernen.
  • Als nächstes berechnet der Anzeige-Verarbeitungsabschnitt 114 die Parallelisierung-Ausführungszeit in Schritt S306 (Schritt S304).
  • Als nächstes generiert der Anzeige-Verarbeitungsabschnitt 114 die Parallelisierungsinformationen für jede Kombination (Schritt S305).
  • Die Kombination ist eine Kombination aus der Einschränkungsbedingung und der Anzahl von CPU-Kernen.
  • In der vorliegenden Ausführungsform stellt der Programmierer eine Vielzahl von Mustern in Variationen von Einschränkungsbedingungen ein. Beispielsweise stellt der Programmierer als ein Muster 1 ein Muster ein, in dem jeweils ein erforderlicher Wert für die Abtast-Zeit, die ROM-Nutzungsmenge und die gemeinsame Einrichtung locker ist. Beispielsweise stellt der Programmierer als ein Muster 2 ein Muster ein, in dem ein erforderlicher Wert für die Abtast-Zeit streng ist, aber eine erforderlicher Wert für jedes von der ROM-Nutzungsmenge und der gemeinsamen Einrichtung locker ist. Zudem stellt der Programmierer als ein Muster 3 ein Muster ein, in dem ein erforderlicher Wert für jedes von der Abtast-Zeit, der ROM-Nutzungsmenge und der gemeinsamen Einrichtung streng ist.
  • Wie in 9 dargestellt, generiert der Anzeige-Verarbeitungsabschnitt 114 beispielsweise die Parallelisierungsinformationen mit: Kombinationen aus den Dual-Kernen und jedem von dem Muster 1, dem Muster 2 und dem Muster 3; Kombinationen aus den Triple-Kernen und jedem von dem Muster 1, dem Muster 2 und dem Muster 3; und Kombinationen aus den Quad-Kernen und jedem von dem Muster 1, dem Muster 2 und dem Muster 3.
  • In den in 9 dargestellten Parallelisierungsinformationen ist für jede Kombination aus der Anzahl von Kernen und dem Muster eine Registerkarte vorgesehen. Für eine gewünschte Kombination kann sich der Programmierer durch einen Mausklick auf einer Registerkarte der gewünschten Kombination auf den Parallelisierung-Ausführungszeitplan (Gantt-Diagramm), einen Zustand, ob oder ob nicht die Einschränkungsbedingung erfüllt ist, und dergleichen beziehen. In einem Beispiel in 9 werden die Parallelisierungsinformationen für die Kombination der Dual-Kernen und des Musters 1 angezeigt.
  • Es ist zu beachten, dass, falls die Anzahlen von Kernen übereinstimmen, die Parallelisierung-Ausführungszeitpläne (Gantt-Diagramme) die gleichen sind. Das heißt, die Parallelisierungs-Ausführungszeitpläne (Gantt-Diagramme) sind die gleichen, die in jedem angegeben sind von: den Parallelisierungsinformationen, die der Kombination der Dual-Kerne und dem Muster 1 entsprechen; den Parallelisierungsinformationen, die der Kombination der Dual-Kerne und dem Muster 2 entsprechen; und die Parallelisierungsinformationen, die der Kombination der Dual-Kerne und dem Muster 3 entsprechen.
  • Andererseits können die Beschreibungen der Basisinformationen in jedem Muster unterschiedlich sein. Der Anzeige-Verarbeitungsabschnitt 114 bestimmt für jedes Muster, ob oder ob nicht die Einschränkungsbedingung erfüllt ist. Dann generiert der Anzeige-Verarbeitungsabschnitt 114 die Parallelisierungsinformationen, in denen die Basisinformationen angeben, ob oder ob nicht die Einschränkungsbedingung für jedes Muster erfüllt ist.
  • Zum Beispiel wird bei der Kombination der Dual-Kerne und des Musters 2 angenommen, dass der erforderliche Wert für die Abtast-Zeit nicht erfüllt ist und der erforderliche Wert für jedes von der ROM-Nutzungsmenge und der gemeinsamen Einrichtung erfüllt ist. In diesem Fall wird die „Parallelisierung-Ausführungszeit“, die ein Element ist, das der Einschränkungsbedingung entspricht, zum Beispiel in Rot angezeigt. Weiterhin wird zum Beispiel bei der Kombination der Dual-Kerne und des Musters 3 davon ausgegangen, dass der erforderliche Wert für jedes von der Abtast-Zeit, der ROM-Nutzungsmenge und der gemeinsamen Einrichtung nicht erfüllt ist. In diesem Fall wird zum Beispiel ein Element, das jedem von der Abtast-Zeit, der ROM-Nutzungsmenge und der gemeinsamen Einrichtung entspricht, in Rot angezeigt.
  • Weiterhin zeigen die in 9 dargestellten Parallelisierungsinformationen eine Verbesserungsrate an. Der Anzeige-Verarbeitungsabschnitt 114 berechnet eine Zeit (Nicht-Parallelisierungs-Ausführungszeit), die für die Ausführung des Programms zu einer Zeit des Ausführens des Programms ohne die Parallelisierung (zu einer Zeit des Ausführens des Programms mit einem Einzelkern) erforderlich ist. Dann berechnet der Anzeige-Verarbeitungsabschnitt 114 die Verbesserungsrate als einen Zustand der Differenz zwischen der Zeit (Parallelisierung-Ausführungszeit), die für das Ausführen des Programms zu einer Zeit des Ausführens des Programms gemäß dem Parallelisierung-Ausführungszeitplan erforderlich ist, und der Nicht-Parallelisierung-Ausführungszeit. Das heißt, der Anzeige-Verarbeitungsabschnitt 114 erhält die Verbesserungsrate durch Berechnen „{(Nicht-Parallelisierung-Ausführungszeit/Parallelisierung-Ausführungszeit)-1}*100“. Der Anzeige-Verarbeitungsabschnitt 114 berechnet die Verbesserungsrate für jeden der Dual-Kerne, der Triple-Kerne und der Quad-Kerne und zeigt die Verbesserungsrate in jeder Parallelisierungsinformation an.
  • Schließlich gibt der Anzeige-Verarbeitungsabschnitt 114 die Parallelisierungsinformationen an die Anzeigeeinrichtung 16 aus (Schritt S309).
  • *** Beschreibung der Wirkung der Ausführungsform ***
  • In der vorliegenden Ausführungsform werden die Parallelisierungsinformationen für jede Kombination aus der Anzahl von CPU-Kernen und dem Muster der Einschränkungsbedingungen angezeigt. Daher kann ein Programmierer gemäß der vorliegenden Ausführungsform die Anzahl von Parallelisierung, die die Einschränkungsbedingung erfüllt, frühzeitig erkennen.
  • Auch wenn die Ausführungsformen der vorliegenden Erfindung oben beschrieben wurden, können zwei oder mehr von diesen Ausführungsformen kombiniert und implementiert sein.
  • Alternativ dazu kann eine von diesen Ausführungsform teilweise implementiert sein.
  • Alternativ dazu können zwei oder mehr von diesen Ausführungsformen teilweise kombiniert und implementiert sein.
  • Es ist zu beachten, dass die vorliegende Erfindung nicht auf diese Ausführungsformen beschränkt ist, und dass im Bedarfsfall verschiedene Modifikationen vorgenommen werden können.
  • *** Beschreibung der Hardware-Konfiguration***
  • Abschließend folgen ergänzende Beschreibungen der Hardware-Konfiguration der Informationsverarbeitungsvorrichtung 100.
  • Der Arbeitsspeicher 13 in 3 speichert zusätzlich zu den Programmen, die die Funktionen des Eingabe-Verarbeitungsabschnitts 101, des Zeilenprogramm-Erwerbungsabschnitts 104, des Block-Generierungsabschnitts 106, des Taskgraph-Generierungsabschnitts 108, des Taskgraph-Entflechtungsabschnitts 109, des Zeitplan-Generierungsabschnitts 112 und des Anzeige-Verarbeitungsabschnitts 114 realisieren, auch ein Betriebssystem (OS).
  • Dann wird zumindest ein Teil des OS von dem Prozessor 11 ausgeführt.
  • Während zumindest ein Teil des OS ausgeführt wird, führt der Prozessor 11 die Programme aus, die die Funktionen des Eingabe-Verarbeitungsabschnitts 101, des Zeilenprogramm-Erwerbungsabschnitts 104, des Block-Generierungsabschnitts 106, des Taskgraph-Generierungsabschnitts 108, des Taskgraph-Entflechtungsabschnitts 109, des Zeitplan-Generierungsabschnitts 112 und des Anzeige-Verarbeitungsabschnitts 114 realisieren.
  • Durch den Prozessor 11, der das OS ausführt, werden Task-Verwaltung, Speicher-Verwaltung, Datei-Verwaltung, Kommunikationssteuerung und dergleichen durchgeführt.
  • Ferner wird zumindest eines von Informationen, Daten, einem Signalwert und einem Variablenwert, die ein Verarbeitungsergebnis des Eingabe-Verarbeitungsabschnitts 101, des Zeilenprogramm-Erwerbungsabschnitts 104, des Block-Generierungsabschnitts 106, des Taskgraph-Generierungsabschnitts 108, des Taskgraph-Entflechtungsabschnitts 109, des Zeitplan-Generierungsabschnitts 112 und des Anzeige-Verarbeitungsabschnitts 114 anzeigen, in zumindest einem von dem Arbeitsspeicher 12, dem Massespeicher 13 und einem Register und einem Cache-Speicher in dem Prozessor 11 gespeichert.
  • Ferner können die Programme, die die Funktionen des Eingabe-Verarbeitungsabschnitts 101, des Zeilenprogramm-Erwerbungsabschnitts 104, des Block-Generierungsabschnitts 106, des Taskgraph-Generierungsabschnitts 108, des Taskgraph-Entflechtungsabschnitts 109, des Zeitplan-Generierungsabschnitts 112 und des Anzeige-Verarbeitungsabschnitts 114 realisieren, in einem tragbaren Aufzeichnungsmedium, wie zum Beispiel einer Magnetplatte, einer flexiblen Platte, einer optischen Platte, einer Compact Disk, einer Bluray-Disk (eingetragenes Warenzeichen), einer DVD oder dergleichen, gespeichert sein. Dann kann das tragbare Aufzeichnungsmedium, auf dem die Programme gespeichert sind, die die Funktionen des Eingabe-Verarbeitungsabschnitts 101, des Zeilenprogramm-Erwerbungsabschnitts 104, des Block-Generierungsabschnitts 106, des Taskgraph-Generierungsabschnitts 108, des Taskgraph-Entflechtungsabschnitts 109, des Zeitplan-Generierungsabschnitts 112 und des Anzeige-Verarbeitungsabschnitts 114 realisieren, kommerziell verteilt sein.
  • Weiterhin kann „Abschnitt“ des Eingabe-Verarbeitungsabschnitts 101, des Zeilenprogramm-Erwerbungsabschnitts 104, des Block-Generierungsabschnitts 106, des Taskgraph-Generierungsabschnitts 108, des Taskgraph-Entflechtungsabschnitts 109, des Zeitplan-Generierungsabschnitts 112 und des Anzeige-Verarbeitungsabschnitts 114 als „Schaltung“ oder „Schritt“ oder „Vorgang“ oder „Prozess“ gelesen sein.
  • Ferner kann die Informationsverarbeitungsvorrichtung 100 durch eine Verarbeitungsschaltung realisiert sein. Die Verarbeitungsschaltung ist beispielsweise eine Logik-IC (integrierte Schaltung), eine GA (Gatteranordnung), eine ASIC (anwendungsspezifische integrierte Schaltung) oder eine FPGA (feldprogrammierbare Gatteranordnung).
  • In diesem Fall sind der Eingabe-Verarbeitungsabschnitt 101, der Zeilenprogramm-Erwerbungsabschnitt 104, der Block-Generierungsabschnitt 106, der Taskgraph-Generierungsabschnitt 108, der Taskgraph-Entflechtungsabschnitt 109, der Zeitplan-Generierungsabschnitt 112 und der Anzeige-Verarbeitungsabschnitt 114 jeweils als ein Teil der Verarbeitungsschaltung realisiert.
  • Es ist zu beachten, dass in der vorliegenden Spezifikation ein übergeordnetes Konzept des Prozessors und der Verarbeitungsschaltung als ein „Verarbeitungsschaltkreis“ bezeichnet ist.
  • Das heißt, sowohl der Prozessor als auch der Verarbeitungsschaltkreis sind ein konkretes Beispiel für den „Verarbeitungsschaltkreis“.
  • Bezugszeichenliste
  • 11
    Prozessor,
    12
    Arbeitsspeicher,
    13
    Massespeicher,
    14
    Kommunikationseinrichtung,
    15
    Eingabeeinrichtung,
    16
    Anzeigeeinrichtung,
    100
    Informationsverarbeitungsvorrichtung,
    101
    Eingabe-Verarbeitungsabschnitt,
    102
    Programm-Datenbank,
    103
    Anweisung-Datenbank,
    104
    Zeilenprogramm-Erwerbungsabschnitt,
    105
    gewichtete Programmdatenbank,
    106
    Block-Generierungsabschnitt,
    107
    Abhängigkeitsbeziehung-Datenbank,
    108
    Taskgraph-Generierungsabschnitt,
    109
    Taskgraph-Entflechtungsabschnitt,
    110
    Taskgraph-Datenbank,
    111
    Einschränkungsbedingung-Datenbank,
    112
    Zeitplan-Generierungsabschnitt,
    113
    Zeitplan-Datenbank,
    114
    Anzeige-Verarbeitungsabschnitt,
    200
    Steuerungsausrüstung,
    300
    Fabriklinie,
    301
    Anlage (1),
    302
    Anlage (2),
    303
    Anlage (3),
    304
    Anlage (4),
    305
    Anlage (5),
    401
    Netzwerk,
    402
    Netzwerk.

Claims (13)

  1. Informationsverarbeitungsvorrichtung (100), umfassend: einen Bestimmungsabschnitt (109), um als eine parallelisierbare Zahl die Anzahl von Parallelisierung von Prozessen, die zu einer Zeit des Ausführens eines aus einer Vielzahl von Blöcken zusammengestellten Programms möglich ist, zu bestimmen, einen Zeitplan-Generierungsabschnitt (112), um als einen Parallelisierung-Ausführungszeitplan einen Ausführungszeitplan des Programms zu der Zeit des Ausführens des Programms zu generieren; einen Berechnungsabschnitt (114), um eine Parallelisierung-Ausführungszeit, die eine Zeit ist, die zum Ausführen des Programms zu einer Zeit des Ausführens des Programms gemäß dem Parallelisierung-Ausführungszeitplan erforderlich ist, zu berechnen; und einen Informationserzeugungsabschnitt (114), um Parallelisierungsinformationen, angebend die parallelisierbare Zahl, den Parallelisierung-Ausführungszeitplan, die Parallelisierung-Ausführungszeit, die Anzahl von gemeinsamen Variablen, die die Anzahl von Variablen ist, die in zwei oder mehr Blöcken unter der Vielzahl von Blöcken gemeinsam genutzt werden, und eine Speichernutzungsmenge zu der Zeit des Ausführens des Programms zu generieren und die generierten Parallelisierungsinformationen auszugeben.
  2. Informationsverarbeitungsvorrichtung nach Anspruch 1, ferner umfassend: einen Taskgraph-Generierungsabschnitt (108), um auf Grundlage einer Abhängigkeitsbeziehung zwischen Blöcken unter der Vielzahl von Blöcken, die das Programm bilden, einen Taskgraphen der Vielzahl von Blöcken zu generieren, und wobei der Bestimmungsabschnitt die parallelisierbare Zahl durch Analysieren des Taskgraphen bestimmt.
  3. Informationsverarbeitungsvorrichtung nach Anspruch 2, wobei der Bestimmungsabschnitt Entflechtung des Taskgraphen durchführt und die parallelisierbare Zahl bestimmt gemäß der maximalen Anzahl von Verbindungen unter den Anzahlen von Verbindungen zwischen den Blöcken in einem Taskgraphen nach der Entflechtung.
  4. Informationsverarbeitungsvorrichtung nach Anspruch 3, wobei der Informationserzeugungsabschnitt die Parallelisierungsinformationen, angebend den Taskgraphen nach der Entflechtung, generiert.
  5. Informationsverarbeitungsvorrichtung nach Anspruch 1, wobei der Informationserzeugungsabschnitt die Parallelisierungsinformationen, angebend einen erforderlichen Wert für die Parallelisierung-Ausführungszeit, generiert.
  6. Informationsverarbeitungsvorrichtung nach Anspruch 5, wobei der Informationserzeugungsabschnitt die Parallelisierungsinformationen, angebend, ob oder ob nicht die Parallelisierung-Ausführungszeit den erforderlichen Wert erfüllt, generiert.
  7. Informationsverarbeitungsvorrichtung nach Anspruch 1, wobei der Informationserzeugungsabschnitt die Parallelisierungsinformationen anzeigend, ob oder ob nicht die Anzahl von gemeinsamen Variablen einen erforderlichen Wert für die Anzahl von gemeinsamen Variablen erfüllt, und anzeigend, ob oder ob nicht die Speichernutzungsmenge einen erforderlichen Wert für die Speichernutzungsmenge erfüllt, generiert.
  8. Informationsverarbeitungsvorrichtung nach Anspruch 1, wobei der Zeitplan-Generierungsabschnitt den Parallelisierung-Ausführungszeitplan für jede Anzahl von CPU-(Central-Processing-Unit)-Kernen generiert, die die Anzahl von CPU-Kernen ist, die das Programm ausführen, und wobei der Berechnungsabschnitt für jede Anzahl von CPU-Kernen eine Parallelisierung-Ausführungszeit zu einer Zeit des Ausführens des Programms gemäß einem entsprechenden Parallelisierung-Ausführungszeitplan berechnet, und wobei der Informationserzeugungsabschnitt für die Anzahl von CPU-Kernen die Parallelisierungsinformationen, angebend den Parallelisierung-Ausführungszeitplan und die Parallelisierung-Ausführungszeit, generiert.
  9. Informationsverarbeitungsvorrichtung nach Anspruch 1, wobei der Informationserzeugungsabschnitt die Parallelisierungsinformation, angebend eine Vielzahl von erforderlichen Werten für die Parallelisierung-Ausführungszeit und angebend, ob oder ob nicht die Parallelisierung-Ausführungszeit jeden der erforderlichen Werte erfüllt, generiert.
  10. Informationsverarbeitungsvorrichtung nach Anspruch 1, wobei der Informationserzeugungsabschnitt die Parallelisierungsinformationen, angebend eine Vielzahl von erforderlichen Werten für die Anzahl gemeinsamer Variablen, angebend eine Vielzahl von erforderlichen Werten für eine Speichernutzungsmenge zu der Zeit des Ausführens des Programms, und angebend, ob oder ob nicht die Anzahl gemeinsamer Variablen jeden der erforderlichen Werte erfüllt, und ob oder ob nicht die Speichernutzungsmenge jeden der erforderlichen Werte erfüllt.
  11. Informationsverarbeitungsvorrichtung nach Anspruch 1, wobei der Berechnungsabschnitt eine Nicht-Parallelisierung-Ausführungszeit, die eine Zeit ist, die zum Ausführen des Programms erforderlich ist, zu einer Zeit des Ausführens des Programms ohne Parallelisierung der Prozesse berechnet, und wobei der Informationserzeugungsabschnitt die Parallelisierungsinformationen, angebend einen Zustand von Differenz zwischen der Parallelisierung-Ausführungszeit und der Nicht-Parallelisierung-Ausführungszeit, generiert.
  12. Informationsverarbeitungsverfahren, umfassend: Bestimmen, durch einen Computer, als eine parallelisierbare Zahl, der Anzahl von Parallelisierung von Prozessen, die zu einer Zeit des Ausführens eines aus einer Vielzahl von Blöcken zusammengestellten Programms möglich ist, Generieren, durch den Computer, als einen Parallelisierung-Ausführungszeitplan, eines Ausführungszeitplans des Programms zu der Zeit des Ausführens des Programms; Berechnen, durch den Computer, einer Parallelisierung-Ausführungszeit, die eine Zeit ist, die zum Ausführen des Programms erforderlich ist, zu einer Zeit des Ausführens des Programms gemäß dem Parallelisierung-Ausführungszeitplan; und Generieren, durch den Computer, von Parallelisierungsinformationen, angebend die parallelisierbare Zahl, den Parallelisierung-Ausführungszeitplan, die Parallelisierung-Ausführungszeit, die Anzahl von gemeinsamen Variablen, die die Anzahl von Variablen ist, die in zwei oder mehr Blöcken unter der Vielzahl von Blöcken gemeinsam genutzt werden, und eine Speichernutzungsmenge zu der Zeit des Ausführens des Programms, und Ausgeben der generierten Parallelisierungsinformationen.
  13. Informationsverarbeitungsprogramm, das einen Computer veranlasst, auszuführen: einen Bestimmungsprozess des Bestimmens als eine parallelisierbare Zahl, der Anzahl von Parallelisierung von Prozessen, die zu einer Zeit des Ausführens eines aus einer Vielzahl von Blöcken zusammengestellten Programms möglich ist, einen Zeitplangenerierungsprozess des Generierens als einen Parallelisierung-Ausführungszeitplan eines Ausführungszeitplans des Programms zu der Zeit des Ausführens des Programms; einen Berechnungsprozess des Berechnens einer Parallelisierung-Ausführungszeit, die eine Zeit ist, die zum Ausführen des Programms erforderlich ist, zu einer Zeit des Ausführens des Programms gemäß dem Parallelisierung-Ausführungszeitplan; und einen Informationserzeugungsprozess des Erzeugens von Parallelisierungsinformationen, angebend die parallelisierbare Zahl, den Parallelisierung-Ausführungszeitplan, die Parallelisierung-Ausführungszeit, die Anzahl von gemeinsamen Variablen, die die Anzahl von Variablen ist, die in zwei oder mehr Blöcken unter der Vielzahl von Blöcken gemeinsam genutzt werden, und eine Speichernutzungsmenge zu der Zeit des Ausführens des Programms, und Ausgeben der generierten Parallelisierungsinformationen.
DE112019006739.7T 2019-02-26 2019-02-26 Informationsverarbeitungsvorrichtung, informationsverarbeitungsverfahren und informationsverarbeitungsprogramm Active DE112019006739B4 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/007312 WO2020174581A1 (ja) 2019-02-26 2019-02-26 情報処理装置、情報処理方法及び情報処理プログラム

Publications (2)

Publication Number Publication Date
DE112019006739T5 DE112019006739T5 (de) 2021-11-04
DE112019006739B4 true DE112019006739B4 (de) 2023-04-06

Family

ID=72239160

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019006739.7T Active DE112019006739B4 (de) 2019-02-26 2019-02-26 Informationsverarbeitungsvorrichtung, informationsverarbeitungsverfahren und informationsverarbeitungsprogramm

Country Status (7)

Country Link
US (1) US20210333998A1 (de)
JP (1) JP6890738B2 (de)
KR (1) KR102329368B1 (de)
CN (1) CN113439256A (de)
DE (1) DE112019006739B4 (de)
TW (1) TW202032369A (de)
WO (1) WO2020174581A1 (de)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020095666A1 (en) 2000-10-04 2002-07-18 International Business Machines Corporation Program optimization method, and compiler using the same
US20050229090A1 (en) 2004-04-05 2005-10-13 Ba-Zhong Shen LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
US20070038987A1 (en) 2005-08-10 2007-02-15 Moriyoshi Ohara Preprocessor to improve the performance of message-passing-based parallel programs on virtualized multi-core processors
JP4082706B2 (ja) 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
US20090138862A1 (en) 2007-11-22 2009-05-28 Kabushiki Kaisha Toshiba Program parallelization supporting apparatus and program parallelization supporting method
DE102016201612A1 (de) 2015-02-05 2016-08-11 Denso Corporation Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Vorrichtung

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05257709A (ja) * 1992-03-16 1993-10-08 Hitachi Ltd 並列化判別方法およびそれを用いた並列化支援方法
EP1763748A1 (de) * 2004-05-27 2007-03-21 Koninklijke Philips Electronics N.V. Signalverarbeitungsvorrichtung
CN1300699C (zh) * 2004-09-23 2007-02-14 上海交通大学 并行程序可视化调试方法
CN102197376B (zh) * 2008-10-24 2014-01-15 国际商业机器公司 源代码处理方法、系统及程序
WO2012086148A1 (ja) * 2010-12-21 2012-06-28 パナソニック株式会社 コンパイル装置、コンパイルプログラム及びループ並列化方法
US9830164B2 (en) * 2013-01-29 2017-11-28 Advanced Micro Devices, Inc. Hardware and software solutions to divergent branches in a parallel pipeline
US20140282572A1 (en) * 2013-03-14 2014-09-18 Samsung Electronics Co., Ltd. Task scheduling with precedence relationships in multicore systems
JP6212823B2 (ja) * 2013-11-29 2017-10-18 三菱日立パワーシステムズ株式会社 並列化支援装置、実行装置、制御システム、並列化支援方法及びプログラム
JP6303626B2 (ja) * 2014-03-07 2018-04-04 富士通株式会社 処理プログラム、処理装置および処理方法
US10374970B2 (en) * 2017-02-01 2019-08-06 Microsoft Technology Licensing, Llc Deploying a cloud service with capacity reservation followed by activation
US10719902B2 (en) * 2017-04-17 2020-07-21 Intel Corporation Thread serialization, distributed parallel programming, and runtime extensions of parallel computing platform
US10325022B1 (en) * 2018-03-13 2019-06-18 Appian Corporation Automated expression parallelization
US10768904B2 (en) * 2018-10-26 2020-09-08 Fuji Xerox Co., Ltd. System and method for a computational notebook interface
US20200184366A1 (en) * 2018-12-06 2020-06-11 Fujitsu Limited Scheduling task graph operations

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020095666A1 (en) 2000-10-04 2002-07-18 International Business Machines Corporation Program optimization method, and compiler using the same
US20050229090A1 (en) 2004-04-05 2005-10-13 Ba-Zhong Shen LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
JP4082706B2 (ja) 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
US20070038987A1 (en) 2005-08-10 2007-02-15 Moriyoshi Ohara Preprocessor to improve the performance of message-passing-based parallel programs on virtualized multi-core processors
US20090138862A1 (en) 2007-11-22 2009-05-28 Kabushiki Kaisha Toshiba Program parallelization supporting apparatus and program parallelization supporting method
DE102016201612A1 (de) 2015-02-05 2016-08-11 Denso Corporation Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Vorrichtung

Also Published As

Publication number Publication date
KR20210106005A (ko) 2021-08-27
JPWO2020174581A1 (ja) 2021-09-13
DE112019006739T5 (de) 2021-11-04
WO2020174581A1 (ja) 2020-09-03
TW202032369A (zh) 2020-09-01
JP6890738B2 (ja) 2021-06-18
US20210333998A1 (en) 2021-10-28
CN113439256A (zh) 2021-09-24
KR102329368B1 (ko) 2021-11-19

Similar Documents

Publication Publication Date Title
DE69931004T2 (de) Verfahren und Vorrichtung zur Datenverarbeitung
DE112017006164T5 (de) Differenzvergleich von ausführbaren Datenflussdiagrammen
CN111813661B (zh) 一种全局业务数据驱动自动测试方法、装置、设备和介质
DE102018111892B4 (de) Betriebsüberwachungsvorrichtung und Steuerprogramm dafür
DE112011102727T5 (de) Steuerprogramm-Erzeugungsvorrichtung, Steuerprogramm-Erzeugungsprogramm und Steuerprogramm-Erzeugungsverfahren
DE102008027605A1 (de) System und Verfahren zur rechnerbasierten Analyse großer Datenmengen
DE10039538A1 (de) Vorrichtung und Methode zum Analysieren der Leistung eines Computerprogramms
EP2414903A1 (de) Vorrichtung und verfahren zur erstellung eines prozessmodells
DE60303413T2 (de) Verfahren und computersystem zum reduzieren von ausführungszeiten bei der materialbedarfsplanung
DE102016223939A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung
DE102020115571A1 (de) Digitales Doppelecosystem gekoppelt mit Additivherstellung wie konstruiert, wie hergestellt, wie getestet, wie betrieben, wie geprüft und wie gewartet
DE19581754B4 (de) System und Verfahren zum bedingten Kompilieren einer Software-Kompiliereinheit
DE102010004192A1 (de) Verfahren zur Konstruktion industrieller Anlagen
DE112019002778T5 (de) Simulationsvorrichtung, simulationsverfahren und elektronische steuereinheitsvorrichtung
DE112019006739B4 (de) Informationsverarbeitungsvorrichtung, informationsverarbeitungsverfahren und informationsverarbeitungsprogramm
DE102016204970A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung
DE112018002316T5 (de) Codeabdeckungsverfolgung für ein mikrocontroller-programm
DE102017005608A1 (de) Numerische Steuerung und Variablen-Ermittlungsverfahren
DE112020003659T5 (de) Verfahren zur diagnose von anomalien, vorrichtung zur diagnose von anomalienund programm zur diagnose von anomalien
DE112012004300T5 (de) Verfahren, Programm und System zum Erstellen eines Arbeitsablaufs von einer Arbeitsspezifikation
DE102010053701A1 (de) Beziehungsmodellierung für Leistungsanalyse von Mehrkernprozessoren
DE102022111835A1 (de) Verfahren und system zum bestimmen einer vorhergesagten vorgangszeit für einen fertigungsvorgang unter verwendung eines zeitvorhersagemodells
EP3385834A1 (de) Hardwaretreiber für effiziente arithmetik
Maier et al. Performance and impact of dynamic data placement in ATLAS
DE112019006890T5 (de) Informationsverarbeitungsvorrichtung, Computer, Computersystem, Informationsverarbeitungsverfahren und Informationsverarbeitungsprogramm

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final