© Bartlomiej K. Wroblewski/Shutterstock.com
.NET für Quantenrechner – Teil 2

Quanten-Computing im Detail


Quantencomputer sind ein Thema, das seit Jahr und Tag durch die Welt der IT wandert. Im letzten Heft hatten wir uns die Grundlagen der Arbeit mit dem Microsoft Quantum Development Kit (QDK) angesehen, konnten aber aus Platzgründen nicht auf Details des Quanten-Computings eingehen. Das holen wir hier nach.

Quasi nebenbei wollen wir zunächst einen Blick auf Microsofts Cloud-Dienste werfen: Wir hatten im ersten Teil der Serie schon festgestellt, dass das Microsoftsche QDK sich nicht auf das Anbieten einer Programmiersprache zum Beschreiben von Quantencomputeralgorithmen beschränkt. Microsoft spielt vielmehr ein „Ökosystem-Play“, in dem es auch um das Bereitstellen von Quantencomputern als Service geht.

Quantencomputer, stundenweise mietbar

Am 2. Februar dieses Jahres wurde der Azure-Quantum-Dienst [1] in den Public-Preview-Zustand versetzt. Besonders interessant ist hier das in Abbildung 1 gezeigte Preisschema: Microsoft unterteilt in Evaluationsnutzung und produktive Berechnungen, um für zweitere Nutzungsweise wesentlich höhere Kosten einzutreiben. So fallen bei der produktiven Nutzung der Azure-Quantum-Dienste Mietkosten von bis zu 800 € pro Stunde (!!!) an!

hanna_qsharp_teil2_1.tif_fmt1.jpgAbb. 1: Achtung: Mietkosten

Der Einstieg in die bereitstehende Arbeitsumgebung [2] setzt dann die Erzeugung einer als Quantum Workspace bezeichneten Arbeitsumgebung voraus. Interessant ist, dass der Assistent auch das Anlegen eines Storage Accounts verlangt, in dem die für die Quantenalgorithmen benötigten Informationen unterkommen. Im nächsten Schritt offenbart sich dann des Pudels Kern – Abbildung 2 zeigt, welche Anbieter von Quantenrechenleistung zum Zeitpunkt der Drucklegung dieses Hefts zur Verfügung stehen.

hanna_qsharp_teil2_2.tif_fmt1.jpgAbb. 2: Anbieter von Quantenrechenleistung

Interessant ist, dass Microsoft zwei Arten von Providern anbietet. Quantum-Computing-Provider stehen für vollwertige Quantenrechner, die in Q# geschriebene Programme ausführen – ob die Ausführung dabei auf einem realen Quantencomputer oder aber durch Simulation der Qubits in Software erfolgt, ist von Provider zu Provider unterschiedlich. Unter „Optimization“ versteht Microsoft hybride Provider, die Quantenalgorithmen auf klassischer Hardware ausführen, einer gewöhnlichen CPU aber durch diverse Optimierungen (Stichwort FPGA) überlegen sind.

Dirac, ohne Impuls

Nach der Einrichtung verhält sich Azure Quantum im Prinzip wie jeder andere Azure-Dienst: Im ersten Schritt laden wir Services hoch, um im zweiten Schritt die Ergebnisse abzuernten und im dritten Schritt Geld an Microsoft zu überweisen. Interessanter ist es, wieder in die Theorie des Quanten-Computings zurückzukehren. Im letzten Artikel hatten wir uns den Bloch-Kreis angesehen – einen an Zeigerdiagramme erinnernden Weg, um den wahrscheinlichen Zustand zu beschreiben, den ein Qubit bei seiner als Kollabierung bezeichneten Auswertung annehmen wird.

Ein schönerer Weg zum Anschreiben des Zustands eines Quantensystems ist die Dirac- bzw. Bra-Ket-Notation, die witzigerweise nichts mit dem aus Regelungs- und Elektrotechnik bekannten Dirac-Impuls zu tun hat. Ein Ket beschreibt einen wahrscheinlichen Zustand eines Quantensystems. Abbildung 3 zeigt sowohl die etwas eigenwillige Schreibweise als auch die Rolle der beiden Kets, die eine Null und eine Eins darstellen.

hanna_qsharp_teil2_3.tif_fmt1.jpgAbb. 3: Kets sind ein kürzerer Weg zur Darstellung des Zustands eines Quantensystems

Ein weiterer Vorteil dieser Vorgehensweise ist, dass man nun die Wahrscheinlichkeit aller möglichen Zustände anschreiben und mit ihnen überlegen kann. Der in Teil 1 dieser Serie realisierte Zufallsgenerator hatte beispielsweise die Angewohnheit, entweder Null oder Eins zurückzuliefern. In der Ket-Notation lässt sich das wie in Abbildung 4 gezeigt darstellen.

hanna_qsharp_teil2_4.tif_fmt1.jpgAbb. 4: Am Ende steht immer … eine Eins

Die Bedingung dafür, dass die zweite Gleichung immer Eins ergibt, folgt aus der Logik – die Werte A und B sind komplexe Zahlen, die die Wahrscheinlichkeit des Einnehmens eines bestimmten Zustands im Quantensystem als Ganzes beschreiben. Die Darstellungsweise lässt sich mehr oder weniger nach Belieben auch auf kompliziertere Systeme anwenden. Die der Microsoft-Dokumentation entnommene Abbildung 5 zeigt beispielsweise, dass die Regel auch bei einem aus drei Qubits aufgebauten System gilt.

hanna_qsharp_teil2_5.tif_fmt1.jpgAbb. 5: Eine Steigerung der Systemkomplexität beeinflusst die Summe nicht [3]

Die Einführung der Ket-Notation ist kein mathematischer Selbstzweck. Sie ist vielmehr ein bequemer Weg zur Darstellung des Quantensystems und wird von Microsoft im QDK an vielerlei Stelle verwendet. Erzeugen wir deshalb in Visual Studio 2019 eine neue Solution und ergänzen wir sie im ersten Schritt um den folgenden Namespace:

open Microsoft.Quantum.Diagnostics;

Microsoft.Quantum.Diagnostics fügt unserem Programm eine Gruppe von Analysekommandos hinzu, die den in Qubits gespeicherten Zustand bequem in Richtung der Konsole übertragen. Zudem gibt es ein Message-Kommando, das das Ausgeben von Debug-Statusinformationen zur besseren Unterteilung der zu bearbeitenden Aufgaben ermöglicht.

Im nächsten Schritt wollen wir unseren Zufallsgenerator abermals aufbauen. Er besteht, wie im letzten Teil besprochen, aus der Erzeugung, der Parametrisierung und dem darauffolgenden Auslesen eines einzelnen Qubits (Listing 1).

Listing 1

@EntryPoint() operation GenerateRando...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang