DE112017007772T5 - Job-verarbeitung in cloud-umgebungen mit quanten-computing-fähigkeit - Google Patents

Job-verarbeitung in cloud-umgebungen mit quanten-computing-fähigkeit Download PDF

Info

Publication number
DE112017007772T5
DE112017007772T5 DE112017007772.9T DE112017007772T DE112017007772T5 DE 112017007772 T5 DE112017007772 T5 DE 112017007772T5 DE 112017007772 T DE112017007772 T DE 112017007772T DE 112017007772 T5 DE112017007772 T5 DE 112017007772T5
Authority
DE
Germany
Prior art keywords
quantum
instruction
result
processor
qce
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
DE112017007772.9T
Other languages
English (en)
Inventor
Andrew Cross
Lev Samuel Bishop
Ismael Faro Sertage
Jay Gambetta
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112017007772T5 publication Critical patent/DE112017007772T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Computational Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

Eine Kompatibilität zwischen einer Konfiguration eines Quantenprozessors (q-Prozessor) eines Quanten-Cloud-Rechenknotens (Quantum Cloud Compute Node, QCCN) in einer Quanten-Cloud-Umgebung (Quantum Cloud Environment, QCE) und einer Operation wird festgestellt, die in einer ersten Anweisung in einem Abschnitt (q-Abschnitt) eines Jobs angefordert wird, der an die QCE übergeben wird, wobei die QCE den QCCN und einen herkömmlichen Rechenknoten (Conventional Compute Node, CCN) enthält, wobei der CCN einen herkömmlichen Prozessor enthält, der für binäre Berechnungen konfiguriert ist. Als Reaktion auf das Feststellen wird eine Quantenanweisung (q-Anweisung) erzeugt, die der ersten Anweisung entspricht. Die q-Anweisung wird unter Verwendung des q-Prozessors des QCCN ausgeführt, um ein Quantenausgabesignal (q-Signal) zu erzeugen. Das q-Signal wird in ein entsprechendes Quanten-Computing-Resultat (q-Resultat) umgewandelt. Ein endgültiges Resultat wird an ein Übergabesystem zurückgegeben, das den Job übergeben hat, wobei das endgültige Resultat das q-Resultat aufweist.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung bezieht sich im Allgemeinen auf ein Verfahren, System und Computerprogrammprodukt zum Verwenden von Quanten-Computing-Systemen. Im Besonderen bezieht sich die vorliegende Erfindung auf ein Verfahren, System und Computerprogrammprodukt zur Job-Verarbeitung in Cloud-Umgebungen mit Quanten-Computing-Fähigkeit.
  • HINTERGRUND
  • Im Folgenden zeigt ein Präfix „Q“ in einem Wort oder einer Phrase an, dass sich das Wort oder die Phrase auf einen Quanten-Computing-Kontext bezieht, sofern dies bei der Verwendung nicht ausdrücklich anderweitig angegeben wird.
  • Die Natur - einschließlich der Moleküle - folgt den Gesetzen der Quantenmechanik, ein Teilbereich der Physik, der untersucht, wie die physische Welt auf der grundlegendsten Ebene funktioniert. Auf dieser Ebene verhalten sich Teilchen auf ungewöhnliche Art und Weise, indem sie zur gleichen Zeit mehrere Zustände aufweisen und mit anderen, sehr weit entfernten Teilchen interagieren. Quanten-Computing nutzt diese Quantenphänomene, um Informationen zu verarbeiten.
  • Die heute gebräuchlichen Computer sind als klassische Computer bekannt (hier auch als „herkömmliche“ Computer oder herkömmliche Knoten (Conventional Nodes) bzw. „CN“ bezeichnet). Ein herkömmlicher Computer verwendet einen mittels Halbleitertechnologie hergestellten Prozessor, einen Halbleiter-Arbeitsspeicher und eine magnetische oder Halbleiter-Speichereinheit in einer Architektur, die als Von-Neumann-Architektur bekannt ist. Im Besonderen sind die Prozessoren bei herkömmlichen Computern binäre Prozessoren, d.h. sie verarbeiten binäre Daten, die als 1 und 0 dargestellt werden.
  • Ein Quantenprozessor (q-Prozessor) nutzt die ungewöhnliche Natur von verschränkten Qubit-Einheiten (hier zusammenfassend als „Qubit“, Plural „Qubits“, bezeichnet), um Rechenaufgaben durchzuführen. In den konkreten Gebieten, auf die sich die Quantenmechanik bezieht, können Materieteilchen in mehreren Zuständen existieren, z.B. in einem „Ein“-Zustand, einem „Aus“-Zustand und zur gleichen Zeit in einem „Ein“- und „Aus“-Zustand.
  • Während die binäre Datenverarbeitung unter Verwendung von Halbleiterprozessoren auf den „Ein“- und „Aus“-Zustand beschränkt ist (entsprechend 1 und 0 in Binärcode), macht sich ein Quantenprozessor diese Quantenzustände von Materie zur Ausgabe von Signalen zunutze, die bei der Datenverarbeitung nutzbar sind.
  • Herkömmliche Computer codieren Informationen in Bits. Jedes Bit kann den Wert 1 oder 0 haben. Die Einsen und Nullen dienen als Ein-/Aus-Schalter, die letztlich Computerfunktionen bewirken. Quantencomputer beruhen hingegen auf Qubits, die gemäß zweier Schlüsselprinzipien der Quantenphysik agieren: Superposition und Verschränkung Superposition bedeutet, dass jedes Qubit zur gleichen Zeit sowohl für eine 1 als auch für eine 0 stehen kann. Verschränkung bedeutet, dass Qubits in einer Superposition auf eine nicht klassische Art und Weise miteinander korreliert werden können, d.h. der Zustand eines Qubits (ob 1 oder 0) kann von dem Zustand eines weiteren Qubits abhängig sein, und dass sich über die beiden Qubits mehr Informationen feststellen lassen, wenn sie verschränkt sind, als wenn sie separat behandelt werden. Vermittels dieser beiden Prinzipien agieren Qubits als ausgefeiltere Informationsprozessoren, wodurch Quantencomputer auf eine Art und Weise funktionieren können, die ihnen die Lösung schwieriger Probleme erlaubt, die unter Verwendung herkömmlicher Computer nicht zu meistern sind. Die IBM Corporation hat einen Quantenprozessor erfolgreich konstruiert und dessen Funktionsfähigkeit nachgewiesen (IBM ist eine eingetragene Marke der International Business Machines Corporation in den Vereinigten Staaten und in anderen Ländern).
  • Die veranschaulichenden Ausführungsformen gehen davon aus, dass die Verwendung eines Quantencomputers oder Quanten-Rechenknotens (Quantum Compute Node) („QC“ bzw. „QCN“) völlig anders gelagert ist als die Verwendung eines CN. Zum gegenwärtigen Zeitpunkt bestehen Cloud-Computing-Umgebungen vollständig aus CNs, und verschiedene Methodiken zum Betreiben solcher Cloud-Umgebungen sind hinlänglich bekannt. Allerdings gehen die veranschaulichenden Ausführungsformen davon aus, dass ein Betreiben einer Cloud-Umgebung, die mindestens einen QCN enthält, ein grundsätzliches anderes Problem darstellt, das sich nicht lösen lässt, indem die Architektur oder Methodik eines Betreibens einer ausschließlich aus Maschinen des CN-Typs bestehenden Cloud verwendet wird.
  • QCNs eignen sich nachweisbar für die Verwendung zu Datenverarbeitungszwecken. Eine QCNs enthaltende Cloud-Umgebung lässt sich nicht ohne einen q-spezifischen Mechanismus betreiben, um Jobs an QCNs oder - bei hybriden Clouds - an Kombinationen von QCNs und CNs zu übertragen. Die veranschaulichenden Ausführungsformen gehen somit davon aus, dass ein System benötigt wird, das Abschnitte von eingehenden Datenverarbeitungs-Jobs für ein q-Computing abwandeln, eine Job-Aufteilung auf QCNs und CNs verwalten, auf geeignete Weise q-Signale von QCNs in q-Resultate abwandeln und die q-Resultate mit Resultaten kombinieren kann, die von CNs erhalten werden, um ein Resultat zu erzeugen, das als Reaktion auf den Job akzeptabel ist.
  • In der Technik besteht somit ein Bedarf, das oben genannte Problem zu lösen.
  • KURZDARSTELLUNG
  • Unter einem ersten Aspekt betrachtet, stellt die vorliegende Erfindung ein Verfahren für eine Quanten-Cloud-Umgebung (Quantum Cloud Environment, QCE) bereit, aufweisend: ein Feststellen einer Kompatibilität zwischen einer Konfiguration eines Quantenprozessors (q-Prozessor) eines Quanten-Cloud-Rechenknotens (Quantum Cloud Compute Node, QCCN) in einer Quanten-Cloud-Umgebung (QCE) und einer Operation, die in einer ersten Anweisung in einem Abschnitt (q-Abschnitt) eines Jobs angefordert wird, der an die QCE übergeben wird, wobei die QCE den QCCN und einen herkömmlichen Rechenknoten (Conventional Compute Node, CCN) aufweist, wobei der CCN einen herkömmlichen Prozessor aufweist, der für binäre Berechnungen konfiguriert ist; als Reaktion auf das Feststellen ein Erzeugen einer Quantenanweisung (q-Anweisung), die der ersten Anweisung entspricht; ein Ausführen der q-Anweisung unter Verwendung des q-Prozessors des QCCN, um ein Quantenausgabesignal (q-Signal) zu erzeugen; ein Umwandeln des q-Signals in ein entsprechendes Quanten-Computing-Resultat (q-Resultat); und ein Zurückgeben eines endgültigen Resultats an ein Übergabesystem, das den Job übergeben hat, wobei das endgültige Resultat das q-Resultat aufweist.
  • Unter einem weiteren Aspekt betrachtet, stellt die vorliegende Erfindung eine Quanten-Cloud-Umgebung (QCE) bereit, aufweisend: einen Quanten-Cloud-Rechenknoten (QCCN), der einen Quantenprozessor (q-Prozessor) aufweist; einen herkömmlichen Rechenknoten (CNN), der einen herkömmlichen Prozessor aufweist, der für binäre Berechnungen konfiguriert ist; und einen durch einen Computer verwendbaren Programmcode, der bei Ausführung unter Verwendung des herkömmlichen Prozessors Funktionen verursacht, aufweisend: ein Feststellen einer Kompatibilität zwischen einer Konfiguration des q-Prozessors des QCCN und einer Operation, die in einer ersten Anweisung in einem Abschnitt (q-Abschnitt) eines Jobs angefordert wird, der an die QCE übergeben wird, wobei die QCE den QCCN und einen herkömmlichen Rechenknoten (CNN) aufweist; als Reaktion auf das Feststellen ein Erzeugen einer Quantenanweisung (q-Anweisung), die der ersten Anweisung entspricht; ein Ausführen der q-Anweisung unter Verwendung des q-Prozessors des QCCN, um ein Quantenausgabesignal (q-Signal) zu erzeugen; ein Umwandeln des q-Signals in ein entsprechendes Quanten-Computing-Resultat (q-Resultat); und ein Zurückgeben eines endgültigen Resultats an ein Übergabesystem, das den Job übergeben hat, wobei das endgültige Resultat das q-Resultat aufweist.
  • Unter einem weiteren Aspekt betrachtet, stellt die vorliegende Erfindung ein Computerprogrammprodukt für eine Quanten-Cloud-Umgebung (QCE) bereit, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, das durch eine Verarbeitungsschaltung lesbar ist und Anweisungen zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren zum Durchführen der Schritte der Erfindung durchzuführen.
  • Unter einem weiteren Aspekt betrachtet, stellt die vorliegende Erfindung ein Computerprogramm bereit, das auf einem durch einen Computer lesbaren Medium gespeichert und in den internen Arbeitsspeicher eines digitalen Computers ladbar ist, das Software-Codeteile aufweist, um bei Ausführung des Programms auf einem Computer die Schritte der Erfindung durchzuführen.
  • Die veranschaulichenden Ausführungsformen stellen ein Verfahren, System und Computerprogrammprodukt bereit. Eine Ausführungsform enthält ein Verfahren, das eine Kompatibilität zwischen einer Konfiguration eines Quantenprozessors (q-Prozessor) eines Quanten-Cloud-Rechenknotens (QCCN) in einer Quanten-Cloud-Umgebung (QCE) und einer Operation feststellt, die in einer ersten Anweisung in einem Abschnitt (q-Abschnitt) eines Jobs angefordert wird, der an die QCE übergeben wird, wobei die QCE den QCCN und einen herkömmlichen Rechenknoten (CCN) aufweist, wobei der CCN einen herkömmlichen Prozessor aufweist, der für binäre Berechnungen konfiguriert ist. Als Reaktion auf das Feststellen erzeugt die Ausführungsform eine Quantenanweisung (q-Anweisung), die der ersten Anweisung entspricht. Die Ausführungsform führt die q-Anweisung unter Verwendung des q-Prozessors des QCCN aus, um ein Quantenausgabesignal (q-Signal) zu erzeugen. Die Ausführungsform wandelt das q-Signal in ein entsprechendes Quanten-Computing-Resultat (q-Resultat) um. Die Ausführungsform gibt ein endgültiges Resultat an ein Übergabesystem zurück, das den Job übergeben hat, wobei das endgültige Resultat das q-Resultat aufweist. Somit verwaltet eine Ausführungsform auf geeignete Weise die Verwendung von Quanten-Computing-Ressourcen in einer QCE, in der Jobs gemischter Datenverarbeitungsanforderungen übergeben werden können, indem eine Job-Eignung für ein Quanten-Computing ermittelt und das Quanten-Computing nur für diejenigen Abschnitte veranlasst wird, die einem oder mehreren Merkmalen eines konfigurierten Quantenprozessors entsprechen.
  • Eine weitere Ausführungsform korrigiert des Weiteren unter Verwendung von dem q-Prozessor zugehöriger Hardware einen Fehler in dem q-Signal, um ein korrigiertes q-Signal zu erzeugen. Somit betreibt eine Ausführungsform die Quanten-Computing-Ressource in der QCE, um die Zuverlässigkeit und Stabilität des durch den konfigurierten Quantenprozessor durchgeführten Quanten-Computing zu verbessern.
  • Eine weitere Ausführungsform demoduliert des Weiteren das q-Signal. Die Ausführungsform digitalisiert das q-Signal. Die Ausführungsform gewinnt ein anfängliches Quanten-Computing-Resultat (anfängliches q-Resultat) aus dem digitalisierten q-Signal. Somit stellt eine Ausführungsform ein Verfahren zum zuverlässigen Betreiben der Quanten-Computing-Ressource in der QCE bereit, um das Quanten-Computing durchzuführen und ein q-Resultat zu erhalten.
  • Eine weitere Ausführungsform führt des Weiteren ein Nachverarbeiten des anfänglichen q-Resultats durch, wobei das Nachverarbeiten ein Anwenden eines statistischen Modells auf das anfängliche q-Resultat aufweist, um ein neues q-Resultat zu erhalten, und wobei das neue q-Resultat mit einer über einem Schwellenwert liegenden Wahrscheinlichkeit ein durch den q-Prozessor berechnetes korrektes Resultat ist. Somit betreibt eine Ausführungsform die Quanten-Computing-Ressource in der QCE, um die Zuverlässigkeit und Stabilität des durch den konfigurierten q-Prozessor durchgeführten Quanten-Computing zu verbessern.
  • Bei einer weiteren Ausführungsform wird die q-Anweisung unter Verwendung einer Quantenanweisungssprache codiert. Somit stellt eine Ausführungsform eine bestimmte Art und Weise bereit, wie eine Anweisung unter Verwendung des q-Prozessors ausgeführt werden kann.
  • Die Quantenanweisungssprache weist bei einer weiteren Ausführungsform die Quantum Assembly Language (QASM) auf. Somit stellt eine Ausführungsform eine bestimmte Art und Weise bereit, wie eine Anweisung unter Verwendung des q-Prozessors ausgeführt werden kann.
  • Eine weitere Ausführungsform erzeugt des Weiteren als Reaktion auf ein Ermitteln, dass eine zweite Anweisung in dem q-Abschnitt mit einer Quanten-Computing-Konfiguration eines q-Prozessors in dem QCCN inkompatibel ist, eine herkömmliche Anweisung, die der zweiten Anweisung entspricht. Die Ausführungsform führt die herkömmliche Anweisung in dem CCN in der QCE aus. Somit teilt eine Ausführungsform den Job auf geeignete Weise zwischen Quanten-Computing-Ressourcen und herkömmlichen Datenverarbeitungsressourcen in einer QCE auf.
  • Eine weitere Ausführungsform erhält des Weiteren ein herkömmliches Resultat aus dem Ausführen der herkömmlichen Anweisungen in dem CCN. Die Ausführungsform kombiniert das herkömmliche Resultat mit dem q-Resultat, um das endgültige Resultat zu erzeugen. Somit teilt eine Ausführungsform den Job auf geeignete Weise zwischen Quanten-Computing-Ressourcen und herkömmlichen Datenverarbeitungsressourcen in einer QCE auf und erzeugt eine Ausgabe für den Job, welche die Aufteilungsausführung für den Job-Übergebenden transparent macht.
  • Eine weitere Ausführungsform erzeugt des Weiteren eine herkömmliche Anweisung, die einer Anweisung in einem zweiten Abschnitt in dem Job entspricht. Die Ausführungsform plant die herkömmliche Anweisung für eine Ausführung in dem CCN in der QCE ein. Somit teilt eine Ausführungsform den Job auf geeignete Weise zwischen Quanten-Computing-Ressourcen und herkömmlichen Datenverarbeitungsressourcen in einer QCE auf.
  • Bei einer weiteren Ausführungsform ist der QCCN einer aus einem Satz von QCCNs, die in der QCE betrieben werden, und der CCN ist einer aus einem Satz von CCNs, die in der QCE betrieben werden. Somit stellt eine Ausführungsform eine bestimmte Art und Weise eines Konfigurierens der QCE bereit.
  • Bei einer weiteren Ausführungsform weist die Konfiguration des q-Prozessors eine Anzahl von Qubits auf, die in dem q-Prozessor verfügbar sind, und das Feststellen weist ein Ermitteln auf, dass die Operation unter Verwendung der Anzahl von Qubits durchführbar ist. Somit stellt eine Ausführungsform eine bestimmte Art und Weise eines Konfigurierens und Verwendens der Quanten-Computing-Ressourcen in der QCE bereit. Bei einer weiteren Ausführungsform weist die Konfiguration des q-Prozessors eine Art von Operation auf, die durch den q-Prozessor durchgeführt wird, und das Feststellen weist ein Ermitteln auf, dass die in der ersten Anweisung angeforderte Operation unter Verwendung einer zweiten Operation durchführbar ist, die in dem q-Prozessor konfiguriert ist, wobei die zweite Operationen einen Satz von Qubits verwendet. Somit stellt eine Ausführungsform eine weitere Art und Weise eines Konfigurierens und Verwendens der Quanten-Computing-Ressourcen in der QCE bereit.
  • Bei einer weiteren Ausführungsform weist die Konfiguration des q-Prozessors eine Fehlerquote in dem durch den q-Prozessor erzeugten q-Signal auf, wobei das Feststellen ein Ermitteln aufweist, dass eine Fehlertoleranz des q-Abschnitts mindestens gleich der Fehlerquote ist. Somit stellt eine Ausführungsform eine weitere Art und Weise eines Konfigurierens und Verwendens der Quanten-Computing-Ressourcen in der QCE bereit.
  • Eine weitere Ausführungsform identifiziert in dem Job unter Verwendung einer dem q-Abschnitt zugehörigen Angabe des Weiteren den q-Abschnitt, wobei sich die Angabe auf eine Eignung des q-Abschnitts für ein Quanten-Computing bezieht. Somit stellt eine Ausführungsform ein bestimmtes Verfahren zum Ermitteln bereit, ob ein Job von einem Verwenden der Quanten-Computing-Ressourcen in der QCE profitieren kann.
  • Eine weitere Ausführungsform identifiziert in dem Job unter Verwendung der in der ersten Anweisung angeforderten Operation des Weiteren den q-Abschnitt, wobei die Operation in dem QCCN unter Verwendung des q-Prozessors konfiguriert wird. Somit stellt eine Ausführungsform ein bestimmtes Verfahren zum Ermitteln bereit, ob ein Job von einem Verwenden der Quanten-Computing-Ressourcen in der QCE profitieren kann.
  • Eine Ausführungsform enthält ein durch einen Computer nutzbares Programmprodukt. Das durch einen Computer nutzbare Programmprodukt enthält eine oder mehrere durch einen Computer lesbare Speichereinheiten sowie Programmanweisungen, die in mindestens einer der einen oder der mehreren Speichereinheiten gespeichert sind.
  • Eine Ausführungsform enthält ein Computersystem. Das Computersystem enthält einen oder mehrere Prozessoren, einen oder mehrere durch einen Computer lesbare Arbeitsspeicher und eine oder mehrere durch einen Computer lesbare Speichereinheiten sowie Programmanweisungen, die in mindestens einer der einen oder der mehreren Speichereinheiten gespeichert sind, um durch mindestens einen der einen oder der mehreren Prozessoren über mindestens einen der einen oder der mehreren Arbeitsspeicher ausgeführt zu werden.
  • Figurenliste
  • Bestimmte neuartige, für die Erfindung als kennzeichnend betrachtete Merkmale werden in den beigefügten Ansprüchen beschrieben. Die Erfindung selbst jedoch, sowie eine bevorzugte Art der Verwendung, weitere Zielsetzungen und Vorzüge hiervon, werden am deutlichsten unter Bezugnahme auf die folgende ausführliche Beschreibung der veranschaulichenden Ausführungsformen in Verbindung mit den beigefügten Zeichnungen, bei denen:
    • 1 ein Blockschaubild eines Netzwerks von Datenverarbeitungssystemen nach dem Stand der Technik darstellt, in dem eine bevorzugte Ausführungsform der vorliegenden Erfindung realisiert sein kann;
    • 2 ein Blockschaubild eines Datenverarbeitungssystems nach dem Stand der Technik darstellt, in dem eine bevorzugte Ausführungsform der vorliegenden Erfindung realisiert sein kann;
    • 3 ein Blockschaubild einer Beispielkonfiguration für eine Job-Verarbeitung in Cloud-Umgebungen mit Quanten-Computing-Fähigkeit gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung darstellt;
    • 4 ein Blockschaubild einer Anwendung für eine Job-Verarbeitung in Cloud-Umgebungen mit Quanten-Computing-Fähigkeit gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung darstellt;
    • 5 einen Ablaufplan eines Teils eines Prozesses für eine Job-Verarbeitung in Cloud-Umgebungen mit Quanten-Computing-Fähigkeit gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung darstellt; und
    • 6 einen Ablaufplan eines weiteren Teils eines Prozessors für eine Job-Verarbeitung in Cloud-Umgebungen mit Quanten-Computing-Fähigkeit gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die veranschaulichenden Ausführungsformen tragen der Tatsache Rechnung, dass die gegenwärtig verfügbaren Werkzeuge oder Lösungen diese Erfordernisse/Probleme nicht berücksichtigen bzw. keine angemessenen Lösungen für diese Erfordernisse/Probleme bereitstellen. Die zur Beschreibung der Erfindung verwendeten veranschaulichenden Ausführungsformen berücksichtigen und lösen die oben genannten Probleme und andere damit zusammenhängende Probleme durch eine Job-Verarbeitung in Cloud-Umgebungen mit Quanten-Computing-Fähigkeit.
  • Eine Ausführungsform kann als eine Kombination aus bestimmten q-Computing-Hardware-Komponenten und einer Software-Anwendung realisiert sein. Eine Realisierung des Software-Anwendungsabschnitts einer Ausführungsform oder eine oder mehrere Komponenten hiervon können als eine Abwandlung eines bestehenden CN konfiguriert sein, wobei die Software-Anwendung in einer bestimmten Kombination (i) des CN selbst, (ii) eines Datenverarbeitungssystems, das über Nahbereichsfunk oder ein drahtgebundenes bzw. lokales Festnetzwerk (Local Area Network, LAN) mit dem CN Daten austauscht, und (iii) eines Datenverarbeitungssystems ausgeführt wird, das über ein Weitverkehrsnetzwerk (Wide Area Network, WAN) mit dem CN Daten austauscht.
  • Ein Job-Sender ist jedes Datenverarbeitungssystem einer jeden Art oder Konfiguration, das einen Datenverarbeitungs-Job sendet, der eine Datenverarbeitung benötigt. Im Besonderen sendet der Job-Sender den Job an eine Cloud-Umgebung. Gemäß den veranschaulichenden Ausführungsformen enthält die Cloud-Umgebung mindestens einen QCN und mindestens einen CN, in dem eine Ausführungsform ausgeführt werden kann. Eine solche Cloud-Computing-Umgebung wird im Folgenden als eine Quanten-Cloud-Umgebung (QCE) bezeichnet. Der in einer QCE betriebene QCN wird als ein Quanten-Cloud-Rechenknoten (QCCN) bezeichnet.
  • Die QCE kann einen oder mehrere CNs in einer geeigneten Konfiguration enthalten, z.B. in einem Cluster, um unter Verwendung einer herkömmlichen binären Datenverarbeitung Jobs oder Abschnitte hiervon zu verarbeiten. Ein solcher CN wird hier als herkömmlicher Cloud-Rechenknoten (CCN) bezeichnet.
  • Eine Ausführungsform in der QCE empfängt den Job. Die Ausführungsform ermittelt, ob es einen Abschnitt in dem Job gibt, der entweder eine Quantenverarbeitung anfordert, für eine Quantenverarbeitung geeignet ist, oder beides. Als ein nicht beschränkendes Beispiel kann ein Job einen Abschnitt der Job-Anweisungen unter Verwendung einer Quantenverarbeitungssprache wie z.B. Quantum Assembly Language (QASM) codieren, ohne jedoch hierauf beschränkt zu sein. Die Ausführungsform stellt fest, dass ein solcher Abschnitt eine Quantenverarbeitung anfordert.
  • Als ein weiteres nicht beschränkendes Beispiel kann die Ausführungsform einen Satz von Job-Anweisungen in einem Abschnitt analysieren, der unter Verwendung einer herkömmlichen Verarbeitungssprache codiert wurde, zum Beispiel, ohne darauf beschränkt zu sein, Anweisungen in einer mit der Instruction Set Architecture (ISA) konformen Sprache wie z.B. einer Assemblersprache, C++ oder Java® (Java ist eine Marke der Oracle Corporation in den Vereinigten Staaten und in anderen Ländern.) In einem Fall kann die Ausführungsform ermitteln, dass eine in einem solchen Abschnitt angeforderte Operation in einem bestimmten q-Prozessor realisiert ist, der in einem QCNN in der QCE realisiert ist, oder dass sie unter Verwendung eines solchen q-Prozessors verarbeitbar ist. Entsprechend kommt die Ausführungsform zu dem Schluss, dass sich der Abschnitt des Jobs besonders gut für eine Verarbeitung unter Verwendung von Quantenverarbeitung in der betreffenden QCE eignet. Die Ausführungsform identifiziert daher den Abschnitt für eine Quantenverarbeitung.
  • In manchen Fällen kann ein Job-Abschnitt zwar eine Quantenverarbeitung anfordern, z.B. indem er QASM-Code enthält, eine Ausführungsform kann jedoch ermitteln, dass die Operationen eine Fehlerrate angefordert haben oder dass die Qubits für die Datenverarbeitung in dem Code eine Fehlerrate benötigt haben, die zwar durch den bzw. die Job/Abschnitt/Anweisung/Code toleriert wird, die aber nicht mit der Qubit-Konfiguration in dem realisierten QCCN vereinbar ist. Zum Beispiel kann eine Quantenverarbeitungsanweisung sechs Qubits benötigen, wohingegen der QCCN in der QCE nur unter Verwendung von vier Qubits realisiert ist. Als ein weiteres Beispiel kann eine Quantenverarbeitungsanweisung eine Operation verwenden, die bei Verwendung der bestimmten QCCN-Konfiguration in der QCE ineffizient oder unmöglich ist. Als ein weiteres Beispiel kann ein Job, der eine Quantenverarbeitungsanweisung enthält, eine Fehlertoleranz für eine Datenverarbeitung aufweisen, die geringer als ein Fehler in der Ausgabe der bestimmten QCCN-Konfiguration in der QCE ist, und ein Verwenden des QCCN, um den niedrigeren Fehlerwert gemäß der Toleranz zu erreichen, wäre eine ineffiziente Verwendung des QCCN. Somit ist eine Ausführung unter diesen und vielen anderen Umständen in der Lage zu ermitteln, dass ein Job oder ein Abschnitt hiervon unter Verwendung eines CNN verarbeitet werden sollte, obwohl er eine Quantenverarbeitung anfordert.
  • Indem sie auf diese Weise vorgeht, identifiziert eine Ausführungsform einen Abschnitt eines übergebenen Jobs, bei dem der Abschnitt für eine q-Verarbeitung geeignet ist. Der Job kann einen oder mehrere Abschnitte enthalten, welche die Ausführungsform als für eine q-Verarbeitung unter Verwendung einer QCCN geeignet identifiziert. Zusätzlich kann die Ausführungsform Null oder mehr Abschnitte des Jobs als für eine herkömmliche Datenverarbeitung unter Verwendung eines CCN geeignet identifizieren.
  • Sobald ein Abschnitt eines übergebenen Jobs als für eine q-Verarbeitung geeignet identifiziert ist, kompiliert eine Ausführungsform den Abschnitt. Diese durch die Ausführungsform durchgeführte Kompilierung unterscheidet sich in mehrfacher Hinsicht von der traditionellen Code-Kompilierung. So ist die durch die Ausführungsform für einen Abschnitt eines Jobs durchgeführte Kompilierung zum Beispiel insofern Quanten-Computing-spezifisch, als die Kompilierung mindestens eine Anzahl von Qubits ermittelt und festsetzt, die notwendig sein werden, um die in dem Abschnitt vorgesehene Datenverarbeitung durchzuführen. Bei einer Ausführungsform optimiert die Kompilierung des Weiteren die Anzahl der für die Datenverarbeitung notwendigen Qubits auf eine maximale Anzahl von Qubits, die in einem QCCN in der QCE verfügbar sind, oder versucht diese zu optimieren. Wenn eine solche Optimierung erfolgreich ist, fährt die Ausführungsform damit fort, den Abschnitt weiter für eine q-Verarbeitung zu kompilieren oder einzuplanen, wie hier beschrieben ist. Wenn eine solche Optimierung nicht erfolgreich ist, d.h. wenn die Anzahl von Qubits nicht auf die in einem QCCN verfügbare Höchstzahl von Qubits reduziert werden kann, kompiliert die Ausführungsform den Abschnitt für eine herkömmliche Verarbeitung oder plant ihn dafür ein, wie hier beschrieben.
  • Als ein weiteres Beispiel ist die durch die Ausführungsform für einen Abschnitt eines Jobs durchgeführte Kompilierung insofern für Quanten-Computing spezifisch, als die Kompilierung mindestens eine Art von mathematischer Operation ermittelt und festsetzt, die notwendig sein wird, um die in dem Abschnitt vorgesehene Datenverarbeitung durchzuführen. Bei einer bestimmten Ausführungsform optimiert die Kompilierung des Weiteren die für die Datenverarbeitung notwendige Operation oder versucht sie zu optimieren, so dass diese unter Verwendung von einer oder mehreren Operationen durchführbar ist, die in einem QCCN in der QCE konfiguriert sind. Wenn eine solche Optimierung erfolgreich ist, fährt die Ausführungsform damit fort, den Abschnitt weiter für eine q-Verarbeitung zu kompilieren oder einzuplanen, wie hier beschrieben ist. Wenn eine solche Optimierung nicht erfolgreich ist, d.h. wenn die in dem Abschnitt benötigte Operation nicht unter Verwendung einer Kombination von einem QCCN verfügbaren Operationen durchgeführt werden kann, kompiliert die Ausführungsform den Abschnitt für eine herkömmliche Verarbeitung oder plant ihn dafür ein, wie hier beschrieben ist.
  • Als ein weiteres Beispiel ist die durch die Ausführungsform für einen Abschnitt eines Jobs durchgeführte Kompilierung insofern Quanten-Computing-spezifisch, als die Kompilierung mindestens eine Fehlertoleranz ermittelt und festsetzt, die durch die in dem Abschnitt vorgesehene Datenverarbeitung notwendig sein wird. Bei einer bestimmten Ausführungsform optimiert die Kompilierung des Weiteren die für die Datenverarbeitung notwendige Fehlertoleranz auf nicht weniger als einen Mindestfehler, der bekanntermaßen in einer Ausgabe eines QCCN in der QCE vorhanden ist, oder versucht diese zu optimieren. Wenn eine solche Optimierung erfolgreich ist, fährt die Ausführungsform damit fort, den Abschnitt weiter für eine q-Verarbeitung zu kompilieren oder einzuplanen, wie hier beschrieben ist. Wenn eine solche Optimierung nicht erfolgreich ist, d.h. wenn die Toleranz nicht auf den Mindestfehler eines QCCN erhöht werden kann, kompiliert die Ausführungsform den Abschnitt für eine herkömmliche Verarbeitung oder plant ihn dafür ein, wie hier beschrieben ist.
  • Diese Beispiele von Quantenkompilierungsfunktionen sollen keine Beschränkung der veranschaulichenden Ausführungsformen darstellen. Für den Fachmann sind anhand dieser Offenbarung viele andere Quantenkompilierungsfunktionen denkbar, und diese werden als innerhalb des inhaltlichen Umfangs der veranschaulichenden Ausführungsformen liegend betrachtet. Zum Beispiel kann die Kompilierung, die durch eine Ausführungsform für einen Abschnitt eines Jobs durchgeführt wird, auch in vielerlei anderer Hinsicht Quanten-Computing-spezifisch sein. In einem bestimmten derartigen Beispiel versucht die Kompilierung zumindest, aus dem Abschnitt resultierende q-Verarbeitungsanweisungen zu kombinieren, solche q-Verarbeitungsanweisungen anzuordnen, solche q-Verarbeitungsanweisungen zu reduzieren oder die q-Verarbeitungsanweisungen anderweitig zu organisieren, dass eine Verwendung eines QCCN zum Verarbeiten des Abschnitts reduziert wird, eine in dem QCCN realisierte mathematische Operation verwendet wird, bestimmte Quantenanweisungen in dem kompilierten Abschnitt näher beieinander angeordnet werden, als dies bei ihren Ausgangspositionen in dem ursprünglichen Job-Abschnitt der Fall war, und/oder bestimmte Quantenanweisungen in dem kompilierten Abschnitt miteinander verknüpft werden.
  • Als ein weiteres Beispiel kann ein Job einen Abschnitt unter Verwendung einer Quantenanweisungssprache wie z.B. QASM angeben. Allerdings kann eine Ausführungsform feststellen, dass die für den Abschnitt erforderlichen Quantenparameter der q-Verarbeitung nicht mit dem QCCN kompatibel sind, der in der QCE verfügbar ist. In einem solchen Fall wandelt die Quanten-Computing-spezifische Operation der Ausführungsform den Abschnitt aus der Quantenanweisungssprache in eine herkömmliche Anweisungssprache für eine herkömmliche Verarbeitung um.
  • Eine Ausführungsform weist eine q-Anweisung aus einem kompilierten Abschnitt einer q-Ressource zu. Ein Beispiel für eine q-Ressource ist ein q-Prozessor. Generell ist eine q-Ressource jede Manifestation eines Qubits oder einer Quanten-Computing-Ressource, die sich nach einem oder mehreren Prinzipien der Quantenmechanik verhält, wie weiter oben beschrieben wurde.
  • Zum Beispiel soll angenommen werden, dass mehrere QCCNs in der QCE betrieben werden, wobei ein QCCN mit vier Qubits und ein weiterer QCCN mit acht Qubits konfiguriert ist. Eine q-Anweisung, die nur vier Qubits verwendet, nutzt besser den 4-Qubit-QCCN als den 8-Qubit-QCCN.
  • Entsprechend soll angenommen werden, obwohl dies bei einer tatsächlichen Realisierung nicht notwendigerweise der Fall sein muss, dass ein bestimmter QCCN für eine Durchführung einer Additionsoperation und ein weiterer QCCN für eine Durchführung einer Multiplikationsoperation konfiguriert ist. Eine q-Anweisung, die zwei große Zahlen multipliziert, verwendet besser die Konfiguration für die Multiplikationsoperation, als wiederholt die Additionskonfiguration zu verwenden, um zu demselben Resultat zu gelangen.
  • Die Operationen eines QCCN sind im Allgemeinen in Bezug auf Logikgatter konfiguriert, die diese und andere mathematische Operationen realisieren. Eine Art und Weise, die q-Anweisungsverarbeitung zu optimieren, besteht in der Optimierung einer Anzahl von Gattern, die bei der Datenverarbeitung verwendet werden.
  • Diese nicht als Beschränkung gedachten Beispiele belegen, dass ein Zuweisen von verschiedenen q-Anweisungen zu verschiedenen QCCNs reale und messbare Konsequenzen haben kann. Die Konsequenz kann schlicht aus unterschiedlich hohen Datenverarbeitungskosten oder sie kann aus einem Fehler in dem Endresultat bestehen. Wenn die Multiplikationsoperation zum Beispiel einmal durchgeführt und ein Quantenausgabesignal einmal gemessen wird, ist der Fehler in der Ausgabe vermutlich geringer als der kumulative Fehler aus kumulativen, wiederholten Additionsoperationen in einer weiteren Quantenausgabe.
  • Aus diesen und anderen Gründen weist eine Ausführungsform einen Satz von einer oder mehreren q-Anweisungen aus einem kompilierten Abschnitt des übergebenen Jobs einem spezifischen QCCN zu, der in der QCE betrieben wird. Im Zuge dessen, dass die Ausführungsform den Satz von q-Anweisungen einem spezifischen QCCN zuweist, ermittelt die Ausführungsform, ob der QCCN eine zugehörige Warteschlange von q-Anweisungen aufweist, die auf eine Ausführung in dem QCCN warten.
  • Wenn eine solche Warteschlange oder ein anderweitiger Einplanungsmechanismus für den ausgewählten QCCN vorhanden ist, platziert die Ausführungsform den Satz von q-Anweisungen in der Warteschlange oder in dem konfigurierten Einplanungsmechanismus. Abhängig von der Funktionsweise der Warteschlange oder des Einplanungsmechanismus wird der Satz von q-Anweisungen zu einem geeigneten Zeitpunkt für eine Ausführung durch den QCCN ausgewählt. Wenn eine solche Warteschlange oder ein anderweitiger Einplanungsmechanismus für den ausgewählten QCCN nicht vorhanden ist, kann die Ausführungsform den Satz von q-Anweisungen sofort in dem QCCN ausführen.
  • An dieser Stelle wird darauf verwiesen, dass ein Abschnitt des übergebenen Jobs womöglich unter Verwendung herkömmlicher Anweisungen durch eine Ausführungsform kompiliert wurde. Solche herkömmlichen Anweisungen werden gemäß bekannten herkömmlichen Cloud-Computing-Verfahren auf ähnliche Art und Weise für eine Ausführung in einem geeigneten CNN eingeplant.
  • Die Ausführung einer oder mehrerer q-Anweisungen in einem QCCN erzeugt ein Signal, das von dem QCCN ausgegeben wird. Die Ausführung der herkömmlichen Anweisung(en) in einem CNN erzeugt ein herkömmliches Resultat.
  • Eine Ausführungsform ermittelt, ob der übergebene Job bereits für eine Fehlerbehandlung instrumentiert ist. Eine Art der Fehlerbehandlung ist die Fehlerkorrektur. Ein Job kann für eine Fehlerbehandlung instrumentiert sein, indem er Code enthält, der einen unerwarteten Fehler in einem Resultat einer Datenverarbeitung korrigiert oder anderweitig berücksichtigt. Die Ausführungsform identifiziert eine solche Instrumentierung in dem Job und konfiguriert eine Fehlerbehandlungsoperation in Bezug auf die QCCN-Ausgabe. Eine Art von Fehlerbehandlung ist in einem Hardware-Mechanismus konfiguriert, welcher das Ausgabesignal des q-Prozessors erfasst und verarbeitet. Ein solcher Hardware-Mechanismus in einem QCCN wird als eine Hardware-Kette bezeichnet.
  • Das Ausgabesignal ist ein festgestellter Quantenzustand eines Teilchens, der bei einer bestimmten Realisierung der Qubits in einem q-Prozessor verwendet wird. Einige nicht beschränkende Beispiele der Ausgabesignale enthalten eine Polarisierung und/oder eine Anzahl von Photonen, eine Ankunftszeit von Photonen, einen kohärenten Zustand von Photonen in einem Strahl, einen Spin eines Elektrons, eine Elektronenladung oder eine Anzahl von Elektronen, einen Spin eines Atomkerns, einen atomaren Spin in einem Gitter, eine Ladung eines Josephson-Kontakts in einem supraleitenden Ladungs-Qubit, einen Strom eines Josephson-Kontakts in einem supraleitenden Fluss-Qubit, eine Energie eines Josephson-Kontakts in einem supraleitenden Phasen-Qubit, eine Elektronenlokalisierung in einem einfach geladenen Quantenpunktpaar, einen Punkt-Spin eines Quantenpunkts und viele andere.
  • Die Fehlerbehandlung auf Grundlage einer Hardware-Kette misst ein Ausgabesignal eines q-Prozessors. In der Hardware-Kette kann eine Form von Signalfehlererkennung und -korrektur durchgeführt werden, z.B. durch Anwenden eines Überprüfens des Ausgabesignals durch ein anderweitiges Mittel, eines Korrelierens eines einzigen Ausgabesignals mit einem weiteren Ausgabesignal oder eines erneuten Erzeugens des Ausgabesignals in einer Wiederholungsoperation eines Qubits. In manchen Fällen, in denen der Job auf geeignete Weise instrumentiert ist, kann eine Fehlerbehandlung in der Hardware-Kette minimiert, reduziert, geändert oder weggelassen werden, je nach spezifischer Realisierung.
  • Eine Ausführungsform veranlasst, dass ein gemessenes oder in der Hardware-Kette korrigiertes Ausgabesignal demoduliert wird, indem eine geeignete, bekannte Technologie zur Signalmodulation/-demodulation verwendet wird. Die Ausführungsform digitalisiert das demodulierte Signal, so dass binäre Daten aus dem digitalisierten demodulierten Signal gewonnen werden können.
  • Eine Ausführungsform verwendet das digitalisierte Signal, um ein binär dargestelltes q-Resultat zu berechnen. Ein oder mehrere q-Resultate können für einen q-verarbeiteten Abschnitt des Jobs erhalten werden.
  • Optional wendet eine Ausführungsform des Weiteren eine oder mehrere Nachverarbeitungsoperationen auf das q-Resultat an. Ein bestimmtes Beispiel für das Nachverarbeiten ist eine Fehlerbehandlung des q-Resultats auf Software-Grundlage. Das Anwenden der Fehlerbehandlung in dieser Phase ist auch von der Fehlerbehandlungsinstrumentierung innerhalb des Job-Codes abhängig. Ein Beispiel für eine Art einer Fehlerbehandlung, z.B. eine Fehlererkennung und/oder Fehlerkorrektur, enthält ein Anwenden eines statistischen Algorithmus oder Modells auf das q-Resultat. Wenn zum Beispiel mehrere q-Resultatwerte für denselben oder einen ähnlichen Satz von q-Anweisungen erhalten wurden, kann ein statistisches Modell feststellen, ob ein bestimmter Wert des q-Resultats wahrscheinlicher als, weniger wahrscheinlich als oder ebenso wahrscheinlich wie ein weiterer Wert des q-Resultats ist. Als ein Beispiel für die Fehlerbehandlungsoperation der Ausführungsform würde das Beispielmodell in diesem Fall den wahrscheinlichsten Wert aus den mehreren Werten für das q-Resultat auswählen.
  • Wenn aus der herkömmlichen Datenverarbeitung eines weiteren Abschnitts des Jobs außerdem ein herkömmliches Resultat erhalten wird, kann eine weitere Art einer Nachverarbeitung notwendig sein. Zum Beispiel kombiniert eine Ausführungsform das herkömmliche Resultat mit dem q-Resultat. Die Kombinationsoperation kann auf jede geeignete Art und Weise realisiert sein, abhängig von der Art von Datenverarbeitungen, den Arten von Resultaten und der Erwartung des Jobs in jeder beliebigen Realisierung der veranschaulichenden Ausführungsformen.
  • Die Kombinationsoperation erzeugt ein endgültiges Resultat. Als Reaktion auf ein Empfangen des Jobs von dem Übergebenden stellt eine Ausführungsform dem Job-Übergebenden das endgültige Resultat bereit.
  • Die Art der hier beschriebenen Job-Verarbeitung in Cloud-Umgebungen mit Quanten-Computing-Fähigkeit ist mit den gegenwärtig verfügbaren Verfahren nicht erreichbar. Ein Verfahren einer hier beschriebenen Ausführungsform, das für eine Ausführung in einem CN anstatt einem QCCN realisiert ist, weist eine erhebliche Verbesserung der QCE-Funktionalität beim Verwalten von reinen Quanten-Datenverarbeitungsaufgaben oder gemischten Quanten- und herkömmlichen Verarbeitungsaufgaben in einer QCE auf.
  • Die veranschaulichenden Ausführungsformen werden mit Blick auf bestimmte Arten von Jobs, Anweisungen, q-Anweisungen, Kompilierungsoperationen, Zuweisungslogik, q-Prozessoren, QCNs, Ausgabesignalen, Fehlerbehandlung, Nachverarbeitung, Transformationen oder Umwandlungen, Algorithmen, Ausführungsorten, zusätzlichen Daten, Einheiten, Datenverarbeitungssystemen, Umgebungen, Komponenten und Anwendungen lediglich beispielhaft beschrieben. Jegliche spezifische Ausprägung dieser und anderer ähnlicher Gegenstände ist nicht als Beschränkung der Erfindung zu verstehen. Innerhalb des inhaltlichen Umfangs der veranschaulichenden Ausführungsformen kann jegliche geeignete Ausprägung dieser und anderer ähnlicher Gegenstände gewählt werden.
  • Darüber hinaus können die veranschaulichenden Ausführungsformen in Bezug auf jegliche Art von Daten, Datenquelle oder Zugriff auf eine Datenquelle über ein Datennetzwerk realisiert sein. Innerhalb des inhaltlichen Umfangs der Erfindung kann jegliche Art von Datenspeichereinheit die Daten einer Ausführungsform der Erfindung bereitstellen, entweder lokal in einem Datenverarbeitungssystem oder über ein Datennetzwerk. Wo eine Ausführungsform unter Verwendung einer mobilen Einheit beschrieben ist, kann innerhalb des inhaltlichen Umfangs der veranschaulichenden Ausführungsformen jegliche Art von Datenspeichereinheit, die für eine Verwendung mit der mobilen Einheit geeignet ist, die Daten für eine solche Ausführungsform bereitstellen, entweder lokal in der mobilen Einheit oder über ein Datennetzwerk.
  • Die veranschaulichenden Ausführungsformen werden lediglich als Beispiele unter Verwendung von spezifischem Code, spezifischen Entwürfen, Architekturen, Protokollen, Gestaltungen, Schemata und Werkzeugen beschrieben und stellen keine Beschränkung der veranschaulichenden Ausführungsformen dar. Darüber hinaus werden die veranschaulichenden Ausführungsformen in manchen Fällen unter Verwendung von bestimmter Software, bestimmten Werkzeugen und Datenverarbeitungsumgebungen beschrieben, wobei dies lediglich als ein Beispiel zur besseren Klarheit der Beschreibung dient. Die veranschaulichenden Ausführungsformen können gemeinsam mit anderen vergleichbaren oder für einen ähnlichen Zweck gedachten Strukturen, Systemen, Anwendungen oder Architekturen verwendet werden. Zum Beispiel können innerhalb des inhaltlichen Umfangs der Erfindung andere vergleichbare mobile Einheiten, Strukturen, Systeme, Anwendungen oder Architekturen hiervon gemeinsam mit einer solchen Ausführungsform der Erfindung verwendet werden. Eine veranschaulichende Ausführungsform kann in Hardware, Software oder einer Kombination hiervon realisiert sein.
  • Die Beispiele in dieser Offenbarung dienen lediglich der Klarheit der Beschreibung und stellen keine Beschränkung der veranschaulichenden Ausführungsformen dar. Ausgehend von dieser Offenbarung sind zusätzliche Daten, Operationen, Aktionen, Aufgaben, Aktivitäten und Bearbeitungen denkbar, die als innerhalb des inhaltlichen Umfangs der veranschaulichenden Ausführungsformen liegend betrachtet werden.
  • Etwaige hier genannte Vorzüge dienen lediglich als Beispiele und sind nicht als Beschränkung der veranschaulichenden Ausführungsformen gedacht. Durch spezifische veranschaulichende Ausführungsformen können zusätzliche oder abweichende Vorzüge realisiert werden. Darüber hinaus kann eine bestimmte veranschaulichende Ausführungsform einige, alle oder keinen der oben genannten Vorzüge aufweisen.
  • In Bezug auf die Figuren und im Besonderen auf die 1 und 2 handelt es sich bei diesen Figuren um Beispieldarstellungen von Datenverarbeitungsumgebungen, in denen veranschaulichende Ausführungsformen realisiert sein können. Die 1 und 2 stellen lediglich Beispiele dar und sollen mit Blick auf die Umgebungen, in denen verschiedene Ausführungsformen realisiert sein können, keinerlei Beschränkung geltend machen oder nahelegen. Eine bestimmte Realisierung kann auf Grundlage der folgenden Beschreibung viele Abwandlungen an den dargestellten Umgebungen vornehmen.
  • 1 stellt ein Blockschaubild eines Netzwerks von Datenverarbeitungssystemen dar, in dem veranschaulichende Ausführungsformen realisiert sein können. Eine Datenverarbeitungsumgebung 100 ist ein Netzwerk von Computern, in dem die veranschaulichenden Ausführungsformen der vorliegenden Offenbarung realisiert sein können. Die Datenverarbeitungsumgebung 100 enthält ein Netzwerk 102. Das Netzwerk 102 ist das Medium, mit dem Datenübertragungsverbindungen zwischen verschiedenen Einheiten und Computern bereitgestellt werden, die innerhalb der Datenverarbeitungsumgebung 100 miteinander verbunden sind. Das Netzwerk 102 kann Verbindungen wie z.B. drahtgebundene und drahtlose Datenübertragungsverbindungen oder Lichtwellenleiterkabel enthalten.
  • Clients und Server sind lediglich Beispielfunktionen bestimmter Datenverarbeitungssysteme, die mit dem Netzwerk 102 verbunden sind, und sollen andere Konfigurationen oder Funktionen dieser Datenverarbeitungssysteme nicht ausschließen. Ein Server 104 und ein Server 106 sind zusammen mit einer Speichereinheit 108 mit dem Netzwerk 102 verbunden. Software-Anwendungen können auf einem beliebigen Computer in der Datenverarbeitungsumgebung 100 ausgeführt werden. Auch Clients 110, 112 und 114 sind mit dem Netzwerk 102 verbunden. Ein Datenverarbeitungssystem wie z.B. der Server 104 oder 106 oder der Client 110, 112 oder 114 kann Daten enthalten und Software-Anwendungen oder Software-Werkzeuge aufweisen, die darauf ausgeführt werden.
  • Lediglich beispielhaft und ohne eine wie auch immer geartete Beschränkung auf eine solche Architektur nahezulegen, stellt 1 bestimmte Komponenten dar, die in einer Beispielrealisierung einer Ausführungsform verwendbar sind. Zum Beispiel sind die Server 104 und 106 sowie die Clients 110, 112, 114 nur beispielhaft als Server und Clients dargestellt und sollen keine Beschränkung auf eine Client-Server-Architektur bedeuten. Als ein weiteres Beispiel kann eine Ausführungsform wie gezeigt auf mehrere Datenverarbeitungssysteme und ein Datennetzwerk verteilt sein, wohingegen eine weitere Ausführungsform innerhalb des inhaltlichen Umfangs der veranschaulichenden Ausführungsformen in einem einzigen Datenverarbeitungssystem realisiert sein kann. Die Datenverarbeitungssysteme 104, 106, 110, 112 und 114 stehen außerdem für Beispielknoten in einem Cluster, für Partitionen und andere Konfigurationen, die zum Realisieren einer Ausführungsform geeignet sind.
  • Eine Einheit 132 ist ein Beispiel für eine hier beschriebene Einheit. Zum Beispiel kann die Einheit 132 in Gestalt eines Smartphones, eines Tablet Computers, eines Laptop Computers, einen Clients 110 in einer ortsgebundenen oder einer tragbaren Form, einer am Körper tragbaren Datenverarbeitungseinheit oder jeder anderen geeigneten Einheit vorliegen. Jede Software-Anwendung, die als in einem weiteren Datenverarbeitungssystem aus 1 ausgeführt beschrieben wird, kann konfiguriert sein, um auf ähnliche Weise in der Einheit 132 ausgeführt zu werden. Jegliche Daten oder Informationen, die in einem weiteren Datenverarbeitungssystem aus 1 gespeichert oder ausgeführt werden, können konfiguriert sein, um auf ähnliche Weise in der Einheit 132 ausgeführt zu werden.
  • Eine Cloud 140 ist ein Beispiel für eine hier beschriebenen QCE. Als ein Beispiel enthält die QCE 140 den CCN 104, 106, und viele andere ähnliche CCNs 142. Als ein Beispiel können die CCNs 106 und 142 als Cluster 144 von CCNs konfiguriert sein. Die QCE 140 enthält des Weiteren einen oder mehrere QCCNs wie z.B. einen QCCN 146. Ein QCCN wie z.B. der QCCN 146 weist einen oder mehrere q-Prozessoren 148 auf. Ein momentan realisierbares Qubit ist ein Beispiel für einen q-Prozessor 148. Eine Anwendung 105 realisiert eine hier beschriebene Ausführungsform. Die Anwendung 105 läuft in einem CCN wie z.B. dem Server 104 in der QCE 140. Der Client 110 kann auf eine hier beschriebene Art und Weise einen Job 111 konfigurieren und als ein Sender des Jobs 111 an die QCE 140 wirken.
  • Die QCE 140 kann unter Verwendung von drahtgebundenen Leitungen, drahtlosen Übertragungsprotokollen oder einer anderen geeigneten Datenverbindung mit dem Netzwerk 102 verbunden sein. Die Clients 110, 112 und 114 können zum Beispiel Personal Computer oder Netzwerkcomputer sein. Das Netzwerk 102 kann für eine Zusammenstellung von Netzwerken und Gateways stehen, die das TCP/IP-Protokoll (Transmission Control Protocol/Internet Protocol) und andere Protokolle verwenden, um untereinander Daten auszutauschen. 1 ist als Beispiel und nicht als architektonische Beschränkung der verschiedenen veranschaulichenden Ausführungsformen gedacht.
  • Die Datenverarbeitungsumgebung 100 als Ganzes kann auch in der Gestalt einer Cloud vorliegen und ein Cloud-Computing-Modell einer Servicebereitstellung nutzen, um einen problemlosen bedarfsgesteuerten Netzwerkzugriff auf einen gemeinsam genutzten Vorrat von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste) zu ermöglichen, die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Service schnell bereitgestellt und freigegeben werden können.
  • In Bezug auf 2 stellt diese Figur ein Blockschaubild eines herkömmlichen Datenverarbeitungssystems dar, in dem veranschaulichende Ausführungsformen realisiert sein können. Ein Datenverarbeitungssystem 200 ist ein Beispiel für einen Computer wie z.B. die Server 104 und 106 oder die Clients 110, 112 und 114 aus 1 oder eine weitere Art von Einheit, in der sich durch einen Computer nutzbarer Programmcode bzw. durch einen Computer nutzbare Anweisungen, welche die Prozesse realisieren, für die veranschaulichenden Ausführungsformen befinden können.
  • Das Datenverarbeitungssystem 200 ist außerdem repräsentativ für ein Datenverarbeitungssystem oder eine darin befindliche Konfiguration wie z.B. das Datenverarbeitungssystem 132 aus 1, in dem sich durch einen Computer nutzbarer Programmcode oder durch einen Computer nutzbare Anweisungen befinden können, welche die Prozesse der veranschaulichenden Ausführungsformen realisieren. Das Datenverarbeitungssystem 200 wird nur beispielhaft als ein Computer beschrieben, ohne hierfür beschränkt zu sein. Realisierungen in der Gestalt anderer Einheiten wie z.B. der Einheit 132 aus 1 können das Datenverarbeitungssystem 200 abwandeln, indem sie beispielsweise eine berührungsempfindliche Schnittstelle hinzufügen, und sogar bestimmte dargestellte Komponenten des Datenverarbeitungssystems 200 weglassen, ohne von der allgemeinen Beschreibung der Operationen und Funktionen des hier beschriebenen Datenverarbeitungssystems 200 abzuweichen.
  • In dem dargestellten Beispiel verwendet das Datenverarbeitungssystem 200 eine Hub-Architektur, die einen North Bridge & Memory Controller Hub (NB/MCH) 202 und einen South Bridge & Input/Output (I/O) Controller Hub (SB/ICH) 204 enthält. Eine Verarbeitungseinheit 206, ein Hauptarbeitsspeicher 208 und ein Grafikprozessor 210 sind mit dem North Bridge & Memory Controller Hub (NB/MCH) 202 verbunden. Die Verarbeitungseinheit 206 kann einen oder mehrere Prozessoren enthalten und unter Verwendung eines oder mehrerer heterogener Prozessorsysteme realisiert sein. Die Verarbeitungseinheit 206 kann ein Mehrkernprozessor sein. Bei bestimmten Ausführungsformen kann der Grafikprozessor 210 über einen Accelerated Graphics Port (AGP) mit dem NB/MCH 202 verbunden sein.
  • In dem dargestellten Beispiel ist ein LAN-Adapter 212 mit dem South Bridge & I/O Controller Hub (SB/ICH) 204 verbunden. Ein Audioadapter 216, ein Tastatur- und Mausadapter 220, ein Modem 222, ein Festwertspeicher (Read Only Memory, ROM) 224, USB-Anschlüsse (Universal Serial Bus) und andere Anschlüsse 232 sowie PCI/PCIe-Einheiten 234 sind über einen Bus 238 mit dem South Bridge & I/O Controller Hub 204 verbunden. Ein Festplattenlaufwerk (Hard Disk Drive, HDD) oder ein Halbleiterlaufwerk (Solid State Drive, SSD) 226 und ein CD-ROM 230 sind über einen Bus 240 mit dem South Bridge & I/O Controller Hub 204 verbunden. Die PCI/PCIe-Einheiten 234 können zum Beispiel Ethernet-Adapter, Erweiterungskarten und PC-Karten für Notebook Computer enthalten. PCI verwendet einen CardBus-Controller, PCle nicht. Der ROM 224 kann zum Beispiel ein Flash-BIOS (Binary Input/Output System) sein. Das Festplattenlaufwerk 226 und der CD-ROM 230 können zum Beispiel eine IDE-Schnittstelle (Integrated Drive Electronics), eine SATA-Schnittstelle (Serial Advanced Technology Attachment) oder Abwandlungen wie z.B. external SATA (eSATA) und Micro-SATA (mSATA) verwenden. Eine SIO-Einheit (Super I/O) 236 kann über einen Bus 238 mit dem South Bridge & I/O Controller Hub (SB/ICH) 204 verbunden sein.
  • Arbeitsspeicher wie z.B. der Hauptarbeitsspeicher 208, der ROM 224 oder ein (nicht gezeigter) Flash-Arbeitsspeicher sind einige Beispiele für durch einen Computer nutzbare Speichereinheiten. Das Festplattenlaufwerk oder Halbleiterlaufwerk 226, der CD-ROM 230 und andere ähnlich nutzbare Einheiten sind einige Beispiele für durch einen Computer nutzbare Speichereinheiten mit einem durch einen Computer nutzbaren Speichermedium.
  • In der Verarbeitungseinheit 206 wird ein Betriebssystem ausgeführt. Das Betriebssystem koordiniert verschiedene Komponenten innerhalb des Datenverarbeitungssystems 200 aus 2 und stellt deren Steuerung bereit. Das Betriebssystem kann ein handelsübliches Betriebssystem für jegliche Art von Datenverarbeitungsplattform sein, darunter Serversysteme, Personal Computer und mobile Einheiten, ohne darauf beschränkt zu sein. Ein objektorientiertes oder anderweitiges Programmiersystem kann gemeinsam mit dem Betriebssystem ausgeführt werden und aus Programmen oder Anwendungen heraus, die in dem Datenverarbeitungssystem 200 ausgeführt werden, Aufrufe an das Betriebssystem bereitstellen.
  • Anweisungen für das Betriebssystem, das objektorientierte Programmiersystem und Anwendungen oder Programme wie z.B. die Anwendung 105 aus 1 befinden sich auf Speichereinheiten, z.B. in Gestalt von Code 226A auf dem Festplattenlaufwerk 226, und können zur Ausführung durch die Verarbeitungseinheit 206 in mindestens einen der einen oder der mehreren Arbeitsspeicher wie z.B. den Hauptarbeitsspeicher 208 geladen werden. Die Prozesse für die veranschaulichenden Ausführungsformen können durch die Verarbeitungseinheit 206 unter Verwendung von durch einen Computer realisierten Anweisungen durchgeführt werden, die sich in einem Arbeitsspeicher wie zum Beispiel dem Hauptarbeitsspeicher 208, einem Nur-Lese-Speicher 224 oder in einer oder mehreren Peripherie-Einheiten befinden können.
  • Des Weiteren kann der Code 226A in einem Fall über ein Netzwerk 201A von einem entfernt angeordneten System 201B heruntergeladen werden, wobei ein ähnlicher Code 201C auf einer Speichereinheit 201D gespeichert wird. In einem weiteren Fall kann der Code 226A über das Netzwerk 201A auf das entfernt angeordnete System 201B heruntergeladen werden, wobei der heruntergeladene Code 201C auf einer Speichereinheit 201D gespeichert wird.
  • Die Hardware aus den 1 und 2 kann je nach Realisierung variieren. Zusätzlich zu oder anstatt der in den 1 und 2 dargestellten Hardware können auch andere interne Hardware- oder Peripherie-Einheiten wie z.B. ein Flash-Arbeitsspeicher, ein gleichwertiger nichtflüchtiger Arbeitsspeicher oder optische Plattenlaufwerke und dergleichen verwendet werden. Zusätzlich hierzu können die Prozesse der veranschaulichenden Ausführungsformen auf ein Mehrprozessor-Datenverarbeitungssystem angewendet werden.
  • Bei manchen veranschaulichenden Beispielen kann das Datenverarbeitungssystem 200 ein persönlicher digitaler Assistent (PDA) sein, der im Allgemeinen mit einem Flash-Arbeitsspeicher konfiguriert ist, um nichtflüchtigen Arbeitsspeicher zum Speichern von Betriebssystemdateien und/oder durch einen Benutzer erzeugten Daten bereitzustellen. Ein Bussystem kann einen oder mehrere Busse aufweisen, wie z.B. einen E/A-Bus und einen PCI-Bus. Selbstverständlich lässt sich das Bussystem mit jeglicher Art von Datenübertragungsstruktur oder -architektur realisieren, die eine Übertragung von Daten zwischen verschiedenen Komponenten oder Einheiten vorsieht, die mit der Struktur oder Architektur verbunden sind.
  • Eine Datenübertragungseinheit kann eine oder mehrere Einheiten enthalten, die zum Senden und Empfangen von Daten verwendet werden, z.B. einen Modem oder einen Netzwerkadapter. Ein Arbeitsspeicher kann zum Beispiel der Hauptarbeitsspeicher 208 oder ein Cache sein, wie z.B. der in dem North Bridge & Memory Controller Hub 202 befindliche Cache. Eine Verarbeitungseinheit kann einen oder mehrere Prozessoren oder CPUs enthalten.
  • Die dargestellten Beispiele aus den 1 und 2 und die oben beschriebenen Beispiele sollen keine architektonische Beschränkung bedeuten. Zum Beispiel kann das Datenverarbeitungssystem 200 zusätzlich dazu, dass es in Gestalt einer mobilen oder am Körper tragbaren Einheit vorliegen kann, auch ein Tablet Computer, ein Laptop Computer oder eine Telefoneinheit sein.
  • Wenn ein Computer oder Datenverarbeitungssystem als eine virtuelle Maschine, eine virtuelle Einheit oder eine virtuelle Komponente beschrieben ist, arbeitet die virtuelle Maschine, die virtuelle Einheit oder die virtuelle Komponente in der Art des Datenverarbeitungssystems 200 unter Verwendung einer virtualisierten Ausprägung einiger oder aller in dem Datenverarbeitungssystem 200 dargestellten Komponenten. Zum Beispiel ist in einer virtuellen Maschine, virtuellen Einheit oder virtuellen Komponente die Verarbeitungseinheit 206 als eine virtualisierte Instanz aller oder einer bestimmten Anzahl von Hardware-Verarbeitungseinheiten 206 ausgeprägt, die in einem Host-Datenverarbeitungssystem verfügbar sind, der Hauptarbeitsspeicher 208 ist als eine virtualisierte Instanz des gesamten oder eines Teils des Hauptarbeitsspeichers 208 ausgeprägt, der in dem Host-Datenverarbeitungssystem verfügbar sein kann, und die Festplatte 226 ist als eine virtualisierte Instanz der gesamten oder eines Teils der Festplatte 226 ausgeprägt, die in dem Host-Datenverarbeitungssystem verfügbar sein kann. Das Host-Datenverarbeitungssystem ist in diesen Fällen durch das Datenverarbeitungssystem 200 dargestellt.
  • In Bezug auf 3 stellt diese Figur ein Blockschaubild einer Beispielkonfiguration für eine Job-Verarbeitung in Cloud-Umgebungen mit Quanten-Computing-Fähigkeit gemäß einer veranschaulichenden Ausführungsform dar. Eine Anwendung 302 ist ein Beispiel für die Anwendung 105 aus 1. Eine QCE 304 ist ein Beispiel für die QCE 140 aus 1.
  • Ein Job 306 ist ein Beispiel für den Job 111 aus 1. Unabhängig davon, ob dies in dem Job 306 auf irgendeine Art und Weise angegeben wird, soll ein Abschnitt 308 des Jobs 306 vorzugsweise unter Verwendung von Quanten-Computing ausgeführt werden.
  • Die QCE 304 enthält einen QCCN 310 und einen CCN 312, wie hier beschrieben. Obwohl jeweils nur eine einzige Instanz des QCCN 310 und des CCN 312 gezeigt wird, können ein oder mehrere des QCCN 310 und null oder mehrere des CCN 312 in der QCE 304 vorhanden sein. Vorzugsweise ist mindestens ein CCN in der QCE 304 vorhanden, in dem die Anwendung 302 ausgeführt werden kann, in dem eine herkömmliche Datenverarbeitung durchgeführt werden kann, oder in dem beides stattfinden kann. Wie dargestellt, kann die Anwendung 302 in dem CCN 312 oder in einem weiteren CCN in der QCE 304 ausgeführt werden.
  • Wenn der Job 306 in der QCE 304 empfangen wird, identifiziert eine Funktion 314 den Abschnitt 308 (q-Abschnitt) als vorzugsweise mittels q-Computing auszuführen oder hierfür geeignet. Eine Funktion 316 kompiliert den q-Abschnitt des Jobs 306. Eine Funktion 318 führt eine herkömmliche Kompilierung eines herkömmlichen Abschnitts des Jobs 306 durch. Die Funktion 316 kann q-Anweisungen 320 (q-Operationen oder q-Ops) ausgeben, die, wie hier beschrieben, für eine QCCN-Zuweisung (QP-Zuordnung oder q-Prozessor-Zuordnung) gesendet werden. Aus einem oder mehreren hier beschriebenen Gründen kann die Funktion 316 auch herkömmliche Anweisungen 322 ausgeben (herkömmliche Operationen oder herk. Ops), die für eine herkömmliche Ressourcenzuweisung gesendet werden.
  • Unter Verwendung des Warteschlangen- und Einplanungsmechanismus weist eine Funktion 324 eine q-Anweisung einem QCCN oder sogar einem bestimmten Quantenprozessor darin zu, wie hier beschrieben ist. Unter Verwendung des betreffenden Warteschlangen- und Einplanungsmechanismus weist eine Funktion 326 eine herkömmliche Anweisung einem CCN zu.
  • Eine in eine Warteschlange gestellte oder eingeplante q-Anweisung wird in dem QCCN 310 ausgeführt und erzeugt Ausgabesignale 328 (q-Signale). Eine in eine Warteschlange gestellte oder eingeplante herkömmliche q-Anweisung wird in dem CCN 312 ausgeführt und erzeugt herkömmliche Signale 330.
  • Eine Hardware-Kette 332 führt eine Funktion 334 durch. Die Funktion 334 enthält eine Signalmessung, Fehlerbehandlung, Demodulation, Digitalisierung oder eine wie auch immer geartete Kombination hiervon. Die Funktion 334 erzeugt ein oder mehrere q-Resultate.
  • Eine Nachverarbeitungsfunktion 336 und eine Funktion 338 für die optionale Fehlerbehandlung auf Software-Grundlage verarbeiten wie bereits beschrieben die q-Resultate. Eine Funktion 340 kombiniert die nachverarbeiteten q-Resultate und die herkömmlichen Resultate 330. Eine Funktion 342 überträgt die kombinierten endgültigen Resultate als das Verarbeitungsergebnis des Job 306.
  • In Bezug auf 4 stellt diese Figur ein Blockschaubild einer Anwendung für eine Job-Verarbeitung in Cloud-Umgebungen mit Quanten-Computing-Fähigkeit gemäß einer veranschaulichenden Ausführungsform dar. Eine Anwendung 402 realisiert die für die Anwendung 302 aus 3 dargestellten und beschriebenen Funktionen.
  • Ein Job-Übergebender 404 übergibt einen Job 406 an eine QCE wie z.B. die QCE 304 aus 3. Konkret verwendet der Übergebende 404 eine Anwendungsprogrammierschnittstelle (Application Programming Interface, API) 408, die durch die Anwendung 402 bereitgestellt wird. Ein Job 406 ist ein Beispiel für den Job 306 aus 3.
  • Eine Komponente 410 führt Quantenvorbereitungsfunktionen durch, z.B. die Identifizierung eines für eine Quantenverarbeitung geeigneten Abschnitts (q-Abschnitt) des Jobs 404, eine Ermittlung der Fehlertoleranzinstrumentierung und eine Konfiguration der Fehlerbehandlung. Eine Controller-Komponente 412 kompiliert gemeinsam mit einem Quanten-Compiler (q-Compiler) 414 den q-Abschnitt. Der Q-Compiler 414 ist konfiguriert, um Anweisungen für ein Quanten-Computing in einer geeigneten Quantenanweisungssprache wie z.B. QASM zu erzeugen, zu übersetzen oder zu optimieren. Die Controller-Komponente 412 verwendet außerdem einen (nicht gezeigten) geeigneten herkömmlichen Compiler, um unter einem oder mehreren hier beschriebenen Umständen herkömmliche Anweisungen zu kompilieren.
  • Eine Einplanungskomponente 416 stellt die q-Anweisungen für eine Ausführung eines QCCN in eine Warteschlange oder plant sie dafür ein. Wenn auch herkömmliche Anweisungen kompiliert werden, stellt die Einplanungskomponente 416 auch die herkömmlichen Anweisungen für eine Ausführung eines CCNs in eine Warteschlange oder plant sie dafür ein.
  • Ein q-Prozessor 418 berechnet eine q-Anweisung und erzeugt ein Ausgabesignal. Eine Hardware-Kette 420 verarbeitet das Ausgabesignal und erzeugt ein q-Resultat. Eine Komponente 422 erhält das q-Resultat von der Hardware-Kette 420 und verwendet ein oder mehrere Modelle wie z.B. ein statistisches Modell 424, um das q-Resultat nachzuverarbeiten.
  • Optional führt eine Komponente 426 eine Fehlerbehandlung des q-Resultats auf Software-Grundlage durch. Eine Komponente 428 kombiniert etwaige herkömmliche Resultate mit den nachverarbeiteten q-Resultaten und erstellt ein endgültiges Resultat 430. Eine Komponente 428 überträgt das endgültige Resultat 430 an den Job-Übergebenden 404.
  • In Bezug auf 5 stellt diese Figur einen Ablaufplan eines Teils eines Prozesses für eine Job-Verarbeitung in Cloud-Umgebungen mit Quanten-Computing-Fähigkeit gemäß einer veranschaulichenden Ausführungsform dar. Ein Prozess 500 kann in der Anwendung 402 aus 4 realisiert sein.
  • Eine Anwendung identifiziert aus einem übergebenen Cloud-Computing-Job einen Abschnitt, der von einem Quanten-Computing in der QCE profitieren wird (Block 502). Wenn der Job einen Abschnitt für eine herkömmliche Datenverarbeitung enthält, erzeugt, ändert oder optimiert die Anwendung herkömmliche Anweisungen für eine Ausführung in einem CCN in der QCE (Block 504). Die Anwendung plant die herkömmlichen Anweisungen in dem CCN ein und führt sie darin aus (Block 506). Die Anwendung beendet den Prozess 500 über einen Ausstiegspunkt „A“, um über einen entsprechenden Einstiegspunkt „A“ in den Prozess 600 einzusteigen.
  • Wenn in Schritt 502 ein q-Abschnitt identifiziert wurde, kompiliert die Anwendung den q-Abschnitt in q-Anweisungen (Block 508). Der Kompilierungsprozess kann eine Kombination aus Teilschritten 510, 512, 514, 516, 518 und anderen Teilschritten mit einem ähnlichen Zweck enthalten, die für einen Fachmann aus dieser Offenbarung offensichtlich sind. Zum Beispiel wählt der Teilschritt 510 eine geeignete Anzahl von Qubits für eine q-Anweisung aus. Wenn der gesamte q-Abschnitt nicht mittels Quanten-Computing verarbeitet werden sollte oder kann, sendet der Teilschritt 512 einen Teilabschnitt des q-Abschnitts für eine herkömmliche Datenverarbeitung an den Block 504. Ein Teilschritt 514 wählt eine Art von Quantenoperation aus, die in einer q-Anweisung durchgeführt werden soll. Ein Teilschritt 516 setzt eine Fehlerquotentoleranz der q-Anweisung fest. Ein Teilschritt 518 ändert oder optimiert die Anzahl von Qubits, die Arten von q-Operationen und den Wert der Fehlerquote, um den Qubits, den Operationen und der Fehlerquote eines bestimmten QCCN zu entsprechen, der in der QCE verfügbar ist.
  • Die Anwendung weist die q-Anweisung dem bestimmten QCCN zu, der in dem Kompilierungsschritt 508 verwendet wird (Block 520). Die Anwendung plant die q-Anweisung für eine Ausführung in dem ausgewählten QCCN ein (Block 522). Die Anwendung führt die q-Anweisung in dem QCCN aus (Block 524). Die Anwendung beendet den Prozess 500 über den Ausstiegspunkt „A“, um über den entsprechenden Einstiegspunkt „A“ in den Prozess 600 einzusteigen.
  • In Bezug auf 6 stellt diese Figur einen Ablaufplan eines weiteren Teils eines Prozesses für eine Job-Verarbeitung in Cloud-Umgebungen mit Quanten-Computing-Fähigkeit gemäß einer veranschaulichenden Ausführungsform dar. Der Prozess 500 kann in der Anwendung 402 aus 4 realisiert sein.
  • Die Anwendung erhält ein herkömmliches Resultat von einer beliebigen herkömmlichen Datenverarbeitung, die in dem Prozess 500 unter Umständen durchgeführt wurde (Block 602). Die Anwendung erhält ein Ausgabesignal (q-Signal) von der Verarbeitung der q-Anweisung in dem ausgewählten QCCN (Block 604).
  • Die Anwendung führt eine Signalmessung (Block 606), eine optionale Fehlerbehandlung auf Hardware-Grundlage (Block 608), eine Demodulation des Signals (Block 610) und eine Digitalisierung des demodulierten Signals durch (Block 612) aus. Die Anwendung berechnet ein nachverarbeitetes q-Resultat (Block 614). Die Anwendung führt optional eine Fehlerbehandlung auf Software-Grundlage durch, sofern dies unter den hier beschriebenen Umständen notwendig ist (Block 616). Die Anwendung erzeugt somit ein verarbeitetes q-Resultat (Block 618), das mit einem herkömmlichen Resultat kombiniert werden kann, sofern ein solches vorhanden ist (Block 620).
  • Die Anwendung erzeugt aus der Kombinationsoperation ein endgültiges Resultat (Block 622). Die Anwendung überträgt das endgültige Resultat an das Job-Übergabesystem (Block 624). Danach beendet die Anwendung den Prozess 600.
  • Somit werden in den veranschaulichenden Ausführungsformen ein durch einen Computer realisiertes Verfahren, System bzw. eine durch einen Computer realisierte Vorrichtung sowie ein Computerprogrammprodukt für eine Job-Verarbeitung in Cloud-Umgebungen mit Quanten-Computing-Fähigkeit und andere damit zusammenhängende Merkmale, Funktionen bzw. Operationen bereitgestellt. Wo eine Ausführungsform oder ein Teil davon in Bezug auf eine Art von Einheit beschrieben ist, sind das durch einen Computer realisierte Verfahren, System bzw. die durch einen Computer realisierte Vorrichtung, das Computerprogrammprodukt oder ein Teil davon für eine Verwendung mit einer geeigneten und vergleichbaren Ausprägung dieser Art von Einheit angepasst oder konfiguriert.
  • Wo eine Ausführungsform als in einer Anwendung realisiert beschrieben ist, gilt die Bereitstellung der Anwendung in einem SaaS-Modell (Software as a Service) als innerhalb des inhaltlichen Umfangs der veranschaulichenden Ausführungsformen liegend. In einem SaaS-Modell wird die Fähigkeit der eine Ausführungsform realisierenden Anwendung einem Nutzer bereitgestellt, indem die Anwendung in einer Cloud-Infrastruktur ausgeführt wird. Der Nutzer kann unter Verwendung einer Vielfalt von Client-Einheiten über eine Thin-Client-Schnittstelle wie z.B. einen Web-Browser (z.B. eine eMail-Nachricht auf Web-Grundlage) oder andere leichtgewichtige Client-Anwendungen auf die Anwendung zugreifen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, die Server, die Betriebssysteme oder den Speicher der Cloud-Infrastruktur. In manchen Fällen kann der Nutzer nicht einmal die Fähigkeiten der SaaS-Anwendung verwalten oder steuern. In manchen anderen Fällen kann die SaaS-Realisierung der Anwendung eine mögliche Ausnahme in Gestalt von eingeschränkten, nutzerspezifischen Anwendungskonfigurationseinstellungen gestatten.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt mit einem beliebigen möglichen Grad an technischer Integration handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) enthalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit enthalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Compact-Disc-Nur-Lese-Speicher (CD-ROM), eine DVD (Digital Versatile Disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium einschließlich, ohne darauf beschränkt zu sein, von hierin verwendeten, durch einen Computer lesbarer Speichereinheiten, soll nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction Set Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandseinstellende Daten, Konfigurationsdaten für eine integrierte Schaltung oder sowohl um Quellcode als auch um Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, Field Programmable Gate Arrays) oder programmierbare Logikanordnungen (PLA, Programmable Logic Arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.

Claims (23)

  1. Verfahren, aufweisend: ein Feststellen einer Kompatibilität zwischen einer Konfiguration eines Quantenprozessors (q-Prozessor) eines Quanten-Cloud-Rechenknotens (Quantum Cloud Compute Node, QCCN) in einer Quanten-Cloud-Umgebung (Quantum Cloud Environment, QCE) und einer Operation, die in einer ersten Anweisung in einem Abschnitt (q-Abschnitt) eines Jobs angefordert wird, der an die QCE übergeben wird, wobei die QCE den QCCN und einen herkömmlichen Rechenknoten (Conventional Compute Node, CCN) aufweist, wobei der CCN einen herkömmlichen Prozessor aufweist, der für binäre Berechnungen konfiguriert ist; als Reaktion auf das Feststellen ein Erzeugen einer Quantenanweisung (q-Anweisung), die der ersten Anweisung entspricht; ein Ausführen der q-Anweisung durch Verwenden des q-Prozessors des QCCN, um ein Quantenausgabesignal (q-Signal) zu erzeugen; ein Umwandeln des q-Signals in ein entsprechendes Quanten-Computing-Resultat (q-Resultat); und ein Zurückgeben eines endgültigen Resultats an ein Übergabesystem, das den Job übergeben hat, wobei das endgültige Resultat das q-Resultat aufweist.
  2. Verfahren nach Anspruch 1, des Weiteren aufweisend: ein Korrigieren eines Fehlers in dem q-Signal durch Verwenden von dem q-Prozessor zugehöriger Hardware, um ein korrigiertes q-Signal zu erzeugen.
  3. Verfahren nach einem der vorangegangenen Ansprüche, des Weiteren aufweisend: ein Demodulieren des q-Signals; ein Digitalisieren des q-Signals; und ein Gewinnen eines anfänglichen Quanten-Computing-Resultats (anfängliches q-Resultat) aus dem digitalisierten q-Signal.
  4. Verfahren nach Anspruch 3, des Weiteren aufweisend: ein Nachverarbeiten des anfänglichen q-Resultats, wobei das Nachverarbeiten ein Anwenden eines statistischen Modells auf das anfängliche q-Resultat aufweist, um ein neues q-Resultat zu erhalten, und wobei das q-Resultat mit einer über einem Schwellenwert liegenden Wahrscheinlichkeit ein durch den q-Prozessor berechnetes korrektes Resultat ist.
  5. Verfahren nach einem beliebigen der vorangegangenen Ansprüche, wobei die q-Anweisung durch Verwenden einer Quantenanweisungssprache codiert wird.
  6. Verfahren nach Anspruch 5, wobei die Quantenanweisungssprache die Quantum Assembly Language (QASM) aufweist.
  7. Verfahren nach einem beliebigen der vorangegangenen Ansprüche, des Weiteren aufweisend: als Reaktion auf ein Ermitteln, dass eine zweite Anweisung in dem q-Abschnitt mit einer Quanten-Computing-Konfiguration eines q-Prozessors in dem QCCN inkompatibel ist, ein Erzeugen einer herkömmlichen Anweisung, die der zweiten Anweisung entspricht; und ein Ausführen der herkömmlichen Anweisung in dem CCN in der QCE.
  8. Verfahren nach Anspruch 7, des Weiteren aufweisend: ein Erhalten eines herkömmlichen Resultats aus dem Ausführen der herkömmlichen Anweisungen in dem CCN; und ein Kombinieren des herkömmlichen Resultats mit dem q-Resultat, um das endgültige Resultat zu erzeugen.
  9. Verfahren nach einem beliebigen der vorangegangenen Ansprüche, des Weiteren aufweisend: ein Erzeugen einer herkömmlichen Anweisung, die einer Anweisung in einem zweiten Abschnitt in dem Job entspricht; und ein Einplanen der herkömmlichen Anweisung für eine Ausführung in dem CCN in der QCE.
  10. Verfahren nach Anspruch 1, wobei der QCCN einer aus einem Satz von QCCNs ist, die in der QCE betrieben werden, und wobei der CCN einer aus einem Satz von CCNs ist, die in der QCE betrieben werden.
  11. Verfahren nach einem beliebigen der vorangegangenen Ansprüche, wobei die Konfiguration des q-Prozessors eine Anzahl von Qubits aufweist, die in dem q-Prozessor verfügbar sind, und wobei das Feststellen ein Ermitteln aufweist, dass die Operation durch Verwenden der Anzahl von Qubits durchführbar ist.
  12. Verfahren nach einem beliebigen der vorangegangenen Ansprüche, wobei die Konfiguration des q-Prozessors eine Art von Operation aufweist, die durch den q-Prozessor durchgeführt wird, und wobei das Feststellen ein Ermitteln aufweist, dass die in der ersten Anweisung angeforderte Operation durch Verwenden einer zweiten Operation durchführbar ist, die in dem q-Prozessor konfiguriert ist, wobei die zweite Operationen einen Satz von Qubits verwendet.
  13. Verfahren nach einem beliebigen der vorangegangenen Ansprüche, wobei die Konfiguration des q-Prozessors eine Fehlerquote in dem durch den q-Prozessor erzeugten q-Signal aufweist, und wobei das Feststellen ein Ermitteln aufweist, dass eine Fehlertoleranz des q-Abschnitts mindestens gleich der Fehlerquote ist.
  14. Verfahren nach einem beliebigen der vorangegangenen Ansprüche, des Weiteren aufweisend: Identifizieren des q-Abschnitts in dem Job durch Verwenden einer dem q-Abschnitt zugehörigen Angabe, wobei sich die Angabe auf eine Eignung des q-Abschnitts für ein Quanten-Computing bezieht.
  15. Verfahren nach einem beliebigen der Ansprüche 1 bis 14, des Weiteren aufweisend: ein Identifizieren des q-Abschnitts in dem Job durch Verwendender in der ersten Anweisung angeforderten Operation, wobei die Operation in dem QCCN durch Verwendendes q-Prozessors konfiguriert wird.
  16. Quanten-Cloud-Umgebung (QCE), aufweisend: einen Quanten-Cloud-Rechenknoten (QCCN), der einen Quantenprozessor (q-Prozessor) aufweist; einen herkömmlichen Rechenknoten (CNN), der einen herkömmlichen Prozessor aufweist, der für binäre Berechnungen konfiguriert ist; und einen durch einen Computer verwendbaren Programmcode, der bei Ausführung durch Verwendendes herkömmlichen Prozessors Funktionen verursacht, aufweisend: ein Feststellen einer Kompatibilität zwischen einer Konfiguration des q-Prozessors der QCCN und einer Operation, die in einer ersten Anweisung in einem Abschnitt (q-Abschnitt) eines Jobs angefordert wird, der an die QCE übergeben wird, wobei die QCE den QCCN und einen herkömmlichen Rechenknoten (CCN) aufweist; als Reaktion auf das Feststellen ein Erzeugen einer Quantenanweisung (q-Anweisung), die der ersten Anweisung entspricht; ein Ausführen der q-Anweisung durch Verwendendes q-Prozessors des QCCN, um ein Quantenausgabesignal (q-Signal) zu erzeugen; ein Umwandeln das q-Signals in ein entsprechendes Quanten-Computing-Resultat (q-Resultat); und ein Zurückgeben eines endgültigen Resultats an ein Übergabesystem, das den Job übergeben hat, wobei das endgültige Resultat das q-Resultat aufweist.
  17. QCE nach Anspruch 16, wobei die Funktionen des Weiteren aufweisen: ein Korrigieren eines Fehlers in dem q-Signal durch Verwenden von dem q-Prozessor zugehöriger Hardware, um ein korrigiertes q-Signal zu erzeugen.
  18. QCE nach einem der Ansprüche 16 oder 17, wobei die Funktionen des Weiteren aufweisen: ein Demodulieren des q-Signals; ein Digitalisieren des q-Signals; und ein Gewinnen eines anfänglichen Quanten-Computing-Resultats (anfängliches q-Resultat) aus dem digitalisierten q-Signal.
  19. QCE nach Anspruch 18, wobei die Funktionen des Weiteren aufweisen: ein Nachverarbeiten des anfänglichen q-Resultats, wobei das Nachverarbeiten ein Anwenden eines statistischen Modells auf das anfängliche q-Resultat aufweist, um ein neues q-Resultat zu erhalten, und wobei das q-Resultat mit einer über einem Schwellenwert liegenden Wahrscheinlichkeit ein durch den q-Prozessor berechnetes korrektes Resultat ist.
  20. QCE nach einem beliebigen der Ansprüche 16 bis 19, wobei die q-Anweisung durch Verwenden einer Quantenanweisungssprache codiert wird.
  21. QCE nach Anspruch 20, wobei die Quantenanweisungssprache die Quantum Assembly Language (QASM) aufweist.
  22. Computerprogrammprodukt für eine Quanten-Cloud-Umgebung (QCE), wobei das Computerprogrammprodukt aufweist: ein durch einen Computer lesbares Speichermedium, das durch eine Verarbeitungsschaltung lesbar ist und Anweisungen zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren nach einem beliebigen der Ansprüche 1 bis 15 durchzuführen.
  23. Computerprogrammprodukt, das auf einem durch einen Computer lesbaren Medium gespeichert und in den internen Speicher eines digitalen Computers ladbar ist, welches Software-Codeteile aufweist, um bei Ausführung des Programms auf einem Computer das Verfahren nach einem beliebigen der Ansprüche 1 bis 15 durchzuführen.
DE112017007772.9T 2017-09-29 2017-12-06 Job-verarbeitung in cloud-umgebungen mit quanten-computing-fähigkeit Pending DE112017007772T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/719,872 US10996979B2 (en) 2017-09-29 2017-09-29 Job processing in quantum computing enabled cloud environments
US15/719,872 2017-09-29
PCT/IB2017/057697 WO2019064055A1 (en) 2017-09-29 2017-12-06 WORK PROCESSING IN CLOUD ENVIRONMENTS ACTIVATED BY QUANTUM COMPUTING

Publications (1)

Publication Number Publication Date
DE112017007772T5 true DE112017007772T5 (de) 2020-04-16

Family

ID=65897233

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017007772.9T Pending DE112017007772T5 (de) 2017-09-29 2017-12-06 Job-verarbeitung in cloud-umgebungen mit quanten-computing-fähigkeit

Country Status (6)

Country Link
US (2) US10996979B2 (de)
JP (1) JP6975322B2 (de)
CN (1) CN111165052B (de)
DE (1) DE112017007772T5 (de)
GB (1) GB2581089A (de)
WO (1) WO2019064055A1 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018236925A1 (en) * 2017-06-19 2018-12-27 Rigetti & Co, Inc. QUANTICALLY DISTRIBUTED COMPUTING SYSTEM
US10871987B1 (en) * 2017-09-28 2020-12-22 Amazon Technologies, Inc. Distributed execution of tasks on client devices
US11087232B2 (en) * 2018-07-18 2021-08-10 IonQ, Inc. Quantum hybrid computation
US11568293B2 (en) 2018-07-18 2023-01-31 Accenture Global Solutions Limited Quantum formulation independent solver
US11245584B2 (en) * 2018-10-15 2022-02-08 Red Hat, Inc. Software defined network optimization using quantum computing
JP7538480B2 (ja) 2019-12-19 2024-08-22 Jsr株式会社 プログラム、計算機システム、及び計算機
CN111079704A (zh) * 2019-12-31 2020-04-28 厦门理工学院 一种基于量子计算的人脸识别方法及装置
US20220309374A1 (en) * 2020-02-18 2022-09-29 Jpmorgan Chase Bank, N.A. Systems and methods for using distributed quantum computing simulators
US20210374583A1 (en) * 2020-05-27 2021-12-02 Red Hat, Inc. Qubit allocation service
US11853848B2 (en) 2021-05-07 2023-12-26 International Business Machines Corporation Backend quantum runtimes
EP4352664A1 (de) 2021-06-11 2024-04-17 Seeqc Inc. System und verfahren zur flussvorspannung für supraleitende quantenschaltungen
US20230419378A1 (en) * 2022-06-27 2023-12-28 Dell Products L.P. Quantum accuracy score
US11880745B1 (en) 2022-08-30 2024-01-23 Red Hat, Inc. Noisy intermediate-scale quantum service analysis for cloud based support

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030121028A1 (en) 2001-12-22 2003-06-26 Michael Coury Quantum computing integrated development environment
US8983303B2 (en) * 2004-08-04 2015-03-17 The United States Of America As Represented By The Secretary Of The Army Quantum based information transfer system and method
KR100643283B1 (ko) 2004-10-13 2006-11-10 삼성전자주식회사 양자 코프로세서를 사용하여 연산 속도를 향상시키는 방법및 장치
JP4867009B2 (ja) * 2004-12-09 2012-02-01 国立大学法人 奈良先端科学技術大学院大学 量子コンピュータを含むコンピュータシステムのためのプログラム開発支援装置、プログラム開発支援用プログラム、及びシミュレーション装置
US20080313430A1 (en) 2007-06-12 2008-12-18 Bunyk Paul I Method and system for increasing quantum computer processing speed using digital co-processor
EP2477112A1 (de) 2010-12-29 2012-07-18 Basque Center for Applied Mathematics Verfahren zur wirksamen Planung in einem System für gemeinsame Ressourcen
US8776013B2 (en) 2011-10-03 2014-07-08 Resilient Science, Inc. Flow-optimization system and method for cloud computing
JP5921856B2 (ja) * 2011-11-28 2016-05-24 株式会社日立製作所 量子コンピュータシステム、量子コンピュータシステムの制御方法及びプログラム
US9727824B2 (en) * 2013-06-28 2017-08-08 D-Wave Systems Inc. Systems and methods for quantum processing of data
US20160320371A1 (en) 2015-03-19 2016-11-03 Fred Abraham Online diagnostic system with virtual medical assistance for the diagnosed disease utilizing nano-devices and quantum cloud computing
US10187814B2 (en) 2015-05-14 2019-01-22 Cable Television Laboratories, Inc. Systems and methods for hybrid wireless communication network
US10484479B2 (en) 2016-01-31 2019-11-19 QC Ware Corp. Integration of quantum processing devices with distributed computers
US9537953B1 (en) 2016-06-13 2017-01-03 1Qb Information Technologies Inc. Methods and systems for quantum ready computations on the cloud
US9870273B2 (en) 2016-06-13 2018-01-16 1Qb Information Technologies Inc. Methods and systems for quantum ready and quantum enabled computations
WO2018119522A1 (en) 2016-12-30 2018-07-05 1Qb Information Technologies Inc. Methods and systems for unified quantum computing frameworks
WO2018236925A1 (en) 2017-06-19 2018-12-27 Rigetti & Co, Inc. QUANTICALLY DISTRIBUTED COMPUTING SYSTEM
US10332023B2 (en) * 2017-09-22 2019-06-25 International Business Machines Corporation Hardware-efficient variational quantum eigenvalue solver for quantum computing machines
US10452990B2 (en) * 2017-11-28 2019-10-22 International Business Machines Corporation Cost function deformation in quantum approximate optimization
US10347605B2 (en) * 2017-11-28 2019-07-09 International Business Machines Corporation System and method for routing signals in complex quantum systems
US10263170B1 (en) * 2017-11-30 2019-04-16 International Business Machines Corporation Bumped resonator structure
US10803395B2 (en) * 2018-06-07 2020-10-13 International Business Machines Corporation Quantum computations of classical specifications
US10833384B2 (en) * 2018-06-27 2020-11-10 International Business Machines Corporation Thermalization of microwave attenuators for quantum computing signal lines
US10811588B2 (en) * 2018-08-06 2020-10-20 International Business Machines Corporation Vertical dispersive readout of qubits of a lattice surface code architecture
US10474960B1 (en) * 2018-10-25 2019-11-12 International Business Machines Corporation Approximate gate and supercontrolled unitary gate decompositions for two-qubit operations
US10491221B1 (en) * 2018-11-21 2019-11-26 International Business Machines Corporation Tunable microwave resonator for qubit circuits
US10755193B2 (en) * 2018-12-03 2020-08-25 International Business Machines Corporation Implementation of error mitigation for quantum computing machines
US10650322B1 (en) * 2018-12-13 2020-05-12 International Business Machines Corporation Multi-mode qubit readout and qubit state assignment
US10803215B2 (en) * 2018-12-18 2020-10-13 International Business Machines Corporation Incremental generation of quantum circuits
US10831455B2 (en) * 2019-01-07 2020-11-10 International Business Machines Corporation Quantum circuit compilation with quantum libraries as a service

Also Published As

Publication number Publication date
WO2019064055A1 (en) 2019-04-04
JP6975322B2 (ja) 2021-12-01
CN111165052B (zh) 2024-01-19
JP2020535517A (ja) 2020-12-03
US20190102220A1 (en) 2019-04-04
GB2581089A (en) 2020-08-05
US10996979B2 (en) 2021-05-04
US20220050710A1 (en) 2022-02-17
GB202006037D0 (en) 2020-06-10
CN111165052A (zh) 2020-05-15

Similar Documents

Publication Publication Date Title
DE112017007772T5 (de) Job-verarbeitung in cloud-umgebungen mit quanten-computing-fähigkeit
DE112011101633B4 (de) Virtualisierung und dynamische Ressourcenzuweisung berücksichtigendes Neuordnen von Speicherebenen
DE112019004076T5 (de) Dezentralisiertes verteiltes deep learning
DE112014002847B4 (de) Verwenden von Client-Ressourcen während Mobilitätsoperationen
DE112011100094T5 (de) Verfahren und System zum Abstrahieren eines auf nichtfunktionalen Anforderungen beruhenden Einsatzes von virtuellen Maschinen
DE112010003144T5 (de) Erweiterbare Grundstruktur zur Unterstützung verschiedener Einsatzarchitekturen
DE112020005323B4 (de) Elastische ausführung von machine-learning-arbeitslasten unter verwendung einer anwendungsbasierten profilierung
DE112018001156T5 (de) Skalierbare rechenzentrums-netzwerktopologie auf verteilter vermittlungseinheit
DE112021002820T5 (de) Dynamische automatisierung einer auswahl von pipeline-artefakten
DE112012002631T5 (de) Stream-Verarbeitung unter Verwendung einer Client-Server-Architektur
DE112013003300B4 (de) Schrittweise Vorbereitung von Videos auf die Lieferung
DE112021006595T5 (de) Benutzerkontextmigration basierend auf einem berechnungsdiagramm in einer künstlichen intelligenzanwendung, die in einer edge-computing-umgebung ausgeführt wird
DE112021003348B4 (de) Verwalten von datenübertragung zwischen mikrodiensten
DE112020004067T5 (de) Hybride daten-modell-parallelität für effizientes deep learning
DE102016104264A1 (de) Übertragen von Mehrfachzielpaketen in Overlay-Netzwerken
DE112020004760T5 (de) Steuern von interaktionen mit einer skalierbaren anwendung
DE112020006047T5 (de) Steuern von transaktionsanforderungen zwischen anwendungen und servern
DE102014116744B4 (de) Management von Informationstechnologieressourcen
DE112021001408T5 (de) Verwendung kohärent verbundener schnittstellen in einem netzwerkstapelrahmen
DE112021004577T5 (de) Verwalten eines aufgabenablaufs in einer edge-datenverarbeitungsumgebung
DE112018004138T5 (de) Asynchrone aktualisierung von metadatenspuren in reaktion auf einen mittels einer e/a-operation über eine busschnittstelle erzeugten cachetreffer
DE112022002736T5 (de) Übertragen von aufgabendaten zwischen edge-einheiten beim edge computing
DE112020003312T5 (de) Speicherzuweisungserweiterung von mikrodiensten
DE112019005392T5 (de) Steigern von datenleistung durch transferieren von daten zwischen speicherebenen unter verwendung von arbeitslastmerkmalen
DE112019004391T5 (de) Grossmodellunterstützung für deep learning

Legal Events

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

Free format text: PREVIOUS MAIN CLASS: H04W0072080000

Ipc: G06N0010000000