在過(guò)去的十年里,量子計(jì)算從學(xué)術(shù)實(shí)驗(yàn)室躍入主流。創(chuàng)業(yè)公司和大公司都在努力制造更好的量子計(jì)算機(jī)。雖然目前尚不清楚我們離在常見(jiàn)問(wèn)題上使用量子優(yōu)勢(shì)還有多遠(yuǎn),但很明顯,現(xiàn)在是構(gòu)建交付有價(jià)值的量子應(yīng)用所需工具的時(shí)候了。
首先,我們需要在理解量子算法方面取得進(jìn)展。去年, NVIDIA 發(fā)布了 cuQuantum ,這是一款用于加速量子計(jì)算模擬的軟件開(kāi)發(fā)工具包( SDK )。在 GPU 上使用 cuQuantum 模擬量子電路,使算法研究的性能和規(guī)模遠(yuǎn)遠(yuǎn)超過(guò)了目前在量子處理單元( QPU )上可以實(shí)現(xiàn)的性能和規(guī)模。這為在理解如何充分利用量子計(jì)算機(jī)方面取得突破鋪平了道路。
除了改進(jìn)量子算法外,我們還需要充分利用 QPU 以及經(jīng)典計(jì)算資源 CPU 和 GPU 。如今, NVIDIA 宣布推出 量子優(yōu)化設(shè)備架構(gòu)( QODA ) 是一個(gè)混合量子經(jīng)典計(jì)算平臺(tái),其使命是實(shí)現(xiàn)這一效用。
隨著量子計(jì)算的發(fā)展,所有有價(jià)值的量子應(yīng)用都將是混合的,量子計(jì)算機(jī)將與高性能經(jīng)典計(jì)算一起工作。 GPU 純粹為圖形而創(chuàng)建,并轉(zhuǎn)化為 high-performance computing ( HPC )的基本硬件。這需要新的軟件來(lái)實(shí)現(xiàn)強(qiáng)大而直接的編程。量子計(jì)算機(jī)從科學(xué)實(shí)驗(yàn)向有用加速器的轉(zhuǎn)變也需要新的軟件。
量子軟件的這一新時(shí)代將實(shí)現(xiàn)性能混合計(jì)算,并為更廣泛的科學(xué)家和創(chuàng)新者群體增加量子計(jì)算機(jī)的可訪問(wèn)性。
量子編程景觀
在過(guò)去五年中,針對(duì)小規(guī)模、噪聲量子計(jì)算架構(gòu)的量子編程方法得到了發(fā)展。這一發(fā)展對(duì)算法開(kāi)發(fā)人員來(lái)說(shuō)意義重大,并使標(biāo)準(zhǔn)量子算法以及混合變分方法的早期原型化成為可能。
由于缺乏量子資源和硬件實(shí)現(xiàn)的實(shí)用性,大多數(shù)編程方法都處于純 Python 級(jí)別,支持遠(yuǎn)程、基于云的執(zhí)行模型。
隨著量子體系結(jié)構(gòu)的改進(jìn)和算法開(kāi)發(fā)人員考慮現(xiàn)有經(jīng)典異構(gòu)計(jì)算的真正量子加速,問(wèn)題出現(xiàn)了:我們應(yīng)該如何在傳統(tǒng)高性能計(jì)算環(huán)境中支持量子協(xié)處理?
NVIDIA 是開(kāi)發(fā)高性能計(jì)算編程模型、異構(gòu)編譯器平臺(tái)和高級(jí)應(yīng)用程序庫(kù)的真正先驅(qū),這些應(yīng)用程序庫(kù)可以通過(guò)一個(gè)或多個(gè)應(yīng)用程序加速傳統(tǒng)的科學(xué)計(jì)算工作流 NVIDIA GPU 。
我們將量子計(jì)算視為異構(gòu)高性能計(jì)算系統(tǒng)架構(gòu)的另一個(gè)元素,并設(shè)想了一種編程模型,該模型將量子協(xié)處理無(wú)縫地結(jié)合到我們現(xiàn)有的系統(tǒng)中 CUDA 生態(tài)系統(tǒng) 。 在這方面,目前從 Python 語(yǔ)言級(jí)別開(kāi)始的方法是不夠的,最終將限制經(jīng)典和量子計(jì)算資源的性能集成。
QODA 用于高性能計(jì)算
NVIDIA 正在開(kāi)發(fā)一個(gè)開(kāi)放規(guī)范,用于在高性能計(jì)算環(huán)境中編程混合量子經(jīng)典計(jì)算架構(gòu)。我們宣布 QODA 編程模型規(guī)范和相應(yīng)的 NVQ ++編譯器平臺(tái),支持后端不可知(物理、模擬)、單源、現(xiàn)代 C ++方法來(lái)實(shí)現(xiàn)量子加速高性能計(jì)算。
QODA 與現(xiàn)有的經(jīng)典并行編程模型(如 CUDA 、 OpenMP 和 OpenACC )具有內(nèi)在的互操作性。該編譯器實(shí)現(xiàn)還將量子經(jīng)典 C ++源代碼表示降低為二進(jìn)制可執(zhí)行文件,這些二進(jìn)制可執(zhí)行文件本機(jī)以支持量子的模擬后端為目標(biāo)。
該編程和編譯工作流程通過(guò)與 GPU 處理和電路模擬的標(biāo)準(zhǔn)互操作性,實(shí)現(xiàn)了一個(gè)性能良好的編程環(huán)境,用于加速混合算法的研究和開(kāi)發(fā)活動(dòng),這些處理和電路模擬可以從筆記本電腦擴(kuò)展到分布式多節(jié)點(diǎn)、多 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è)備代碼定義為獨(dú)立的函數(shù)對(duì)象或帶有 _uqpu_uu 注釋的 lambda ,以指示將編譯到量子設(shè)備并在其上執(zhí)行。
通過(guò)依賴自由函數(shù)上的函數(shù)對(duì)象( ZCK0 內(nèi)核方法),您可以實(shí)現(xiàn)一種高效的方法來(lái)構(gòu)建通用標(biāo)準(zhǔn)量子庫(kù)函數(shù),該函數(shù)可以將任何量子內(nèi)核表達(dá)式作為輸入。
這方面的一個(gè)簡(jiǎn)單示例是標(biāo)準(zhǔn)采樣 QODA 函數(shù)(qoda::sample(。..)),它將量子內(nèi)核實(shí)例和任何具體參數(shù)作為輸入,并將觀察到的量子比特測(cè)量位字符串的熟悉映射返回到相應(yīng)的觀察次數(shù)。
QODA 內(nèi)核程序員可以訪問(wèn)與量子計(jì)算相關(guān)的某些內(nèi)置類型(qoda::qubit、qoda::qreg、qoda::spin_op等)、量子門操作以及從 C ++繼承的所有傳統(tǒng)經(jīng)典控制流。
前面詳細(xì)介紹的語(yǔ)言編譯方法的一個(gè)有趣方面是能夠編譯包含 CUDA 內(nèi)核、 OpenMP 和 OpenACC pragmas 以及更高級(jí)別的 CUDA 庫(kù) API 調(diào)用的 QODA 代碼。此功能將使混合量子經(jīng)典應(yīng)用程序開(kāi)發(fā)人員能夠真正利用多 GPU 處理與量子計(jì)算。
未來(lái)的量子計(jì)算用例將需要經(jīng)典的并行處理,例如數(shù)據(jù)預(yù)處理和后處理、標(biāo)準(zhǔn)量子編譯任務(wù)和量子糾錯(cuò)的綜合征解碼。
量子經(jīng)典應(yīng)用的早期展望
針對(duì)噪聲、短期量子計(jì)算架構(gòu)的典型混合量子經(jīng)典算法是變分量子特征解算器( VQE )。矢量量化方程的目標(biāo)是根據(jù)量子力學(xué)的變分原理,計(jì)算給定量子力學(xué)算子(如哈密頓量)相對(duì)于參數(shù)化狀態(tài)制備電路的最小特征值。
為給定的一組柵極旋轉(zhuǎn)參數(shù)執(zhí)行狀態(tài)準(zhǔn)備電路,并執(zhí)行一組由量子力學(xué)算子的結(jié)構(gòu)決定的測(cè)量,以計(jì)算這些具體參數(shù)的期望值。然后使用用戶指定的經(jīng)典優(yōu)化器通過(guò)改變這些參數(shù)來(lái)迭代搜索最小期望值。
您可以在 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)核表達(dá)式,在代碼示例中顯示為采用std::vector《double》的 lambda 。
這個(gè) lambda 的實(shí)際主體取決于當(dāng)前的問(wèn)題,但您可以自由地使用標(biāo)準(zhǔn) C ++控制流、作用域內(nèi)量子內(nèi)核調(diào)用和量子內(nèi)在操作的邏輯集來(lái)構(gòu)建這個(gè)函數(shù)。
下一個(gè)需要的組件是您需要計(jì)算其期望值的運(yùn)算符。 QODA 將它們表示為內(nèi)置的spin_op類型,您可以通過(guò) Pauli x(int)、y(int)和z(int)函數(shù)調(diào)用以編程方式構(gòu)建它們。
接下來(lái),您需要一個(gè)經(jīng)典的函數(shù)優(yōu)化器,這是 QODA 語(yǔ)言規(guī)范中的一個(gè)一般概念,用于將子類化為特定的優(yōu)化策略,基于梯度或無(wú)梯度。
最后,該語(yǔ)言公開(kāi)了用于調(diào)用整個(gè) VQE 工作流的標(biāo)準(zhǔn)庫(kù)函數(shù)。它在 QODA 內(nèi)核實(shí)例上參數(shù)化,該實(shí)例建模狀態(tài)準(zhǔn)備 ansatz ,該運(yùn)算符需要以下值:
最小特征值
經(jīng)典優(yōu)化實(shí)例
變分參數(shù)的總數(shù)
然后返回一個(gè)結(jié)構(gòu)化綁定,該綁定對(duì)狀態(tài)準(zhǔn)備電路的最優(yōu)特征值和相應(yīng)的最優(yōu)參數(shù)進(jìn)行編碼。
前面的工作流非常通用,有助于開(kāi)發(fā)變分算法,這些算法最終在量子核表達(dá)式、感興趣的自旋算子和經(jīng)典優(yōu)化例程方面是通用的。
但它也展示了 QODA 編程模型的基本原理:提供描述量子代碼表達(dá)式的核心概念,然后促進(jìn)通用函數(shù)標(biāo)準(zhǔn)庫(kù)的實(shí)用性,從而實(shí)現(xiàn)混合量子經(jīng)典算法的可組合性。
QODA 早期興趣計(jì)劃
量子計(jì)算機(jī)有望幫助我們解決一些最重要的問(wèn)題。我們正在向高性能計(jì)算和人工智能已經(jīng)發(fā)揮關(guān)鍵作用的領(lǐng)域的科學(xué)家和專家開(kāi)放量子計(jì)算,并實(shí)現(xiàn)當(dāng)今最好的現(xiàn)有軟件與量子軟件的輕松集成。這將大大加速量子計(jì)算機(jī)實(shí)現(xiàn)其潛力。
關(guān)于作者
Alex McCaskey 是 NVIDIA 的高級(jí)量子計(jì)算軟件架構(gòu)師。他的工作重點(diǎn)是異構(gòu)量子經(jīng)典計(jì)算的編程模型、編譯器和語(yǔ)言。在過(guò)去,他領(lǐng)導(dǎo)了許多開(kāi)源量子軟件項(xiàng)目,包括 XACC 系統(tǒng)級(jí)量子框架和 QCOR 量子經(jīng)典 C ++編譯器平臺(tái)。他于 2010 年獲得田納西大學(xué)物理學(xué)和數(shù)學(xué)學(xué)士學(xué)位,并于 2014 年獲得弗吉尼亞理工大學(xué)和州立大學(xué)物理學(xué)碩士學(xué)位。
審核編輯:郭婷
-
cpu
+關(guān)注
關(guān)注
68文章
10807瀏覽量
210854 -
NVIDIA
+關(guān)注
關(guān)注
14文章
4856瀏覽量
102715 -
gpu
+關(guān)注
關(guān)注
28文章
4673瀏覽量
128597
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論