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:
- Granade & Weibe, "Using Random Walks for Iterative Phase Estimation" (Použití náhodných procházek k odhadu iterativní fáze).
- Lubinski a kol., "Rozvoj hybridních kvantových a klasických výpočtů s Real-Time prováděním"
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:
- V pracovním prostoru Azure Quantum vyberte Správa úloh.
- Vyberte úlohu, kterou jste odeslali.
- 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.
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
Ve VS Code vytvořte nový Q# samostatný projekt konzolové aplikace s názvem CheckGHZ.
- Select View > Command Palete >Q#: Create new project > Standalone console application
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>
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; } }
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>
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]
Další kroky
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro