Integrované hybridní výpočetní prostředí

Integrované hybridní výpočetní prostředí spojuje klasické a kvantové procesy a umožňuje klasickému kódu řídit provádění kvantových operací na základě měření mezi okruhy, zatímco fyzické qubity zůstanou aktivní. Pomocí běžných programovacích technik, jako jsou vnořené podmínky, smyčky a volání funkcí, může jeden kvantový program spouštět složité problémy, což snižuje počet potřebných snímků. Pomocí technik opětovného použití qubitu můžou větší programy běžet na počítačích s menším počtem qubitů.

Důležité

Integrované hybridní kvantové výpočty v současné době nepodporuje moderní Quantum Development Kit rozšíření (moderní sada QDK) pro Visual Studio Code ani další komponenty v příkladech na této stránce, jako je jádro IQ# , %azure příkaz Magic nebo qsharp.azure modul. Ke spouštění integrovaných hybridních úloh použijte sadu Microsoft Quantum Development Kit (Classic QDK). Další informace najdete v tématu Pokračování práce v klasické sadě QDK.

Další informace najdete tady:

Integrované hybridní kvantové výpočty

Podporovány targets

V současné době se integrovaný model hybridního výpočetního prostředí v Azure Quantum podporuje ve službě Quantinuumtargets.

Quantinuum

Podporovaná funkce Poznámky
Klasické smyčky Pouze ohraničené smyčky
Tok libovolného řízení Použití větvení if/else
Měření středního okruhu Využívá prostředky klasické registrace.
Opakované použití Qubitu
Klasické výpočetní prostředky v reálném čase 32bitová celočíselná aritmetika bez znaménka
Využívá prostředky klasické registrace.

Začínáme

Pokud chcete začít zkoumat integrované hybridní programování, doporučujeme projít si ukázky v tomto článku nebo prozkoumat kartu Hybridní kvantové výpočty v galerii ukázek portálu Azure Quantum.

Odesílání integrovaných hybridních úloh

Když odesíláte integrovanou hybridní úlohu, musíte target po zadání targetpřidat parametr schopnosti . Kromě toho se integrované hybridní programy v Azure Quantum spouštějí a spravují stejně jako běžné kvantové úlohy. Každá úloha má jedno ID úlohy a výsledkem je jeden histogram.

Důležité

Integrované hybridní kvantové výpočty v současné době nepodporuje moderní Quantum Development Kit rozšíření (moderní sada QDK) pro Visual Studio Code ani další komponenty v příkladech na této stránce, jako je jádro IQ# , %azure příkaz Magic nebo qsharp.azure modul. Ke spouštění integrovaných hybridních úloh použijte sadu Microsoft Quantum Development Kit (Classic QDK). Další informace najdete v tématu Pokračování práce v klasické sadě QDK.

IQ#

Při použití jádra IQ# v Jupyter Notebook použijte %azure.targetPříkaz magic -capability s parametrem AdaptiveExecution .

%azure.target quantinuum.sim.h1-1e
%azure.target-capability AdaptiveExecution

Python + Q#

Při použití balíčku Python qsharp použijte qsharp.azure.target_capability funkci s parametrem AdaptiveExecution .

qsharp.azure.target("quantinuum.sim.h1-1e")
qsharp.azure.target_capability("AdaptiveExecution")

Azure CLI

Pokud k odeslání úlohy používáte Azure CLI, přidejte --target-capability parametr s hodnotou AdaptiveExecution.

az quantum job submit \
    --target-capability AdaptiveExecution \
    --target-id quantinuum.sim.h1-1e \
    --job-name IterativePhaseEstimation \
    --shots 100 \
    --output table

Odesílání integrovaných hybridních úloh v rámci relace

V rámci relace můžete kombinovat několik integrovaných hybridních úloh pomocí Q# a Pythonu. Při odesílání relace přidejte targetCapability vstupní parametr s hodnotou AdaptiveExecution.

with target.open_session(name="Q# session") as session:
    target.submit(input_data=QuantumOperation, name="Job 1", input_params={"count":100, "targetCapability":"AdaptiveExecution"}) # First job submission
    target.submit(input_data=QuantumOperation, name="Job 2", input_params={"count":200, "targetCapability":"AdaptiveExecution"}) # Second job submission
    target.submit(input_data=QuantumOperation, name="Job 3", input_params={"count":300, "targetCapability":"AdaptiveExecution"}) # Third job submission

Další informace najdete v tématu Začínáme s relacemi.

Poznámka

Přestože jsou relace k dispozici pro všechny poskytovatele hardwaru kvantových výpočtů, všimněte si, že integrované hybridní úlohy kvantových výpočtů jsou v současné době podporovány v Quantinuum targets.

Odhad nákladů na integrovanou hybridní úlohu

Náklady na spuštění integrované hybridní úlohy na hardwaru Quantinuum můžete odhadnout tak, že ji nejprve spustíte v emulátoru.

Po úspěšném spuštění emulátoru:

  1. V pracovním prostoru Azure Quantum vyberte Správa úloh.
  2. Vyberte úlohu, kterou jste odeslali.
  3. V místní nabídce Podrobnosti o úloze vyberte Odhad nákladů a zobrazte, kolik účtů eHQCs (kredity emulátoru Quantinuum) se použilo. Toto číslo se překládá přímo na počet HQC (kvantové kredity Quantinuum), které jsou potřeba ke spuštění úlohy na hardwaru Quantinuum.

Odhad nákladů

Poznámka

Quantinuum zruší registraci celého okruhu a vypočítá náklady na všechny cesty kódu bez ohledu na to, jestli se spouštějí podmíněně, nebo ne.

Integrované hybridní ukázky

Následující ukázky ukazují aktuální sadu funkcí pro integrovaný hybridní computing.

  • Ověření stavu propletené GHZ
  • Opakování tří qubitů
  • Odhad iterativní fáze

Požadavky

  • Pokud se službou Azure Quantum začínáte, budete potřebovat předplatné Azure a pracovní prostor Azure Quantum, abyste mohli spouštět ukázky na kvantovém hardwaru. Další informace najdete v tématu Vytvoření pracovního prostoru Azure Quantum.
  • VS Code a Quantum Development Kit nastavení v místním prostředí. Další informace najdete v tématu Nastavení .Quantum Development Kit
  • Ujistěte se, že VS Code obsahuje nejnovější verzi Quantum Development Kit (0.27.258160).
    • Ve VS Code vyberte Ctrl + Shift + X a vyhledejte "Microsoft Quantum Development Kit".

Ukázky v tomto článku jsou nastavené tak, aby běžely v sadě Visual Studio (VS) Code a k odeslání úlohy do Azure Quantum se používají integrované rozhraní příkazového řádku Azure (CLI). Pokud chcete spustit Jupyter Notebook verzi těchto a dalších ukázek, přihlaste se ke svému pracovnímu prostoru Azure Portal a prohlédněte si ukázky na kartě Hybridní kvantové výpočty v galerii ukázek. Poznámkový blok můžete spustit v cloudu nebo si ho stáhnout a spustit místně.

Informace o řešení potíží s integrovanými hybridními programy najdete v tématu Řešení potíží s integrovaným hybridním nasazením.

V této ukázce zjistíte, jak kombinovat klasické a kvantové instrukce ve stejném programu, všechny plně zpracované back-endem kvantových výpočtů.

Funkce, které je potřeba si všimnout o této ukázce:

  • Měření smyčky a qubitu probíhá v době, kdy qubity zůstávají koherentní.
  • Rutina kombinuje klasické a kvantové výpočetní operace.
  • Nemusíte se učit programovat pro specializovaný vysoce výkonný hardware spuštěný vedle QPU (například FPGA).
  • Spuštění ekvivalentního programu bez integrovaných hybridních funkcí by vyžadovalo vrácení všech průběžných výsledků měření a následné zpracování dat.

Vytvoření projektu VS Code

  1. Ve VS Code vytvořte nový Q# samostatný projekt konzolové aplikace s názvem CheckGHZ.

    1. Select View > Command Palete >Q#: Create new project > Standalone console application
  2. Nahraďte konfiguraci v souboru CheckGHZ.csproj následujícím kódem:

    <Project Sdk="Microsoft.Quantum.Sdk/0.27.258160">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <ExecutionTarget>quantinuum</ExecutionTarget>
        <TargetCapability>AdaptiveExecution</TargetCapability>
      </PropertyGroup>
    </Project>
    
  3. Nahraďte kód v souboru Program.qs následujícím kódem:

    namespace Microsoft.Quantum.Samples {
    
        open Microsoft.Quantum.Measurement;
        open Microsoft.Quantum.Intrinsic;
    
        /// # Summary
        /// Counts the number of times measurements of a prepared GHZ state did not match the expected correlations.
        @EntryPoint() // The EntryPoint attribute is used to mark that this operation is where a quantum program will start running.
        operation CheckGHZ() : Int {
            use q = Qubit[3];
            mutable mismatch = 0;
            for _ in 1..10 {
                // Prepare the GHZ state.
                H(q[0]);
                CNOT(q[0], q[1]);
                CNOT(q[1], q[2]);
    
                // Measures and resets the 3 qubits
                let (r0, r1, r2) = (MResetZ(q[0]), MResetZ(q[1]), MResetZ(q[2]));
    
                // Adjusts classical value based on qubit measurement results
                if not (r0 == r1 and r1 == r2) {
                    set mismatch += 1;
                }
            }
            return mismatch;
        }
    }
    
  4. Z okna terminálu ve VS Code se připojte k pracovnímu prostoru Azure Quantum a nastavte výchozí prostředky.

    az login
    

    Poznámka

    ID předplatného Azure, skupinu prostředků a název pracovního prostoru můžete po přihlášení uvést v okně terminálu spuštěním příkazu az quantum workspace list. Případně je můžete najít v Azure Portal na stránce Přehled pracovního prostoru Azure Quantum.

    az account set --subscription <MySubscriptionID>
    
    az quantum workspace set --resource-group <MyResourceGroup> --workspace <MyWorkspace> --location <MyLocation>
    
  5. Odešlete úlohu a prohlédněte si výsledky. Toto spuštění používá přibližně 10,65 eHQCs (fakturační jednotky emulátoru Quantinuum).

    az quantum job submit \
      --target-id quantinuum.sim.h1-1e \
      --job-name CheckGHZ \
      --target-capability AdaptiveExecution \
      --shots 50
    
    az quantum job output \
      -o table \
      --job-id [job-id]
    

Výstup GHZ

Další kroky

Distribuované hybridní výpočetní prostředí