量子動力學描述了復雜的量子系統如何隨時間演變并與其周圍環境相互作用。模擬量子動力學極其困難,但對于了解和預測材料的基本特性至關重要。這在開發 量子處理單元(QPUs) 中尤為重要,量子動力學模擬使 QPUs 開發者能夠了解其硬件的物理特性并改進其硬件。
量子動力學模擬與用于研究未來量子算法運行方式的主流電路模擬有所不同。電路模擬模擬了離散量子邏輯門應用下量子位的演變。這種簡化視圖將量子位與其周圍環境的交互方式進行了理想化,從而排除了對真實噪音和其他因素的考慮。相比之下,量子動力學模擬全面地反映了量子系統如何隨時間演變,揭示了量子過程的速度和準確性的基本限制。
為進行經典類比,可以使用應用于晶體管(抽象表示為 0 和 1)的二進制邏輯(AND、OR、XOR)對經典計算機的邏輯進行建模。然而,為了設計速度更快、性能更高的晶體管,電氣工程師需要運行能夠完全模擬設備物理特性的復雜模型,包括電壓、電容和電流的波動。
設計更好的量子位和 QPU 也遵循同樣的邏輯,模擬動力學模擬可以完全捕捉 QPU 的物理特性。這是晶體管物理建模的量子等效性。

動力學模擬具有極高的計算要求。隨著 QPU 規模的增加,它們只有通過 GPU 超級計算加速才可行。
NVIDIA 現在提供的工具可以讓所有 QPU 研究人員和開發者使用 GPU 加速的量子動力學模擬。 NVIDIA CUDA-Q 平臺 內置的新動力學 API 可與許多預打包求解器(用于求解基礎微分方程的工具)結合使用,或者研究人員可以直接利用強大的代碼驅動 CUDA-Q 動力學計算,并使用 低級 NVIDIA cuQuantum SDK 庫 圍繞自己的自定義求解器開發量子動力學模擬器。
本文將探討 Google 如何使用 CUDA-Q 功能來模擬其 QPU 組件。它還對 CUDA-Q 動力學和 cuQuantum 驅動模擬的性能進行了基準測試,并提供了使用 CUDA-Q 進行動力學計算的入門指南。
加速 Google 的量子計算研發?
Google 與 NVIDIA 合作,加速其求解器運行模擬,以指導其 QPU 開發。準確的模擬可以作為 QPU 的數字表示,并且通常可以避免在設計過程中進行昂貴或不切實際的實驗。Google 開發了自己的求解器,并利用了低級 cuQuantum 庫提供的動態 API。
Google 和 NVIDIA 已經使用動態模擬來探索兩個初始系統。第一個是海森堡模型(Heisenberg model)自旋鏈,Google QPU 在模擬模式下運行。該系統模擬的準確結果為對 Google 的 QPU 進行基準測試以及確定處于模擬模式時運行的前景廣闊的應用程序提供了依據。第二個是與共振器和 Purcell 濾波器合的超導量子位(transmon qubit),這是一個關鍵子系統,阻礙了超導量子位的測量速度。
利用 cuQuantum Dynamics API 提供的多 GPU、多節點功能,完成了 40 量子位的自旋鏈模擬(圖 2)。該模擬在 NVIDIA Eos AI 超級計算機上使用了 1,024 個 NVIDIA H100 GPU。這是迄今為止執行的規模最大的 QPU 精確動態模擬,為 Google 探索以前難以駕馭的系統打開了大門。
在圖 2 中,亮藍色和黃色點表示應用于單個量子位的測量結果的頻率不斷增加,從而創建測量引起的相位過渡以及由此產生的局部量子態。

Google 的研究結果表明,多節點、多 GPU 的功能可以將模擬應用于此前研究人員難以解決的問題規模。隨著 GPU 的增加,該軟件表現出令人印象深刻的強擴展性。
圖 3 顯示了主方程評估運行時,用于模擬多達 64 個電平的 transmon 量子比特與多達 256 個電平的共振器以及具有四個電平 (64、256、4) 的 Purcell 濾波器,同時增加 GPU 數量。假設工作流程為 100 個時間步長 (使用 RK4 集成時,每個時間步長 4 個操作,共執行 400 個操作員操作),從使用 Qiskit Dynamics (在雙插槽英特爾 Xeon 8480CL 上運行) 時的超過 12 天縮短到使用 cuQuantum (使用八個 GPU 進行最大系統基準測試) 時的 2 分鐘。
此模擬的結果直接有利于 Google 的硬件開發周期。通過更快地模擬設備的更大單元,Google 可以在制造前更好地識別出更有前景的設計,從而節省大量的時間和資源。

使用 CUDA-Q 加速量子動力學?
CUDA-Q 還提供了額外的功能,可以使用自己的內置求解器完全模擬整個工作流程,包括使用時間積分器求解 Lindblad 主方程。使用 CUDA-Q 在單個 NVIDIA H100 GPU 上提供的求解器,對 N 個量子位 的自旋鏈進行了單個 GPU 基準測試,最高可達 14 個噪聲量子位。
將結果與兩個領先的 CPU 模擬器(在英特爾 Xeon Platinum 8480CL 上運行)和一個領先的 GPU 模擬器(圖 4)進行比較時,發現 CUDA-Q 的速度提高了近 22 倍,而另一臺 CPU 模擬器的速度則隨著量子位數量的增加呈指數級下降。

構建您自己的加速模擬?
您可以使用 NVIDIA CUDA-Q 的量子動力學功能輕松準備自己的 GPU 加速模擬。本節概述了一個使用 CUDA-Q 來模擬與共振器合的 transmon 量子位的示例,論文名為 Charge Insensitive Qubit Design Derived from the Cooper Pair Box 。
此模擬的目標是了解系統的粒子數和正交如何隨時間演變。正交是用于理解 transmon 量子比特測量過程的關鍵觀察點。以下步驟展示了使用 CUDA-Q 運行量子動力學模擬的簡單性,以了解系統的粒子數和正交如何隨時間演變。
首先,導入 CUDA-Q 以及必要的輔助包,并將 CUDA-Q 設置為 dynamics
目標。
import cudaq from cudaq import operators, spin, Schedule, ScipyZvodeIntegrator from cudaq.operator import coherent_state import numpy as np import cupy as cp cudaq.set_target( "dynamics" ) |
接下來,準備好論文中使用的模擬參數。
# Number of cavity photons N = 20 # System dimensions: transmon + cavity dimensions = { 0 : 2 , 1 : N} # System parameters # Unit: GHz omega_01 = 3.0 * 2 * np.pi # transmon qubit frequency omega_r = 2.0 * 2 * np.pi # resonator frequency # Dispersive shift chi_01 = 0.025 * 2 * np.pi chi_12 = 0.0 |
然后,使用 CUDA-Q 定義常見的運算符,例如創建、消滅、數字和 Pauli 運算符。代碼還為將在此模擬中使用的腔和 transmon 運算符設置別名。
# Alias for commonly used operators # Cavity operators a = operators.annihilate( 1 ) a_dag = operators.create( 1 ) nc = operators.number( 1 ) xc = operators.annihilate( 1 ) + operators.create( 1 ) # Transmon operators sz = spin.z( 0 ) sx = spin.x( 0 ) nq = operators.number( 0 ) xq = operators.annihilate( 0 ) + operators.create( 0 ) |
在指定運算符和參數后,系統的有效哈密頓量 ?得到定義。有關此哈密頓量推導的更多信息,請參閱“ 從 Cooper Pair Box 導出的電荷不敏感量子位設計 ”第 3.8 節。
omega_01_prime = omega_01 + chi_01 omega_r_prime = omega_r - chi_12 / 2.0 chi = chi_01 - chi_12 / 2.0 hamiltonian = 0.5 * omega_01_prime * sz + (omega_r_prime + chi * sz) * a_dag * a |
此外,還需要準備超導量子比特(transmon)和諧振腔(cavity)的初始狀態。在本例中,選擇以疊加狀態準備兩者。
# Transmon in a superposition state transmon_state = cp.array([ 1. / np.sqrt( 2. ), 1. / np.sqrt( 2. )], dtype = cp.complex128) # Cavity in a superposition state cavity_state = coherent_state(N, 2.0 ) psi0 = cudaq.State.from_data(cp.kron(transmon_state, cavity_state)) |
最后指定日程表。它設置模擬的集成時間步長和捕獲的其他參數。
steps = np.linspace( 0 , 250 , 1000 ) schedule = Schedule(steps, [ "time" ]) |
這提供了使用 evolve
函數運行模擬所需的所有先決條件,該函數將哈密頓量、系統維度、時間表、初始狀態和可觀測量作為輸入。還可以指定用于執行數值時間積分的積分器。此示例使用了 Python 科學計算庫 SciPy 中的一個:
evolution_result = cudaq.evolve(hamiltonian, dimensions, schedule, psi0, observables = [nc, nq, xc, xq], collapse_operators = [], store_intermediate_results = True , integrator = ScipyZvodeIntegrator()) |
模擬完成后,可以提取期望值以檢索腔光子數和正交等量。之前代碼中定義的 observables
列表可確定計算哪些可觀測數據及其索引方式。
get_result = lambda idx, res: [ exp_vals[idx].expectation() for exp_vals in res.expectation_values() ] count_results = [ get_result( 0 , evolution_result), get_result( 1 , evolution_result) ] quadrature_results = [ get_result( 2 , evolution_result), get_result( 3 , evolution_result) ] |
通過在上述模擬中包含折疊運算符,從而使 transmon 和腔體衰減,可以生成噪聲結果。過程相同,但在這種情況下,折疊運算符 0.1*a
和 0.1*spin.minus(0)
包含在之前空的 collapse_operators
列表中,并再次調用 evolve
函數。如需查看完整代碼以生成有噪聲和無噪聲的結果,請參閱 NVIDIA/cuda-quantum GitHub 庫獲取文檔。
圖 5 顯示了腔光子數和透射激發概率的有噪聲和無噪聲結果。引入噪聲會導致更逼真的行為,即腔光子數隨時間推移而減少。這一模擬還可得到正交結果,用于更好地理解量子比特在測量期間如何與共振器交互。

請參閱 CUDA-Q 文檔 ,了解如何模擬其他系統的演示,并詳細了解可用于動態模擬的其他功能。其中包括 一個準備模擬的示例 ,該模擬可直接在 QuEra 模擬量子處理器上運行,使用相同的 API 并盡可能減少代碼更改。
開始使用?
借助新的 CUDA-Q 和 cuQuantum 動力學功能,研究人員能夠以前所未有的速度和規模運行量子動力學模擬。隨著 QPU 制造商將其硬件擴展到早期量子糾錯機制,具有此功能的工具變得至關重要。
下載 CUDA-Q 開始嘗試動態模擬。您可以立即運行代碼,利用其內置求解器。要查看一些動態示例筆記本,請訪問 GitHub 上的 NVIDIA / cuda-quantum 。
如果您想構建自己的自定義量子動力學求解器,請 下載 cuQuantum 以將其加速幾個數量級。
詳細了解 NVIDIA 量子計算 。
?