在過去的十年里,量子計算從學術(shù)實驗室躍入主流。創(chuàng)業(yè)公司和大公司都在努力制造更好的量子計算機。雖然目前尚不清楚我們離在常見問題上使用量子優(yōu)勢還有多遠,但很明顯,現(xiàn)在是構(gòu)建交付有價值的量子應用所需工具的時候了。
首先,我們需要在理解量子算法方面取得進展。去年, NVIDIA 發(fā)布了 cuQuantum ,這是一款用于加速量子計算模擬的軟件開發(fā)工具包( SDK )。在 GPU 上使用 cuQuantum 模擬量子電路,使算法研究的性能和規(guī)模遠遠超過了目前在量子處理單元( QPU )上可以實現(xiàn)的性能和規(guī)模。這為在理解如何充分利用量子計算機方面取得突破鋪平了道路。
除了改進量子算法外,我們還需要充分利用 QPU 以及經(jīng)典計算資源 CPU 和 GPU 。如今, NVIDIA 宣布推出 量子優(yōu)化設備架構(gòu)( QODA ) 是一個混合量子經(jīng)典計算平臺,其使命是實現(xiàn)這一效用。
隨著量子計算的發(fā)展,所有有價值的量子應用都將是混合的,量子計算機將與高性能經(jīng)典計算一起工作。 GPU 純粹為圖形而創(chuàng)建,并轉(zhuǎn)化為 high-performance computing ( HPC )的基本硬件。這需要新的軟件來實現(xiàn)強大而直接的編程。量子計算機從科學實驗向有用加速器的轉(zhuǎn)變也需要新的軟件。
量子軟件的這一新時代將實現(xiàn)性能混合計算,并為更廣泛的科學家和創(chuàng)新者群體增加量子計算機的可訪問性。
量子編程景觀
在過去五年中,針對小規(guī)模、噪聲量子計算架構(gòu)的量子編程方法得到了發(fā)展。這一發(fā)展對算法開發(fā)人員來說意義重大,并使標準量子算法以及混合變分方法的早期原型化成為可能。
由于缺乏量子資源和硬件實現(xiàn)的實用性,大多數(shù)編程方法都處于純 Python 級別,支持遠程、基于云的執(zhí)行模型。
隨著量子體系結(jié)構(gòu)的改進和算法開發(fā)人員考慮現(xiàn)有經(jīng)典異構(gòu)計算的真正量子加速,問題出現(xiàn)了:我們應該如何在傳統(tǒng)高性能計算環(huán)境中支持量子協(xié)處理?
NVIDIA 是開發(fā)高性能計算編程模型、異構(gòu)編譯器平臺和高級應用程序庫的真正先驅(qū),這些應用程序庫可以通過一個或多個應用程序加速傳統(tǒng)的科學計算工作流 NVIDIA GPU 。
我們將量子計算視為異構(gòu)高性能計算系統(tǒng)架構(gòu)的另一個元素,并設想了一種編程模型,該模型將量子協(xié)處理無縫地結(jié)合到我們現(xiàn)有的系統(tǒng)中 CUDA 生態(tài)系統(tǒng) 。 在這方面,目前從 Python 語言級別開始的方法是不夠的,最終將限制經(jīng)典和量子計算資源的性能集成。
QODA 用于高性能計算
NVIDIA 正在開發(fā)一個開放規(guī)范,用于在高性能計算環(huán)境中編程混合量子經(jīng)典計算架構(gòu)。我們宣布 QODA 編程模型規(guī)范和相應的 NVQ ++編譯器平臺,支持后端不可知(物理、模擬)、單源、現(xiàn)代 C ++方法來實現(xiàn)量子加速高性能計算。
QODA 與現(xiàn)有的經(jīng)典并行編程模型(如 CUDA 、 OpenMP 和 OpenACC )具有內(nèi)在的互操作性。該編譯器實現(xiàn)還將量子經(jīng)典 C ++源代碼表示降低為二進制可執(zhí)行文件,這些二進制可執(zhí)行文件本機以支持量子的模擬后端為目標。
該編程和編譯工作流程通過與 GPU 處理和電路模擬的標準互操作性,實現(xiàn)了一個性能良好的編程環(huán)境,用于加速混合算法的研究和開發(fā)活動,這些處理和電路模擬可以從筆記本電腦擴展到分布式多節(jié)點、多 GPU 架構(gòu)。
auto ghz = [](const int N) __qpu__ { qoda::qreg q(N); h(q[0]); for (auto i : qoda::irange(N-1)) { cnot(q[i], q[i+1]); } mz(q); }; // Sample a GHZ state on 30 qubits auto counts = qoda::sample(ghz, 30); counts.dump();
如代碼示例所示, QODA 提供了一種類似 CUDA 的基于內(nèi)核的編程方法,以現(xiàn)代 C ++為中心。您可以將量子設備代碼定義為獨立的函數(shù)對象或帶有 _uqpu_uu 注釋的 lambda ,以指示將編譯到量子設備并在其上執(zhí)行。
通過依賴自由函數(shù)上的函數(shù)對象( ZCK0 內(nèi)核方法),您可以實現(xiàn)一種高效的方法來構(gòu)建通用標準量子庫函數(shù),該函數(shù)可以將任何量子內(nèi)核表達式作為輸入。
這方面的一個簡單示例是標準采樣 QODA 函數(shù)(qoda::sample(。..)),它將量子內(nèi)核實例和任何具體參數(shù)作為輸入,并將觀察到的量子比特測量位字符串的熟悉映射返回到相應的觀察次數(shù)。
QODA 內(nèi)核程序員可以訪問與量子計算相關(guān)的某些內(nèi)置類型(qoda::qubit、qoda::qreg、qoda::spin_op等)、量子門操作以及從 C ++繼承的所有傳統(tǒng)經(jīng)典控制流。
前面詳細介紹的語言編譯方法的一個有趣方面是能夠編譯包含 CUDA 內(nèi)核、 OpenMP 和 OpenACC pragmas 以及更高級別的 CUDA 庫 API 調(diào)用的 QODA 代碼。此功能將使混合量子經(jīng)典應用程序開發(fā)人員能夠真正利用多 GPU 處理與量子計算。
未來的量子計算用例將需要經(jīng)典的并行處理,例如數(shù)據(jù)預處理和后處理、標準量子編譯任務和量子糾錯的綜合征解碼。
量子經(jīng)典應用的早期展望
針對噪聲、短期量子計算架構(gòu)的典型混合量子經(jīng)典算法是變分量子特征解算器( VQE )。矢量量化方程的目標是根據(jù)量子力學的變分原理,計算給定量子力學算子(如哈密頓量)相對于參數(shù)化狀態(tài)制備電路的最小特征值。
為給定的一組柵極旋轉(zhuǎn)參數(shù)執(zhí)行狀態(tài)準備電路,并執(zhí)行一組由量子力學算子的結(jié)構(gòu)決定的測量,以計算這些具體參數(shù)的期望值。然后使用用戶指定的經(jīng)典優(yōu)化器通過改變這些參數(shù)來迭代搜索最小期望值。
您可以在 QODA 編程模型中看到類似 VQE 的通用算法的樣子:
// Define your state prep ansatz… auto ansatz = [](std::vectorthetas) __qpu__ { … Use C++ control flow and quantum intrinsic ops … }; // Define the Hamiltonian qoda::spin_op H = … use x, y, z to build up Hamiltonian … ; // Create a specific function optimization strategy int n_params = …; qoda::nlopt::lbfgs optimizer; optimizer.initial_parameters = qoda::random_vector(-1, 1, n_params); // Run the VQE algorithm with QODA auto [opt_val, opt_params] = qoda::vqe(ansatz, H, optimizer, n_params); printf("Optimal = %lf\n", opt_val);
所需的主要組件是參數(shù)化的 ansatz-QODA 內(nèi)核表達式,在代碼示例中顯示為采用std::vector《double》的 lambda 。
這個 lambda 的實際主體取決于當前的問題,但您可以自由地使用標準 C ++控制流、作用域內(nèi)量子內(nèi)核調(diào)用和量子內(nèi)在操作的邏輯集來構(gòu)建這個函數(shù)。
下一個需要的組件是您需要計算其期望值的運算符。 QODA 將它們表示為內(nèi)置的spin_op類型,您可以通過 Pauli x(int)、y(int)和z(int)函數(shù)調(diào)用以編程方式構(gòu)建它們。
接下來,您需要一個經(jīng)典的函數(shù)優(yōu)化器,這是 QODA 語言規(guī)范中的一個一般概念,用于將子類化為特定的優(yōu)化策略,基于梯度或無梯度。
最后,該語言公開了用于調(diào)用整個 VQE 工作流的標準庫函數(shù)。它在 QODA 內(nèi)核實例上參數(shù)化,該實例建模狀態(tài)準備 ansatz ,該運算符需要以下值:
最小特征值
經(jīng)典優(yōu)化實例
變分參數(shù)的總數(shù)
然后返回一個結(jié)構(gòu)化綁定,該綁定對狀態(tài)準備電路的最優(yōu)特征值和相應的最優(yōu)參數(shù)進行編碼。
前面的工作流非常通用,有助于開發(fā)變分算法,這些算法最終在量子核表達式、感興趣的自旋算子和經(jīng)典優(yōu)化例程方面是通用的。
但它也展示了 QODA 編程模型的基本原理:提供描述量子代碼表達式的核心概念,然后促進通用函數(shù)標準庫的實用性,從而實現(xiàn)混合量子經(jīng)典算法的可組合性。
QODA 早期興趣計劃
量子計算機有望幫助我們解決一些最重要的問題。我們正在向高性能計算和人工智能已經(jīng)發(fā)揮關(guān)鍵作用的領(lǐng)域的科學家和專家開放量子計算,并實現(xiàn)當今最好的現(xiàn)有軟件與量子軟件的輕松集成。這將大大加速量子計算機實現(xiàn)其潛力。
關(guān)于作者
Alex McCaskey 是 NVIDIA 的高級量子計算軟件架構(gòu)師。他的工作重點是異構(gòu)量子經(jīng)典計算的編程模型、編譯器和語言。在過去,他領(lǐng)導了許多開源量子軟件項目,包括 XACC 系統(tǒng)級量子框架和 QCOR 量子經(jīng)典 C ++編譯器平臺。他于 2010 年獲得田納西大學物理學和數(shù)學學士學位,并于 2014 年獲得弗吉尼亞理工大學和州立大學物理學碩士學位。
審核編輯:郭婷
-
cpu
+關(guān)注
關(guān)注
68文章
10902瀏覽量
212997 -
NVIDIA
+關(guān)注
關(guān)注
14文章
5076瀏覽量
103716 -
gpu
+關(guān)注
關(guān)注
28文章
4774瀏覽量
129350
發(fā)布評論請先 登錄
相關(guān)推薦
英偉達與谷歌聯(lián)手加速量子計算設備設計
NVIDIA 助力谷歌量子 AI 通過量子器件物理學模擬加快處理器設計
![NVIDIA 助力谷歌<b class='flag-5'>量子</b> AI 通過<b class='flag-5'>量子</b>器件物理學模擬加快處理器設計](https://file1.elecfans.com/web1/M00/F5/63/wKgaoWc7-ouAFcDeAAGdJBWepuQ898.jpg)
玻色量子與北京理工大學達成量子云計算合作
QPU與GPU,經(jīng)典超算和量子計算的協(xié)同
英偉達CUDA-Q平臺推動全球量子計算研究
NVIDIA通過CUDA-Q平臺為全球各地的量子計算中心提供加速
NVIDIA 通過 CUDA-Q 平臺為全球各地的量子計算中心提供加速
![NVIDIA 通過 CUDA-Q <b class='flag-5'>平臺</b>為全球各地的<b class='flag-5'>量子</b><b class='flag-5'>計算</b>中心提供加速](https://file1.elecfans.com/web2/M00/E5/EB/wKgaomZBv9mAPqB2AAQeD4OiP8Q898.jpg)
評論