付 祥 鄭宇真 蘇 醒 于錦濤 徐煒遐 吳俊杰
1(國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院量子信息研究所兼高性能計(jì)算國(guó)家重點(diǎn)實(shí)驗(yàn)室 長(zhǎng)沙 410073) 2(國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院 長(zhǎng)沙 410073) 3(數(shù)學(xué)工程與先進(jìn)計(jì)算國(guó)家重點(diǎn)實(shí)驗(yàn)室 鄭州 450001)
2019年谷歌通過(guò)利用53個(gè)超導(dǎo)量子比特執(zhí)行隨機(jī)量子線(xiàn)路采樣任務(wù)[1],2020年中國(guó)科學(xué)技術(shù)大學(xué)通過(guò)利用76光子執(zhí)行玻色采樣任務(wù)[2],展示出量子計(jì)算機(jī)在某些特定問(wèn)題上超越經(jīng)典計(jì)算機(jī)的能力,實(shí)現(xiàn)了量子優(yōu)越性[3-4],標(biāo)志著含噪中尺度量子(noisy intermediate-scale quantum,NISQ)時(shí)代[5]的到來(lái).NISQ技術(shù)指量子系統(tǒng)中可集成50至數(shù)百個(gè)含噪聲量子比特的技術(shù).NISQ時(shí)代下,量子比特的相干時(shí)間非常短暫,且量子操作的錯(cuò)誤率仍然可觀.以超導(dǎo)量子比特為例,已實(shí)證的適合大規(guī)模集成的超導(dǎo)量子比特相干時(shí)間僅有數(shù)十至數(shù)百微秒[1,6-10];雖然單量子比特門(mén)的錯(cuò)誤率可低于1%,但兩量子比特門(mén)和量子測(cè)量的錯(cuò)誤率尚難以在每個(gè)量子比特(對(duì))上均低于1%[1,11].受限于量子比特的數(shù)量、相干時(shí)間和量子操作的錯(cuò)誤率,NISQ技術(shù)無(wú)法通過(guò)量子容錯(cuò)技術(shù)[12]支持長(zhǎng)時(shí)間的量子狀態(tài)演化來(lái)求解實(shí)際的問(wèn)題.
為了加速量子計(jì)算的落地,一種思路是在比量子比特尚未退相干之前完成量子算法所需的量子狀態(tài)演化,從而使量子噪聲或錯(cuò)誤不至于積累到完全破壞計(jì)算結(jié)果.已有工作提出了一系列有望在近期得到實(shí)證的量子算法,如變分量子本征值求解(variational quantum eigensolver,VQE)[13]、迭代相位估計(jì)(iterative phase estimation,IPE)[14-16]、量子近似優(yōu)化算法(quantum approximate optimization algorithm,QAOA)[17]、變分量子模擬(variational quantum simulation,VQS)[18]等.這些算法運(yùn)行過(guò)程中,量子比特每次從初始化到最終測(cè)量所需的時(shí)間相對(duì)較短,降低了對(duì)量子比特相干時(shí)間的要求,為利用NISQ技術(shù)解決實(shí)際問(wèn)題提供了可能.
NISQ時(shí)代量子應(yīng)用的第2個(gè)特點(diǎn)是在應(yīng)用層需直接控制量子計(jì)算硬件的部分執(zhí)行細(xì)節(jié).一方面,由于NISQ量子比特天然含噪的特性,用于校準(zhǔn)量子比特和量子操作相關(guān)參數(shù)的量子實(shí)驗(yàn)會(huì)定期反復(fù)地進(jìn)行.這些實(shí)驗(yàn)需直接控制施加在量子比特上的模擬波形,或精確控制操作發(fā)生的時(shí)序.另一方面,由于NISQ時(shí)代下的量子計(jì)算機(jī)性能有限,特定的量子計(jì)算機(jī)用戶(hù)會(huì)希望直接控制量子操作的波形和時(shí)序,從而面向具體硬件優(yōu)化量子程序達(dá)到最優(yōu)性能.實(shí)現(xiàn)量子-經(jīng)典異構(gòu)計(jì)算并支持用戶(hù)在應(yīng)用層控制量子計(jì)算硬件的部分執(zhí)行細(xì)節(jié),需要程序設(shè)計(jì)語(yǔ)言、編譯器、體系結(jié)構(gòu)等多個(gè)層次的支持及各層次之間的配合.
明確量子計(jì)算機(jī)的系統(tǒng)結(jié)構(gòu)是指導(dǎo)量子軟硬件設(shè)計(jì)并將其集成為一個(gè)系統(tǒng)的必要條件.基于線(xiàn)路模型,之前的工作提出了若干量子計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)構(gòu)想,討論量子計(jì)算從軟件到硬件的層次劃分及層次間的協(xié)同方式[19-23].但這些層次結(jié)構(gòu)主要面向大規(guī)模容錯(cuò)量子計(jì)算機(jī),強(qiáng)調(diào)通過(guò)層層抽象及逐級(jí)優(yōu)化,使量子算法以容錯(cuò)的方式在硬件上執(zhí)行.這些設(shè)計(jì)構(gòu)想中,有些雖然提到了量子計(jì)算與經(jīng)典計(jì)算的結(jié)合,但并未具體地討論量子計(jì)算資源和經(jīng)典計(jì)算資源的組織方式.同時(shí),這些構(gòu)想中不考慮或較少考慮如何將與波形和時(shí)序等硬件相關(guān)的低級(jí)控制能力以一種可編程的方式暴露給頂層軟件.因此,現(xiàn)有的量子計(jì)算系統(tǒng)結(jié)構(gòu)設(shè)計(jì)構(gòu)想在指導(dǎo)NISQ系統(tǒng)的實(shí)現(xiàn)上有所不足.本文比較量子計(jì)算與經(jīng)典計(jì)算的異同,并以工程化視角回顧量子計(jì)算系統(tǒng)的層次結(jié)構(gòu).面向NISQ時(shí)代的量子-經(jīng)典異構(gòu)計(jì)算,本文以青果框架[24]為例概述量子計(jì)算軟硬件系統(tǒng)的組織方式,并分別介紹高級(jí)量子程序設(shè)計(jì)語(yǔ)言、量子編譯器、量子軟硬件接口、量子控制微體系結(jié)構(gòu)等層次的主要任務(wù).最后,我們簡(jiǎn)要探討程序設(shè)計(jì)語(yǔ)言、編譯和控制體系結(jié)構(gòu)等方面在NISQ技術(shù)條件下面臨的挑戰(zhàn).
本節(jié)介紹量子計(jì)算的基本數(shù)學(xué)原理.在此基礎(chǔ)上,以IPE為例介紹量子算法的基本構(gòu)成并以超導(dǎo)量子比特為例介紹量子比特的物理實(shí)現(xiàn)及其控制.
比特是經(jīng)典計(jì)算機(jī)的基本單元,一個(gè)比特在確定的時(shí)刻只能處于2種互斥的基本狀態(tài)(0,1)中的一種.量子比特(quantum bit,qubit)是量子計(jì)算機(jī)的基本單元.量子比特有2種基本狀態(tài)|0〉和|1〉.與經(jīng)典比特不同,量子比特能夠同時(shí)處于|0〉和|1〉的疊加態(tài)中,表示為|ψ〉=α|0〉+β|1〉,或者一個(gè)長(zhǎng)度為2的向量(α,β)T,其中α,β∈且滿(mǎn)足歸一化條件|α|2+|β|2=1.這種現(xiàn)象稱(chēng)之為量子疊加.在歸一化條件下,|ψ〉可被重寫(xiě)為由于在物理上沒(méi)有可觀測(cè)的效果,全局相位eiγ可被忽略.這樣,單個(gè)量子比特的狀態(tài)可形象化地表示為Bloch球面上的一個(gè)點(diǎn),如圖1所示.
Fig.1 The Bloch sphere that represents a single qubit state圖1 可表示單個(gè)量子比特狀態(tài)的Bloch球面
(1)
當(dāng)量子比特門(mén)作用在多個(gè)量子比特系統(tǒng)中的少數(shù)量子比特上時(shí),其矩陣可使用該門(mén)對(duì)應(yīng)的矩陣與單位矩陣的張量積來(lái)描述.如將單量子比特門(mén)Us作用在四量子比特系統(tǒng)中的第3個(gè)量子比特上時(shí),描述其整體效果的矩陣為U=I?I?Us?I,其中?表示克羅內(nèi)克(Kronecker)積.初始狀態(tài)為|ψi〉的量子系統(tǒng)在量子門(mén)U的作用下將轉(zhuǎn)變?yōu)闋顟B(tài)
|ψo(hù)〉=U|ψi〉.
(2)
對(duì)量子比特進(jìn)行測(cè)量時(shí),會(huì)使得整個(gè)系統(tǒng)的量子狀態(tài)發(fā)生坍縮.以測(cè)量n量子比特系統(tǒng)中的第1個(gè)量子比特為例,若測(cè)量前的狀態(tài)為
(3)
(4)
其中j∈{0,1,…,2n-1-1}且b∈{0,1}.
對(duì)比|ψbefore〉 和|ψafter〉 可知,對(duì)具有n個(gè)量子比特的量子系統(tǒng)中的少數(shù)量子比特施加門(mén)操作或進(jìn)行測(cè)量時(shí),可使得表征此量子系統(tǒng)的2n個(gè)系數(shù)同時(shí)發(fā)生變化,展現(xiàn)出極高的并行性,這是實(shí)現(xiàn)量子計(jì)算優(yōu)越性的第2個(gè)理論基礎(chǔ).
量子系統(tǒng)中巨大的存儲(chǔ)空間,結(jié)合量子操作內(nèi)秉的高度并行性,可使得量子計(jì)算機(jī)在解決特定問(wèn)題時(shí)比經(jīng)典計(jì)算機(jī)更為高效.
任意經(jīng)典函數(shù)可通過(guò)一定的方法(如卡諾映射[25])被分解為SUC={與,或,非}3個(gè)門(mén).因此我們說(shuō)SUC是經(jīng)典通用計(jì)算門(mén).與此類(lèi)似,如果一組量子門(mén)可通過(guò)組合的方式,以任意精度近似到任何m量子比特操作Um,其中m≥1,則這組量子門(mén)被稱(chēng)為通用的[26].對(duì)于如1.5節(jié)所述的超導(dǎo)量子比特而言,一個(gè)常用的通用量子門(mén)集合是SUQ={Rx,Ry,CZ},其中Rx和Ry分別代表繞x軸和y軸的任意角度的旋轉(zhuǎn).例如,CNOT門(mén)可以使用SUQ構(gòu)造,如式(5)所示:
CNOTc,t=Ry(π/2)t·CZ·Ry(-π/2)t.
(5)
類(lèi)似于經(jīng)典電路可描述硬件對(duì)經(jīng)典信息的處理過(guò)程,一個(gè)量子線(xiàn)路可用于描述量子操作作用在量子比特上的過(guò)程.在量子線(xiàn)路中,每個(gè)量子比特用一條水平線(xiàn)來(lái)表示,施加在該量子比特上的操作用一個(gè)塊來(lái)表示.例如,單個(gè)量子比特門(mén)Us和多量子比特操作Um可以用圖2(a)和圖2(b)所示的量子線(xiàn)路來(lái)表示.連接黑色圓點(diǎn)的方塊表示受控門(mén),如圖2(c)所示.
Fig.2 Quantum circuit圖2 量子線(xiàn)路
量子線(xiàn)路中,率先作用在量子比特上的量子門(mén)被放置在隨后作用的量子門(mén)的左邊.圖3描述了如式(5)所示的CNOT門(mén)分解.右側(cè)量子線(xiàn)路利用2個(gè)單量子比特門(mén)和一個(gè)CZ門(mén)實(shí)現(xiàn)了CNOT的分解.由于Ry(-π/2)最先作用在受控量子比特t上,所以它出現(xiàn)在分解后的量子線(xiàn)路中的最左側(cè).圖3左圖中,黑點(diǎn)連接十字圈表示作用在2個(gè)量子比特上的CNOT門(mén);右圖中,2個(gè)連接的黑點(diǎn)表示CZ門(mén).需要注意的是,數(shù)學(xué)表達(dá)式中率先作用在量子比特上的量子門(mén)出現(xiàn)在隨后作用的量子門(mén)的右側(cè)(式(5)),這與量子線(xiàn)路中量子門(mén)出現(xiàn)的順序是相反的,如圖3所示:
Fig.3 A quantum circuit example of CNOT gate decomposition圖3 CNOT門(mén)分解的量子線(xiàn)路示例
在求解某些量子計(jì)算問(wèn)題時(shí),結(jié)合量子計(jì)算和經(jīng)典計(jì)算可以顯著降低對(duì)量子比特?cái)?shù)目與相干時(shí)間的要求.例如,量子相位估計(jì)算法(QPE)是量子模擬[13]和Shor質(zhì)因子分解算法[27]等多個(gè)量子計(jì)算應(yīng)用的關(guān)鍵子程序;作為QPE的一種實(shí)現(xiàn)方式,IPE算法通過(guò)使用經(jīng)典計(jì)算指令實(shí)時(shí)處理量子比特的測(cè)量結(jié)果,可有效地降低對(duì)量子比特?cái)?shù)量和相干時(shí)間的要求.本文將以IPE作為算法范例,介紹量子-經(jīng)典異構(gòu)算法的整體執(zhí)行流程,說(shuō)明量子應(yīng)用從高級(jí)語(yǔ)言描述轉(zhuǎn)換為量子軟硬件接口表示,并如何在實(shí)際量子計(jì)算硬件上執(zhí)行.本節(jié)簡(jiǎn)要介紹IPE算法的原理,關(guān)于該算法的詳細(xì)討論可參考文獻(xiàn)[14-15].
假設(shè)酉算子U有一個(gè)本征態(tài)|u〉,且對(duì)應(yīng)的本征值為ei θ,即
U|u〉=ei θ|u〉,
(6)
θk=(-0.ck+1ck+2...cm)·π,
(7)
Fig.4 Flow chart of the iterative phase estimation (IPE)algorithm圖4 IPE算法的流程圖
其中,k∈{1,2,…,m-1}且θm=0.需要注意的是,在算法執(zhí)行過(guò)程中,應(yīng)使用經(jīng)優(yōu)化過(guò)的受控U2k-1操作,而不是將受控U操作執(zhí)行2k-1次.否則,算法的效率和結(jié)果的保真度將大大降低.
量子計(jì)算需要在滿(mǎn)足特定條件的物理系統(tǒng)上執(zhí)行.目前,已有一些工作歸納并總結(jié)了物理系統(tǒng)在執(zhí)行通用量子計(jì)算時(shí)必須滿(mǎn)足的條件.其中最著名的是2000年DiVincenzo所總結(jié)的DiVincenzo準(zhǔn)則[28],包含5個(gè)條件:
1)可擴(kuò)展的、由表征良好(well-defined)的量子比特組成的物理系統(tǒng);
2)該系統(tǒng)具備將量子比特初始化到一個(gè)簡(jiǎn)單量子態(tài)的能力;
3)量子比特?fù)碛休^長(zhǎng)的相干時(shí)間,且遠(yuǎn)大于單個(gè)量子操作的持續(xù)時(shí)間;
4)該系統(tǒng)可在量子比特上施加一組通用的量子門(mén);
5)該系統(tǒng)可完成對(duì)量子比特的測(cè)量.
2012年諾貝爾物理學(xué)獎(jiǎng)授予美國(guó)科學(xué)家David J.Wineland和法國(guó)科學(xué)家Serge Haroche,以表彰他們于20世紀(jì)80年代在測(cè)量、操控單量子系統(tǒng)上所做出的開(kāi)創(chuàng)性貢獻(xiàn)[29].自此之后,人們研究了多種量子比特的實(shí)現(xiàn)技術(shù)方案,如超導(dǎo)量子電路[30-32]、光量子[33-35]、離子阱[36]、拓?fù)淞孔酉到y(tǒng)[37-38]、自旋量子比特[39-40]、核磁共振[41]、鉆石色心[42-43]、中性原子[44-47]等.一些技術(shù)已被證明具有內(nèi)在的擴(kuò)展性問(wèn)題,如核磁共振[48].一些技術(shù)還處于早期發(fā)展階段,如基于馬約拉納的拓?fù)淞孔佑?jì)算.在撰寫(xiě)本文時(shí),最有希望的技術(shù)是超導(dǎo)量子比特和離子阱,這2種技術(shù)都已被證明符合DiVincenzo準(zhǔn)則[1,49-51].本文將主要基于超導(dǎo)量子比特討論面向NISQ的量子-經(jīng)典異構(gòu)系統(tǒng).但是,本文關(guān)于量子-經(jīng)典異構(gòu)系統(tǒng)的大部分觀點(diǎn)也可適用于其他類(lèi)型的量子比特,如離子阱.不過(guò)讀者須注意,不同的量子比特實(shí)現(xiàn)技術(shù)使用的控制硬件和軟硬件接口可能不同.
圖5展示了一種名為T(mén)ransmon的超導(dǎo)量子比特的掃描電鏡圖像.Transmon是一種集總參數(shù)的非線(xiàn)性L(fǎng)C諧振電路,由一個(gè)電容器與一對(duì)提供非線(xiàn)性電感的約瑟夫森結(jié)并聯(lián)組成.我們使用該電路的基態(tài)和第一激發(fā)態(tài)分別作為量子比特的|0〉態(tài)和|1〉態(tài).通過(guò)使用近端通量偏置線(xiàn)(端口Pf)控制2個(gè)約瑟夫森結(jié)之間的環(huán)路的通量,可以在納秒級(jí)時(shí)間尺度上對(duì)躍遷頻率fQ在幾千兆赫茲的范圍內(nèi)調(diào)整.
Fig.5 The SEM image of a Transmon qubit (Q)圖5 Transmon量子比特(Q)的掃描電鏡圖像
共平面波導(dǎo)諧振器(R)通過(guò)電容耦合至量子比特和測(cè)量饋線(xiàn)(從輸入端口Pi到輸出端口Po).外部電子控制設(shè)備經(jīng)通量偏置線(xiàn)(Pf)和微波偏置線(xiàn)(Pm)施加脈沖信號(hào)產(chǎn)生作用在量子比特的量子門(mén),產(chǎn)生一定頻率的微波信號(hào)從Pi至Po穿透測(cè)量饋線(xiàn),通過(guò)R完成對(duì)量子比特狀態(tài)的測(cè)量.
R的基頻fR根據(jù)量子比特狀態(tài)的不同而不同.利用這一特性,可實(shí)現(xiàn)對(duì)量子比特的測(cè)量.頻率在fR附近的測(cè)量電磁脈沖信號(hào)(通常持續(xù)300 ns至2 μs)在穿過(guò)測(cè)量饋線(xiàn)時(shí)詢(xún)問(wèn)量子比特的狀態(tài),并將其投影到|0〉或|1〉.通過(guò)對(duì)由Po端口輸出的信號(hào)依次進(jìn)行解調(diào)、數(shù)字化、積分以及與閾值進(jìn)行比較,可以推斷量子比特的測(cè)量結(jié)果.
單量子比特門(mén)通過(guò)向量子比特施加頻率為fQ、時(shí)長(zhǎng)通常為20 ns的微波脈沖來(lái)實(shí)現(xiàn).一般使用任意波形發(fā)生器(arbitrary waveform generator,AWG)生成微波脈沖的包絡(luò)信號(hào),然后使用I-Q混頻器基于載波單邊帶調(diào)制將該信號(hào)加載到頻率fQ.圖6中顯示了繞x軸和y軸旋轉(zhuǎn)操作的包絡(luò)信號(hào)的同相(I)和正交(Q)分量.該圖中,I,Q分量均已包含了頻率為-50 MHz的單邊帶調(diào)制分量.該信號(hào)中,包絡(luò)和載波的相位決定對(duì)應(yīng)旋轉(zhuǎn)操作的旋轉(zhuǎn)軸在Bloch球赤道平面上的位置,脈沖幅度決定旋轉(zhuǎn)的角度.標(biāo)準(zhǔn)的校準(zhǔn)流程可以確定特定脈沖的幅度(如π和π/2)并校正混頻器的缺陷.需注意的是,用于進(jìn)行量子門(mén)操作的微波脈沖需以精確的時(shí)序作用在量子比特上.例如,圖6中所示的x旋轉(zhuǎn)操作的包絡(luò)信號(hào)已經(jīng)包含了一個(gè)固定的-50 MHz單邊帶調(diào)制分量,如果x旋轉(zhuǎn)操作施加的時(shí)間比正確的時(shí)間晚5 ns,那么最后將產(chǎn)生一個(gè)繞y軸——而不是繞x軸——的旋轉(zhuǎn)操作.最后,通過(guò)使用量子門(mén)分解技術(shù),如Solovay-Kitaev算法[26]或重復(fù)直至成功[52],任意單量子比特門(mén)可被分解為繞x軸和y軸的旋轉(zhuǎn).
Fig.6 In-phase and quadrature envelopes of Rx(π)and Ry(π)pulses including -50 MHz single-sideband modulation圖6 包括-50 MHz單邊帶調(diào)制分量的Rx(π)和Ry(π)脈沖的同相和正交包絡(luò)
傳統(tǒng)的數(shù)字處理器由存儲(chǔ)單元、運(yùn)算單元和控制單元組成,它們保存或者處理二進(jìn)制格式的數(shù)字信號(hào).存儲(chǔ)單元(如寄存器或高速緩存)、運(yùn)算單元(如算術(shù)邏輯單元)以及控制單元均可使用相同的基本元件——晶體管——來(lái)實(shí)現(xiàn).存儲(chǔ)、處理和控制之間的同質(zhì)性使存儲(chǔ)單元、運(yùn)算單元和控制單元可自然地集成在單個(gè)芯片上.考慮到經(jīng)典處理器的控制邏輯一般通過(guò)二進(jìn)制指令提供,經(jīng)典軟件生成的指令可直接對(duì)接經(jīng)典硬件,即中央處理器(CPU),如圖7(a)所示.
量子計(jì)算與經(jīng)典計(jì)算不同.量子比特即是數(shù)據(jù)存儲(chǔ)的單元,又是數(shù)據(jù)處理的單元.量子比特利用量子疊加與量子糾纏來(lái)存儲(chǔ)數(shù)據(jù).當(dāng)量子操作被施加到量子比特上時(shí),數(shù)據(jù)在量子態(tài)下進(jìn)行演化.數(shù)據(jù)存儲(chǔ)和處理的格式均基于量子疊加與量子糾纏.量子比特的控制媒介一般是模擬電磁脈沖信號(hào),通常由定制電子學(xué)設(shè)備產(chǎn)生.所以量子計(jì)算中,存儲(chǔ)、處理和控制是異質(zhì)的.這種異質(zhì)性導(dǎo)致量子控制器需要獨(dú)立于量子芯片進(jìn)行設(shè)計(jì).量子軟件的輸出也需要通過(guò)量子控制器完成對(duì)量子芯片的控制,如圖7(b)所示.
Fig.7 The difference of the way of controlling between classical processors and quantum processors圖7 經(jīng)典處理器與量子處理器控制方式的差異
基于晶體管的經(jīng)典處理器的計(jì)算過(guò)程中,數(shù)據(jù)從存儲(chǔ)單元傳送到運(yùn)算單元的輸入端口,經(jīng)過(guò)運(yùn)算單元的處理后,再?gòu)倪\(yùn)算單元的輸出端口傳送回存儲(chǔ)單元.由晶體管實(shí)現(xiàn)的運(yùn)算單元在空間上是固定的;而數(shù)據(jù)以電平信號(hào)的方式在存儲(chǔ)器和運(yùn)算單元之間流動(dòng).這說(shuō)明經(jīng)典計(jì)算過(guò)程中,數(shù)據(jù)在空間中是運(yùn)動(dòng)的,而對(duì)數(shù)據(jù)的操作在空間中是靜止的,如圖8(a)所示.經(jīng)典處理器中的存儲(chǔ)和處理一般是分離的.
與經(jīng)典計(jì)算機(jī)不同,固態(tài)量子比特(如超導(dǎo)量子比特)以物理結(jié)構(gòu)的形式固定在量子芯片上,所以量子比特中保存的數(shù)據(jù)是固定不動(dòng)的.在執(zhí)行量子操作時(shí),外部控制器產(chǎn)生模擬控制信號(hào)并施加在量子比特上,控制量子比特的數(shù)據(jù)在本地完成翻轉(zhuǎn)得到運(yùn)算結(jié)果.量子計(jì)算中,對(duì)數(shù)據(jù)的操作在空間中是運(yùn)動(dòng)的,而數(shù)據(jù)在空間中是靜止的,如圖8(b)所示.量子比特既是存儲(chǔ)信息的單元,又是處理數(shù)據(jù)的單元,因此,量子計(jì)算是存內(nèi)計(jì)算(process in memory,PIM)的一個(gè)典范.
Fig.8 The difference of data flow between classical computing and quantum computing圖8 經(jīng)典計(jì)算與量子計(jì)算中數(shù)據(jù)流動(dòng)的差異
意識(shí)到數(shù)據(jù)的存儲(chǔ)和處理相分離這個(gè)特點(diǎn),馮·諾依曼提出一個(gè)存儲(chǔ)程序計(jì)算機(jī)的系統(tǒng)結(jié)構(gòu),即馮·諾依曼體系結(jié)構(gòu).馮·諾依曼體系結(jié)構(gòu)由存儲(chǔ)器、運(yùn)算器、控制器以及輸入、輸出設(shè)備構(gòu)成.根據(jù)所執(zhí)行的指令,控制器從特定存儲(chǔ)單元中取出數(shù)據(jù),轉(zhuǎn)交給算術(shù)邏輯單元進(jìn)行計(jì)算,最后將計(jì)算結(jié)果寫(xiě)回存儲(chǔ)器中.
馮·諾依曼體系結(jié)構(gòu)是經(jīng)典計(jì)算機(jī)體系結(jié)構(gòu)的圭臬,顯著地影響了以往量子計(jì)算機(jī)體系結(jié)構(gòu)的相關(guān)研究[53-59].隨著馮·諾依曼體系結(jié)構(gòu)面臨的存儲(chǔ)墻問(wèn)題日益突顯、NISQ技術(shù)的發(fā)展使得越來(lái)越多的中小規(guī)模量子算法可以運(yùn)行在硬件上,人們逐漸注意到量子計(jì)算機(jī)存算一體的特性.與此同時(shí),研究人員開(kāi)始意識(shí)到,量子計(jì)算機(jī)或許并不需要基于馮·諾依曼體系結(jié)構(gòu)來(lái)構(gòu)建.
由于大規(guī)模系統(tǒng)往往是復(fù)雜的,清晰的層次結(jié)構(gòu)及層次間的接口定義有助于控制構(gòu)建量子計(jì)算機(jī)的復(fù)雜度.工程化實(shí)現(xiàn)量子計(jì)算機(jī)需要解決的核心問(wèn)題是:量子計(jì)算系統(tǒng)中的抽象層次結(jié)構(gòu)及各層間的接口應(yīng)如何定義?
基于QRAM模型,我們之前的工作[21,60-61]從高層抽象的視角提出了一個(gè)量子計(jì)算系統(tǒng)層次結(jié)構(gòu),如圖9所示:
Fig.9 Overview of quantum computer system stack based on the circuit model[60]圖9 基于線(xiàn)路模型的量子計(jì)算系統(tǒng)層次結(jié)構(gòu)[60]
人們?cè)O(shè)計(jì)各類(lèi)量子算法用于解決特定問(wèn)題.一個(gè)合格的量子算法,其復(fù)雜度應(yīng)優(yōu)于解決同一問(wèn)題的最佳經(jīng)典算法[26].根據(jù)量子隨機(jī)訪(fǎng)問(wèn)機(jī)器(quantum random access machine,QRAM)模型[62],量子算法的設(shè)計(jì)可結(jié)合使用量子計(jì)算資源和經(jīng)典計(jì)算資源.計(jì)算資源包括存儲(chǔ)資源(如經(jīng)典寄存器、存儲(chǔ)器和量子寄存器等)和可使用的操作(如對(duì)經(jīng)典數(shù)據(jù)的算術(shù)邏輯操作與對(duì)量子比特的門(mén)操作和測(cè)量操作等).解決具體問(wèn)題的量子算法采用高級(jí)量子程序設(shè)計(jì)語(yǔ)言(Programming Paradigm &Languages)來(lái)描述.為支持量子-經(jīng)典異構(gòu)量子算法,一個(gè)量子應(yīng)用程序可能使用一種或多種經(jīng)典的或量子的高級(jí)程序設(shè)計(jì)語(yǔ)言.編譯器(compiler)采用該描述作為輸入,執(zhí)行可逆邏輯綜合、量子門(mén)的分解、量子比特的映射和調(diào)度、量子線(xiàn)路的優(yōu)化,并輸出量子軟硬件接口(Q SW-HW Interface)格式的程序表示.量子軟硬件接口可由量子指令集和波形定義接口組成.量子控制微體系結(jié)構(gòu)(microarchitecture)執(zhí)行屬于軟硬件接口中的指令.量子控制體系結(jié)構(gòu)支持精確的時(shí)序控制,可實(shí)時(shí)將量子指令翻譯為時(shí)序精確的控制信號(hào).最后,基于特定的量子技術(shù),如超導(dǎo)量子比特、離子阱等,控制信號(hào)被轉(zhuǎn)換成通過(guò)軟硬件接口定義的模擬波形,并通過(guò)量子經(jīng)典(quantum to classical)接口發(fā)送到量子芯片(quantum chip).
如圖9系統(tǒng)堆棧的左側(cè)面所示,當(dāng)量子算法的執(zhí)行時(shí)間較長(zhǎng)而需要使用量子糾錯(cuò)[12]時(shí),量子編譯器、量子指令集和控制微體系結(jié)構(gòu)需添加額外的支持.此時(shí),高級(jí)量子程序設(shè)計(jì)語(yǔ)言中使用的量子比特和量子操作一般是邏輯量子比特和邏輯量子操作.量子編譯器在進(jìn)行與硬件無(wú)關(guān)的線(xiàn)路優(yōu)化之后,需根據(jù)使用的量子糾錯(cuò)編碼,將邏輯量子操作翻譯為作用在物理量子比特上的物理量子操作.量子控制微體系結(jié)構(gòu)還需進(jìn)行實(shí)時(shí)量子錯(cuò)誤檢測(cè)和校正[63-64].它利用輔助量子比特對(duì)數(shù)據(jù)量子比特進(jìn)行量子校驗(yàn),生成錯(cuò)誤癥狀(error syndrome)、根據(jù)錯(cuò)誤癥狀推斷可能的錯(cuò)誤、記錄這些錯(cuò)誤信息或在必要時(shí)觸發(fā)合適的量子門(mén)來(lái)糾正量子錯(cuò)誤.
雖然圖9所示層次結(jié)構(gòu)明確了量子算法從設(shè)計(jì)到最終的硬件運(yùn)行所需經(jīng)過(guò)的各個(gè)階段,但并未討論如何組織和管理量子和經(jīng)典軟硬件資源從而完成量子-經(jīng)典異構(gòu)計(jì)算.針對(duì)該問(wèn)題,面向NISQ技術(shù)水平,我們提出青果(Quingo)量子-經(jīng)典異構(gòu)系統(tǒng)框架用于集成并管理量子-經(jīng)典軟件和硬件[24],如圖10所示.
青果旨在為量子-經(jīng)典異構(gòu)應(yīng)用及量子實(shí)驗(yàn)提供一個(gè)靈活、精簡(jiǎn)的編程框架,并能夠?qū)⑦@些應(yīng)用映射到NISQ硬件上執(zhí)行.青果框架包含量子程序、編譯器、硬件平臺(tái)和運(yùn)行時(shí)系統(tǒng)等4個(gè)主要組成部分.青果定義的量子程序六階段生命周期模型描述了4個(gè)主要組成部分間的交互.
青果框架下,一個(gè)完整的量子程序生命周期可分為6個(gè)階段.第1步,程序編寫(xiě).用戶(hù)首先使用包含了經(jīng)典主程序和量子內(nèi)核的混合程序來(lái)描述量子應(yīng)用.經(jīng)典主程序描述經(jīng)典計(jì)算并通過(guò)編程環(huán)境提供的接口調(diào)用量子內(nèi)核.主程序使用經(jīng)典程序設(shè)計(jì)語(yǔ)言(如Python或C語(yǔ)言)編寫(xiě).量子內(nèi)核使用量子程序設(shè)計(jì)語(yǔ)言(如Quingo)描述發(fā)生在量子協(xié)處理器上的計(jì)算任務(wù).第2步,經(jīng)典編譯.經(jīng)典編譯器(如GNU Compilation Collection(GCC))編譯經(jīng)典主程序,并生成經(jīng)典二進(jìn)制文件.若經(jīng)典主程序使用解釋型語(yǔ)言描述,如Python,則第2步可以跳過(guò).第3步,經(jīng)典預(yù)處理.(編譯后的)經(jīng)典主程序隨后交由經(jīng)典主機(jī)運(yùn)行,直到調(diào)用量子內(nèi)核為止.此時(shí),調(diào)用量子內(nèi)核所需的參數(shù)全部確定,進(jìn)而可啟動(dòng)第4步——量子編譯.這一步中,量子編譯器編譯量子程序,并可利用第3步提供的內(nèi)核調(diào)用參數(shù),使用例如部分執(zhí)行等編譯優(yōu)化技術(shù),優(yōu)化量子內(nèi)核,生成量子指令程序、量子操作對(duì)應(yīng)的波形及其他配置信息.第5步,量子執(zhí)行.量子協(xié)處理器根據(jù)第4步生成的波形和配置信息等,配置量子控制體系結(jié)構(gòu),然后執(zhí)行量子指令程序控制量子比特進(jìn)行狀態(tài)翻轉(zhuǎn)完成量子核心計(jì)算過(guò)程.量子核心計(jì)算結(jié)束后,返回計(jì)算結(jié)果.第6步,經(jīng)典后處理.經(jīng)典主程序繼續(xù)運(yùn)行,對(duì)量子內(nèi)核的計(jì)算結(jié)果進(jìn)行后處理.如果有必要,第3~6步可反復(fù)執(zhí)行多次,從而產(chǎn)生足夠好的計(jì)算結(jié)果.為了支持上述運(yùn)行過(guò)程,青果硬件平臺(tái)需包括1個(gè)經(jīng)典主機(jī)、1個(gè)量子協(xié)處理器和1個(gè)可供主機(jī)和協(xié)處理器訪(fǎng)問(wèn)的共享內(nèi)存.運(yùn)行時(shí)系統(tǒng)是青果必不可少的軟件環(huán)境,其地位類(lèi)似于經(jīng)典計(jì)算機(jī)的操作系統(tǒng).它包含5個(gè)主要的部分:①用于配置運(yùn)行環(huán)境的系統(tǒng)配置器;②向經(jīng)典主程序提供的量子內(nèi)核調(diào)用接口;③用于訪(fǎng)問(wèn)不同量子硬件的后端接口;④支持主程序和量子內(nèi)核間的數(shù)據(jù)傳遞的參數(shù)轉(zhuǎn)換器;⑤用于管理量子程序階段并在各階段觸發(fā)相應(yīng)行為(如量子編譯和量子執(zhí)行)的階段管理器.關(guān)于青果框架的更多設(shè)計(jì)細(xì)節(jié),感興趣的讀者可參考文獻(xiàn)[24].
1.4節(jié)和1.5節(jié)已分別介紹了頂層量子算法和底層物理量子比特實(shí)現(xiàn)及其控制對(duì)量子-經(jīng)典接口的需求.本文接下來(lái)采用一種自頂向下的方法,于第4~7節(jié)分別介紹面向NISQ技術(shù)的量子程序設(shè)計(jì)語(yǔ)言、量子編譯器、量子軟硬件接口和量子控制微體系結(jié)構(gòu)在整個(gè)計(jì)算系統(tǒng)中的功能定位、關(guān)鍵技術(shù)或設(shè)計(jì)思路和已有的實(shí)現(xiàn)等.同時(shí),在每節(jié)最后,我們將以1.4節(jié)中的IPE算法為例,介紹量子算法如何從高級(jí)程序設(shè)計(jì)語(yǔ)言描述一步步被轉(zhuǎn)換為在硬件上可執(zhí)行的表示以及其在硬件上的執(zhí)行過(guò)程.
程序設(shè)計(jì)語(yǔ)言位于量子計(jì)算系統(tǒng)層次結(jié)構(gòu)中的第2層,其核心功能是提供靈活而高效的方式來(lái)描述量子算法,并在必要時(shí)允許用戶(hù)描述算法在運(yùn)行時(shí)的部分底層細(xì)節(jié),從而實(shí)現(xiàn)量子應(yīng)用的最優(yōu)化執(zhí)行.基于此定義,量子程序設(shè)計(jì)語(yǔ)言應(yīng)該具備3個(gè)層次的特性.
1)完備的表達(dá)能力.所謂完備,是指語(yǔ)言通過(guò)對(duì)量子計(jì)算系統(tǒng)中可用的軟硬件資源提供合適的抽象,從而向用戶(hù)提供描述任意基于QRAM模型的量子算法的能力.具體而言,則包括:①完備的類(lèi)型系統(tǒng)以描述可用的軟硬件資源;②完備的基本操作集合以描述任意計(jì)算操作.量子程序設(shè)計(jì)語(yǔ)言不僅要支持量子類(lèi)型與量子操作,還應(yīng)支持經(jīng)典類(lèi)型與經(jīng)典操作.需要注意的是,這種完備性并非必須由單個(gè)語(yǔ)言提供,也可以通過(guò)2種甚至多種程序設(shè)計(jì)語(yǔ)言協(xié)同配合以完成對(duì)量子-經(jīng)典異構(gòu)算法的描述.例如使用類(lèi)似于OpenCL[65]的編程框架,可將量子算法表述為一個(gè)經(jīng)典主機(jī)程序和若干量子內(nèi)核函數(shù)的組合.經(jīng)典主機(jī)程序使用經(jīng)典程序設(shè)計(jì)語(yǔ)言(如Python,C++)編寫(xiě),描述量子算法中所需的經(jīng)典計(jì)算邏輯,并調(diào)用量子內(nèi)核.量子內(nèi)核負(fù)責(zé)描述可被量子硬件加速的特定計(jì)算任務(wù).可使用嵌入在經(jīng)典程序設(shè)計(jì)語(yǔ)言中的庫(kù)如Qiskit[66],QPanda[67]等或獨(dú)立的量子程序設(shè)計(jì)語(yǔ)言[23,68]如Quingo[24],Q#[69]編寫(xiě).
2)高抽象層次語(yǔ)法與低級(jí)控制機(jī)制.由于NISQ技術(shù)的限制,量子程序設(shè)計(jì)語(yǔ)言在采用高抽象層次語(yǔ)法的同時(shí),還需向用戶(hù)提供對(duì)硬件進(jìn)行低級(jí)控制的機(jī)制,例如,對(duì)量子操作采用的波形與操作發(fā)生的時(shí)序進(jìn)行編程控制.現(xiàn)有的高級(jí)量子程序設(shè)計(jì)語(yǔ)言包括Scaffold[70],PyQuil[71],Cirq[72],ProjectQ[73],Q#[69],OpenQL[74],Quipper[75]與Quingo[24]等.其中,Scaffold,Q#與Quingo是獨(dú)立的量子程序設(shè)計(jì)語(yǔ)言,而其他語(yǔ)言則嵌入在一門(mén)經(jīng)典程序設(shè)計(jì)語(yǔ)言(如Python,C++,Haskell等)中,所以是嵌入式領(lǐng)域特定語(yǔ)言(embedded Domain-Specific Language,eDSL).eDSL的主要優(yōu)勢(shì)在于可以復(fù)用宿主語(yǔ)言的編譯器與程序庫(kù).eDSL的不足之處在于需采用元編程(meta-programming)的方式構(gòu)造量子線(xiàn)路或描述實(shí)時(shí)經(jīng)典計(jì)算邏輯,該過(guò)程不直觀、易出錯(cuò),尤其是無(wú)法較好地支持實(shí)時(shí)的分支和循環(huán)等程序結(jié)構(gòu).不少高級(jí)量子程序設(shè)計(jì)語(yǔ)言(如Quingo,PyQuil)對(duì)低級(jí)控制機(jī)制開(kāi)展了探索性的支持.
3)面向領(lǐng)域的特殊語(yǔ)法支持.量子程序設(shè)計(jì)語(yǔ)言本質(zhì)上是一類(lèi)領(lǐng)域特定語(yǔ)言,通常在語(yǔ)言層面提供了面向量子計(jì)算這一特定領(lǐng)域的語(yǔ)法工具.量子算法中存在若干常用編程模式,包括量子比特資源管理、并行量子操作、受控量子門(mén)(controlled gate)、量子門(mén)求逆(reversed gate)與反計(jì)算(uncomputation)等.現(xiàn)有的量子程序設(shè)計(jì)語(yǔ)言對(duì)上述編程模式有不同程度的支持,這些語(yǔ)法特性不僅可以簡(jiǎn)化算法的描述,減少編程錯(cuò)誤,還可以輔助編譯器執(zhí)行代碼分析與優(yōu)化.
Fig.11 The classical host program of IPE algorithm圖11 迭代相位估計(jì)(IPE)算法的經(jīng)典主程序
Fig.12 The Quingo kernel program of IPE algorithm圖12 IPE算法的Quingo內(nèi)核程序
量子編譯器[76]負(fù)責(zé)解析高級(jí)程序設(shè)計(jì)語(yǔ)言描述的量子程序,對(duì)量子程序進(jìn)行與硬件無(wú)關(guān)或相關(guān)的優(yōu)化過(guò)程,并生成量子硬件可執(zhí)行的格式.
與面向馮·諾依曼體系結(jié)構(gòu)的經(jīng)典編譯器相比,量子編譯器有若干特別或不同之處.
1)量子編譯器作為一款經(jīng)典軟件運(yùn)行在經(jīng)典處理器上,但生成運(yùn)行在量子協(xié)處理器上的低級(jí)量子程序.因此量子編譯天然地是一個(gè)交叉編譯的過(guò)程.
2)量子編譯的主要操作對(duì)象不同.經(jīng)典編譯器操作和優(yōu)化的主要對(duì)象是數(shù)據(jù).因此,在條件允許的情況下,經(jīng)典編譯器可采用諸如常量傳播的方法來(lái)優(yōu)化代碼.但如第2節(jié)所述,量子計(jì)算是典型的存內(nèi)計(jì)算,量子程序的主體是描述施加在量子比特上的量子操作序列.此外,由于量子狀態(tài)是不可克隆的且量子比特中保存的信息對(duì)編譯器不可見(jiàn),因此量子編譯器操作和優(yōu)化的對(duì)象主要是量子操作而非量子比特中的數(shù)據(jù).需說(shuō)明的是,量子編譯的優(yōu)化過(guò)程高度依賴(lài)量子操作序列之間的等價(jià)性,在優(yōu)化量子操作序列時(shí)難以使用如常量傳播等經(jīng)典優(yōu)化技術(shù).
3)面向NISQ技術(shù)的量子編譯器需要考慮量子操作的時(shí)序.一方面,經(jīng)典編譯過(guò)程中,通??杉僭O(shè)數(shù)據(jù)能夠在存儲(chǔ)單元中保存無(wú)限長(zhǎng)的時(shí)間,而量子編譯器則必須始終應(yīng)對(duì)NISQ量子比特相干時(shí)間非常短暫這個(gè)挑戰(zhàn).這導(dǎo)致量子編譯器須通過(guò)量子比特的映射和調(diào)度、量子操作的調(diào)度等優(yōu)化方法來(lái)盡可能縮短量子程序執(zhí)行的絕對(duì)時(shí)長(zhǎng).另一方面,一些量子編譯器會(huì)通過(guò)物理系統(tǒng)在不同的哈密頓量下演化的等價(jià)性來(lái)優(yōu)化量子波形[77].這個(gè)過(guò)程中,量子操作的時(shí)序是一個(gè)高度相關(guān)的參量.
4)量子編譯器需要考慮更多物理實(shí)現(xiàn)細(xì)節(jié),比如物理系統(tǒng)所支持的通用量子門(mén)集合、量子比特間的連接拓?fù)浣Y(jié)構(gòu)、量子操作的時(shí)序等.這擴(kuò)展了程序的優(yōu)化空間,但也使得優(yōu)化過(guò)程更具有挑戰(zhàn).
5)因?yàn)樵贜ISQ時(shí)代量子比特?cái)?shù)量少且相干時(shí)間短等特點(diǎn),人們更愿意在量子編譯上付出更多的努力對(duì)量子操作序列進(jìn)行優(yōu)化.量子編譯優(yōu)化的過(guò)程中,一個(gè)常見(jiàn)的做法是在每次物理實(shí)驗(yàn)之前重新編譯量子程序,這使得許多經(jīng)典輸入數(shù)值從未知變?yōu)橐阎猍23].在此基礎(chǔ)上,量子編譯器可以去除一些分支結(jié)構(gòu),進(jìn)行經(jīng)典數(shù)值的常量傳播、循環(huán)展開(kāi)等優(yōu)化,最大限度挖掘優(yōu)化的可能.這些優(yōu)化有時(shí)被稱(chēng)為部分執(zhí)行(partial execution)[78].
多數(shù)量子編譯器的工作過(guò)程可以大致劃分為2個(gè)階段,如圖13所示.首先,編譯器前端解析量子程序并創(chuàng)建中間表示(intermediate representation,IR).然后,編譯器后端施加與平臺(tái)無(wú)關(guān)或相關(guān)的多種變換,包括門(mén)分解、邏輯綜合、量子線(xiàn)路、量子比特的調(diào)度和映射等.最后,編譯器輸出量子硬件可執(zhí)行的格式,多為量子匯編.編譯器在保證邏輯正確的前提下,通過(guò)優(yōu)化來(lái)減少所需的量子比特?cái)?shù)和量子操作數(shù)量(特別是開(kāi)銷(xiāo)較大或錯(cuò)誤率較高的門(mén),如施加在Transmon上的兩量子比特門(mén)[79]),從而減少所需的硬件資源、縮短量子程序執(zhí)行時(shí)間并提高計(jì)算結(jié)果的保真度.
Fig.13 The workflow of quantum compilers圖13 量子編譯器的工作流程
中間表示是編譯所依賴(lài)的數(shù)據(jù)結(jié)構(gòu).一般而言,后端每種變換的輸入和輸出都為中間表示.有的量子編譯器直接將抽象語(yǔ)法樹(shù)(abstract syntax tree,AST)作為中間表示[80],有的使用量子操作命令列表[81].另一種比較流行的中間表示方法是有向無(wú)環(huán)圖(directed acyclic graph,DAG)[82].和傳統(tǒng)編譯器中使用的依賴(lài)關(guān)系圖不同的是,量子編譯DAG中某些門(mén)可以交換順序,這是由量子計(jì)算的特點(diǎn)所決定的[77].DAG能夠較好地表達(dá)量子線(xiàn)路,但在表達(dá)、分析和變換量子-經(jīng)典混合代碼上有一定的困難.因而這些編譯器僅能處理固定的量子線(xiàn)路,其中不得包含分支、循環(huán)等經(jīng)典控制結(jié)構(gòu)(如圖12中的if語(yǔ)句).為了適應(yīng)量子-經(jīng)典異構(gòu)計(jì)算,人們嘗試擴(kuò)展經(jīng)典編譯器的中間表示,如使用Low-Level Virtual Machine(LLVM)[83]或Multi-Level IR(MLIR)[84],來(lái)表示量子程序[85-87].這方面的研究才剛剛開(kāi)始,尚未出現(xiàn)廣泛使用的標(biāo)準(zhǔn).
后端是量子編譯器的主體,往往要反復(fù)進(jìn)行多種變換,其中常見(jiàn)的包括6類(lèi).
1)門(mén)分解.物理量子系統(tǒng)所支持的量子門(mén)操作種類(lèi)和精度都比較有限.編譯器需將用戶(hù)程序中使用的其他量子門(mén)操作分解為系統(tǒng)支持的門(mén)操作.對(duì)于單量子比特門(mén),已經(jīng)有算法能夠給出指定精度下最優(yōu)的分解方法[88].對(duì)于多量子比特門(mén),相關(guān)研究也取得了很大進(jìn)展[89-90].門(mén)分解不僅使得各種量子算法可以運(yùn)行在實(shí)際的物理平臺(tái)上,還可能帶來(lái)額外的優(yōu)化空間.
2)邏輯綜合.邏輯綜合指的是使用特定的一組門(mén)的組合來(lái)實(shí)現(xiàn)用戶(hù)指定的經(jīng)典計(jì)算邏輯.由于量子計(jì)算為可逆計(jì)算,所以量子編譯中涉及的主要是可逆邏輯綜合[91-92].特別地,量子程序中常用的受控門(mén)有時(shí)需要使用邏輯綜合的方式實(shí)現(xiàn)[79].
3)量子線(xiàn)路變換與化簡(jiǎn).根據(jù)量子操作的特性,編譯器可對(duì)量子線(xiàn)路進(jìn)行變換和化簡(jiǎn).例如,已知HH≡I,就可以去掉連續(xù)出現(xiàn)的2個(gè)H門(mén)而不會(huì)影響量子線(xiàn)路的執(zhí)行結(jié)果.雖然這樣直接優(yōu)化的機(jī)會(huì)并不常見(jiàn),但借助門(mén)分解和量子線(xiàn)路等價(jià)變換可以創(chuàng)造類(lèi)似的優(yōu)化條件.由于求解最優(yōu)量子線(xiàn)路的復(fù)雜度為QMA完全(不低于NP完全)[93],現(xiàn)有的量子線(xiàn)路優(yōu)化方法多基于啟發(fā)式算法[94-95].
4)映射.量子線(xiàn)路中包含的邏輯量子比特需要映射到物理平臺(tái)中.平臺(tái)中物理比特?cái)?shù)量有限,而且往往存在諸多約束,比如兩量子比特門(mén)操作只能施加到一些特定的量子比特對(duì).如果程序中的兩量子比特門(mén)作用的量子比特沒(méi)有被映射到可施加兩量子比特門(mén)的物理量子比特上,編譯器就不得不在量子線(xiàn)路中添加額外的操作,比如SWAP,將這2個(gè)比特移動(dòng)到約束允許的位置[96].可見(jiàn),這種情況引發(fā)的額外開(kāi)銷(xiāo)與映射量子比特的位置有關(guān).因?yàn)榍蠼庾顑?yōu)映射為NP完全問(wèn)題[97],所以現(xiàn)有的映射算法也多是啟發(fā)式的[97-101].
5)調(diào)度.針對(duì)NISQ技術(shù)量子相干時(shí)間較短的問(wèn)題,量子編譯過(guò)程中會(huì)特別注意量子操作的時(shí)序調(diào)度.比如文獻(xiàn)[82]中使用類(lèi)似于盡可能遲(as late as possible,ALAP)算法調(diào)度量子線(xiàn)路中的門(mén)操作,減少了多個(gè)門(mén)操作的間隔時(shí)間,故而能提高程序的保真度.有的物理平臺(tái)不允許同時(shí)向不同量子比特施加不同操作,那么編譯器就需要據(jù)此對(duì)量子線(xiàn)路重新進(jìn)行調(diào)度.
6)量子最優(yōu)控制.量子最優(yōu)控制算法通過(guò)物理系統(tǒng)在不同的哈密頓量下演化的等價(jià)性,試圖尋找從當(dāng)前量子狀態(tài)變換到目標(biāo)量子狀態(tài)的最優(yōu)演化路徑.一個(gè)常用的方法是梯度下降方法,比如GRAPE(GRadient Ascent Pulse Engineering)算法[102],以提高程序運(yùn)行的保真度.算法得到的結(jié)果是量子控制波形,而不是一般意義上的量子芯片指令[77].
值得說(shuō)明的是,以上變換并非孤立存在.比如量子門(mén)的分解影響到線(xiàn)路的優(yōu)化,調(diào)度與映射往往緊密相關(guān).編譯器需要從整體的角度優(yōu)化用戶(hù)程序,綜合考慮物理平臺(tái)在時(shí)間和空間上的約束,以輸出較為理想的結(jié)果.
隨著量子計(jì)算日益升溫,量子編譯器的研究也逐漸活躍起來(lái).首先,幾乎每種量子編程語(yǔ)言都有對(duì)應(yīng)的編譯器,比如Scaffold[70](ScaffCC[78]),Quil[103](QuilC[104]),Q#[69],Quipper[75],Quingo[24]等.其他編譯器則包括Qiskit[66],ProjectQ[73],Cirq[72],SQIR[105],Strawberry Fields[106],staq[80],t|ket〉[107]等,它們編譯的量子程序多數(shù)使用Python描述.
在圖14中,我們借助微軟QIR[86]風(fēng)格的中間表示來(lái)說(shuō)明圖12中的編譯過(guò)程.首先,第1行顯示的是函數(shù)頭部聲明,基本和量子程序中的寫(xiě)法一致.第2行的標(biāo)號(hào)表示一個(gè)基本塊的開(kāi)始.每個(gè)基本塊中包含若干順序執(zhí)行的語(yǔ)句.第3行為局部變量%theta分配內(nèi)存空間,并在第4行初始化為0.注意,中間表示一般采用靜態(tài)單賦值(static single assignment,SSA)形式,即每個(gè)變量只允許在一條語(yǔ)句中被賦值,以便于后續(xù)的分析優(yōu)化.因此在為%theta賦值時(shí),要使用指針,而不能直接賦值.第5行和第6行調(diào)用函數(shù)@__quantum__qubit_allocate分配2個(gè)邏輯量子比特.
Fig.14 The IR of the code snippets of IPE algorithm圖14 IPE算法代碼片段的中間表示
然后,為了說(shuō)明平臺(tái)無(wú)關(guān)的優(yōu)化,我們重點(diǎn)關(guān)注圖12中第19~22行的翻譯結(jié)果.圖14第9行對(duì)應(yīng)量子程序中的measure操作.其結(jié)果在第20行被用作分支語(yǔ)句br的條件.無(wú)論哪個(gè)分支被執(zhí)行,在進(jìn)入continue__2后,%ancilla一定處于|0〉態(tài),而H|0〉≡Ry(π/2)|0〉,因此可以使用開(kāi)銷(xiāo)較小的Ry(π/2)門(mén)來(lái)替代第22行的H門(mén),以提高程序的性能.
接下來(lái),我們利用圖12中26,27兩行說(shuō)明平臺(tái)相關(guān)的優(yōu)化.由于Transmon量子比特較少直接使用Rz門(mén),所以編譯器要將其轉(zhuǎn)變?yōu)镽x和Ry門(mén),依據(jù)的原理為Rz(θ)=Rx(π/2)Ry(θ)Rx(-π/2).由于H≡Ry(-π/2)Rx(π),所以H門(mén)分解得到的第1個(gè)操作Rx(π)可與Rz(θ)分解得到的最后一個(gè)操作Rx(π/2)合并為Rx(3π/2),也即Rx(-π/2).綜上,源程序中的Rz與H兩個(gè)門(mén)可以轉(zhuǎn)換為圖12第24~27行的4個(gè)量子門(mén).
最后,@__quantum__qubit_release函數(shù)將2個(gè)量子比特釋放.在本例中,編譯器將%ancilla和%eigenstate這2個(gè)邏輯量子比特映射到編號(hào)為0和1的2個(gè)物理量子比特,因?yàn)樗鼈冎С謨闪孔颖忍亻T(mén).
經(jīng)量子編譯器優(yōu)化之后的量子程序,最終被轉(zhuǎn)換成為量子軟硬件接口(Q SW-HW Interface)定義的接口格式.量子軟硬件接口向量子軟件(如編譯器等)提供一組靈活、易用的硬件編程接口,使量子程序可運(yùn)行在量子硬件上.量子軟硬件接口包含模擬信號(hào)的定義方式和量子指令集2部分.前者用于定義實(shí)現(xiàn)量子操作或量子線(xiàn)路的模擬信號(hào).后者用于支持結(jié)構(gòu)化的量子程序描述、以精確的時(shí)序觸發(fā)模擬信號(hào)的產(chǎn)生以及實(shí)現(xiàn)基于測(cè)量結(jié)果的反饋控制等.
如1.5節(jié)所述,對(duì)超導(dǎo)量子比特的量子操作通過(guò)施加微波脈沖實(shí)現(xiàn).一方面,由于不同的實(shí)驗(yàn)環(huán)境選擇使用不同的電子設(shè)備,且各類(lèi)電子設(shè)備可能使用不同的模擬信號(hào)數(shù)據(jù)格式,因此不同的實(shí)驗(yàn)環(huán)境使用的模擬信號(hào)數(shù)據(jù)格式不盡相同.另一方面,作用在基于不同技術(shù)的量子比特或相同技術(shù)但不同參數(shù)的量子比特上的量子操作所需的模擬控制信號(hào)細(xì)節(jié)不盡相同,如頻率、幅度、相位等.這導(dǎo)致人們?cè)诮涣魇褂玫目刂菩盘?hào)時(shí),更多地在數(shù)學(xué)的層面,而不是直接基于模擬信號(hào)的格式進(jìn)行描述.為了增加交流的效率,IBM于2018年提出OpenPulse,提供了一種模擬信號(hào)的定義格式[108].
與模擬信號(hào)的定義相比,使用指令來(lái)表示量子操作能夠提供更抽象的量子計(jì)算語(yǔ)義與更精簡(jiǎn)的低層次量子程序描述.通過(guò)指令的執(zhí)行實(shí)時(shí)地控制模擬信號(hào)的產(chǎn)生,還可以有效地減少量子軟硬件間傳遞的數(shù)據(jù)量[60].隨著量子程序規(guī)模的增長(zhǎng),這種方案更具有可擴(kuò)展性.結(jié)合使用經(jīng)典指令,量子二進(jìn)制可支持結(jié)構(gòu)化的量子程序描述和基于量子測(cè)量的反饋控制.這有助于提高量子二進(jìn)制表達(dá)能力且減小二進(jìn)制代碼的體積.量子-經(jīng)典異構(gòu)系統(tǒng)中,經(jīng)典處理器具備強(qiáng)大的經(jīng)典計(jì)算能力.由于經(jīng)典處理器與量子協(xié)處理器二者間的通信延遲較大,經(jīng)典處理器可用于執(zhí)行不要求實(shí)時(shí)性的經(jīng)典計(jì)算任務(wù).因此,量子指令集中包含的經(jīng)典指令主要用于程序流的控制和寄存器的更新.
在量子控制系統(tǒng)尚未充分發(fā)展時(shí),人們已啟動(dòng)了對(duì)量子匯編的研究.這些構(gòu)成了后續(xù)量子指令集研究的基礎(chǔ).Nielsen和Chuang最早提出量子匯編(quantum assembly,QASM),其目標(biāo)是提供量子線(xiàn)路的文本描述格式,用于所著教材《量子計(jì)算和量子信息》[26]中量子線(xiàn)路圖的繪制.此后,Svore等人將QASM作為量子編譯器使用的一種低級(jí)中間表示[76].在QASM的基礎(chǔ)上,研究人員不斷提出不同的量子匯編,如QASM-HL[78]、OpenQASM[109]、Quil[103]、帶反饋的量子匯編(f-QASM)[110]、通用匯編(cQASM)[111]、可執(zhí)行的量子匯編(eQASM)[112],從不同的維度增強(qiáng)了量子匯編的表達(dá)能力,包括結(jié)構(gòu)化的量子程序描述[78,103,109,111-112]、基于量子測(cè)量結(jié)果的反饋控制[103,109-110,112]、量子-經(jīng)典指令的混合執(zhí)行[103,112]、單操作多量子比特執(zhí)行[112]、精確的時(shí)序控制[112]、硬件可執(zhí)行性[112]等.雖然歷史上匯編語(yǔ)言作為二進(jìn)制程序的可讀化表示而出現(xiàn),現(xiàn)有絕大部分量子匯編僅僅是量子程序的低層次表示,不能或難以在硬件上直接執(zhí)行.eQASM是第1個(gè)可執(zhí)行的量子匯編,它定義了1套簡(jiǎn)單的映射規(guī)則,可將匯編指令映射為可在QuMA微體系結(jié)構(gòu)[60]上執(zhí)行的二進(jìn)制指令.同時(shí),eQASM可支持全面的程序流控制、精確的時(shí)序控制等,可較好地描述絕大部分的量子算法和一系列常用量子實(shí)驗(yàn)[112-114].本文將以eQASM為例介紹量子程序的軟硬件接口表示.
eQASM的設(shè)計(jì)面向量子-經(jīng)典異構(gòu)計(jì)算,eQASM僅用于描述發(fā)生在量子協(xié)處理器上的計(jì)算過(guò)程.eQASM程序由量子指令和輔助經(jīng)典指令混合組成.量子指令分為3類(lèi):1)設(shè)置量子操作目標(biāo)寄存器的指令(SMIS和SMIT);2)指定量子操作間的時(shí)間間隔的指令(QWAIT和QWAITR);3)基于超長(zhǎng)指令字的量子操作指令(quantum bundle).關(guān)于eQASM的更多設(shè)計(jì)思路和技術(shù)細(xì)節(jié)可參考文獻(xiàn)[112,115].
經(jīng)量子編譯器編譯后,圖12中的程序被翻譯為一組波形,對(duì)應(yīng)常用量子操作,如Rx,Ry和CZ等,以及一個(gè)量子指令程序.這里主要介紹量子指令程序.圖12中的for循環(huán)可被翻譯成圖15所示的eQASM程序(1)代碼4使用的是一個(gè)擴(kuò)展版的eQASM,添加了對(duì)參數(shù)化的旋轉(zhuǎn)操作、浮點(diǎn)寄存器和浮點(diǎn)指令的支持.(受限于文章篇幅,未顯示受控黑盒對(duì)應(yīng)的量子指令).eQASM為了支持單量子操作多量子比特執(zhí)行,量子操作使用間接尋址,即量子操作會(huì)從量子操作目標(biāo)寄存器(如第1行和第2行設(shè)置的s0和s1寄存器)中讀取要操作的目標(biāo)量子比特.圖15中第13~19行實(shí)現(xiàn)ancilla量子比特的初始化.0號(hào)量子比特首先被測(cè)量(第13行),在測(cè)量操作開(kāi)始600 ns,即30個(gè)周期后(假設(shè)每個(gè)周期20 ns),F(xiàn)MR指令將測(cè)量結(jié)果讀取到通用寄存器r9中.若測(cè)量結(jié)果不為0,則在又40 ns之后通過(guò)2,RX s0,3.141592654操作(第18行)將量子比特翻轉(zhuǎn)為|0〉態(tài).該指令開(kāi)始處的2表示該操作開(kāi)始于前一條指令的2個(gè)周期之后.圖12第32~38行利用基于測(cè)量結(jié)果的程序流控制,它們被翻譯為圖15第30~36行.需要注意的是,生成的eQASM代碼中,f1的值(即theta)先被除以2(第32行),然后僅在測(cè)量結(jié)果為1時(shí),f1被加上0.5.圖15第40行更新循環(huán)計(jì)數(shù)器,當(dāng)計(jì)數(shù)器仍然大于或等于0時(shí),就跳轉(zhuǎn)到循環(huán)頭部重新開(kāi)始(第41行).
Fig.15 The eQASM code of IPE algorithm圖15 IPE算法的eQASM實(shí)現(xiàn)代碼示例
量子控制微體系結(jié)構(gòu)(microarchitecture)執(zhí)行量子軟硬件接口格式描述的量子程序,產(chǎn)生時(shí)序精確的模擬信號(hào)控制量子比特的狀態(tài)更新,識(shí)別量子比特的測(cè)量結(jié)果,并完成經(jīng)典寄存器的更新和程序流的控制.如果量子軟硬件接口使用了量子指令,則量子控制微體系結(jié)構(gòu)需將量子指令實(shí)時(shí)翻譯為時(shí)序精確的控制信號(hào).基于特定的量子比特實(shí)現(xiàn)技術(shù)(如超導(dǎo)量子比特),控制信號(hào)被轉(zhuǎn)換為所需的模擬電磁脈沖,并通過(guò)量子-經(jīng)典接口發(fā)送到量子芯片.量子-經(jīng)典(quantum to classical)接口負(fù)責(zé)微體系結(jié)構(gòu)中的數(shù)字信號(hào)與量子比特所需的模擬信號(hào)之間的轉(zhuǎn)換.量子-經(jīng)典接口與量子芯片(quantum chip)的設(shè)計(jì)取決于所使用的量子比特實(shí)現(xiàn)技術(shù).
如1.5節(jié)所述,超導(dǎo)量子處理器的輸入和輸出信號(hào)都是復(fù)雜的模擬信號(hào).對(duì)量子比特的操作(輸入信號(hào))是通過(guò)發(fā)送模擬脈沖來(lái)執(zhí)行的,而量子比特的測(cè)量結(jié)果存在于量子處理器的輸出模擬信號(hào)中.一種常用的產(chǎn)生量子控制脈沖的方法是使用AWG.在執(zhí)行量子算法之前,需要將量子操作對(duì)應(yīng)的脈沖校準(zhǔn)并將每個(gè)脈沖的樣本振幅值陣列上傳至AWG的存儲(chǔ)器中.持續(xù)時(shí)間為T(mén)d的脈沖需要存儲(chǔ)器存儲(chǔ)同相和正交分量的Ns=2·Td·Rs個(gè)樣本,其中Rs是采樣率,通常在1 GSample/s左右.樣本垂直分辨率的典型值在10~16位之間.為了識(shí)別量子比特q的測(cè)量結(jié)果,通常使用模數(shù)轉(zhuǎn)換器將包含了測(cè)量結(jié)果信息的模擬信號(hào)Va(t)數(shù)字化,并進(jìn)行積分和閾值比較:
(8)
其中,Wq(t)和Tq分別是q的校準(zhǔn)權(quán)重函數(shù)和閾值,一般由量子實(shí)驗(yàn)人員進(jìn)行配置.Sq是積分結(jié)果,Mq是最終測(cè)量結(jié)果(0或1).
Fig.16 QuMA quantum control microarchitecture圖16 QuMA系列量子控制微體系結(jié)構(gòu)
回顧近20年來(lái)對(duì)超導(dǎo)量子比特使用的測(cè)量控制(測(cè)控)設(shè)備,我們認(rèn)為已有的面向超導(dǎo)量子比特的測(cè)控系統(tǒng)大體可分為2代.第一代超導(dǎo)量子比特的控制系統(tǒng)主要由模擬設(shè)備構(gòu)成,包括任意波形發(fā)生器和數(shù)據(jù)采集卡等.用戶(hù)通過(guò)將所需產(chǎn)生的控制信號(hào)上傳到AWG的內(nèi)存決定AWG的模擬輸出進(jìn)而完成量子操作.數(shù)據(jù)采集卡將測(cè)量結(jié)果信號(hào)數(shù)字化之后,使用軟件離線(xiàn)地或硬件實(shí)時(shí)地分析量子測(cè)量結(jié)果.這種控制系統(tǒng)的不足有2點(diǎn):1)輸出的波形需在量子應(yīng)用執(zhí)行前完全準(zhǔn)備就緒,并在算法執(zhí)行啟動(dòng)時(shí)開(kāi)始輸出.2)隨著量子應(yīng)用規(guī)模的增加,上傳的波形數(shù)據(jù)量急劇增大,降低了量子應(yīng)用的執(zhí)行效率,這導(dǎo)致波形的輸出難以動(dòng)態(tài)調(diào)整.因此,這種測(cè)控系統(tǒng)難以實(shí)現(xiàn)基于量子比特的測(cè)量結(jié)果的反饋控制.這種控制模式在之前的工作中得到了廣泛的應(yīng)用,如文獻(xiàn)[50,116-118].
針對(duì)2點(diǎn)不足,尤其是為了滿(mǎn)足實(shí)驗(yàn)對(duì)反饋控制的需求,人們開(kāi)始研究基于FPGA定制控制硬件[119-123],并逐步發(fā)展為基于指令集的量子控制系統(tǒng)[16,60,112,124-127].在這類(lèi)控制系統(tǒng)中,基于FPGA的定制控制邏輯在運(yùn)行過(guò)程中生成時(shí)序精確的控制信號(hào),用于實(shí)時(shí)觸發(fā)模擬控制信號(hào)的產(chǎn)生和測(cè)量結(jié)果的識(shí)別.我們將基于定制數(shù)字邏輯(尤其是使用指令集)的量子控制系統(tǒng)稱(chēng)為第2代量子控制系統(tǒng).
第2代控制系統(tǒng)使用的指令集一般缺少明確的量子計(jì)算語(yǔ)義.這些指令語(yǔ)義在較低的硬件層次上,如將在內(nèi)存某地址中保存若干數(shù)量的樣本在特定周期之后開(kāi)始轉(zhuǎn)換成模擬波形輸出,如APS2系統(tǒng)中的WAVEFORM指令[124].但也有部分第2代量子控制系統(tǒng)使用的指令集可具備明確的量子計(jì)算語(yǔ)義,如可支持eQASM指令集的QuMA微體系結(jié)構(gòu).本節(jié)將以QuMA為例,說(shuō)明量子指令在控制微體系結(jié)構(gòu)上的運(yùn)行過(guò)程.關(guān)于QuMA的更多實(shí)現(xiàn)細(xì)節(jié),請(qǐng)參考文獻(xiàn)[60,112].
如圖16所示,QuMA微體系結(jié)構(gòu)由經(jīng)典流水線(xiàn)和量子流水線(xiàn)組成.經(jīng)典流水線(xiàn)從指令存儲(chǔ)器中逐條獲取并處理指令.所有輔助經(jīng)典指令都在經(jīng)典流水線(xiàn)內(nèi)完成執(zhí)行,執(zhí)行時(shí)主要完成經(jīng)典寄存器的更新和程序流的控制.量子指令取出之后被轉(zhuǎn)發(fā)到量子流水線(xiàn)進(jìn)行處理.量子流水線(xiàn)主要實(shí)現(xiàn)3部分的功能:
1)譯碼、尋址.在獲得一條量子指令后,量子流水線(xiàn)需識(shí)別該指令對(duì)應(yīng)的操作是時(shí)序控制、量子操作或配置量子操作目標(biāo)寄存器.如果是量子操作,則需要讀取量子操作的目標(biāo)量子比特.
2)時(shí)序控制.量子操作需要以精確的時(shí)序施加在量子比特上.時(shí)序控制單元用于決定量子操作的發(fā)射時(shí)間.
3)模擬數(shù)字信號(hào)間的轉(zhuǎn)換.量子流水線(xiàn)發(fā)射出來(lái)的是數(shù)字控制信號(hào).這些控制信號(hào)需要實(shí)時(shí)地被轉(zhuǎn)換成模擬脈沖信號(hào),實(shí)現(xiàn)對(duì)量子比特的控制.如果對(duì)應(yīng)的量子操作是測(cè)量,則還需要觸發(fā)對(duì)應(yīng)的硬件開(kāi)始識(shí)別量子比特測(cè)量的結(jié)果.
QuMA微體系結(jié)構(gòu)的存儲(chǔ)器至少包含指令存儲(chǔ)器、波形存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器3部分.指令存儲(chǔ)器用來(lái)裝載量子編譯器生成的原程序的二進(jìn)制格式指令.波形存儲(chǔ)器用于存儲(chǔ)對(duì)應(yīng)于量子操作的波形信息.數(shù)據(jù)存儲(chǔ)器保存量子協(xié)處理器運(yùn)行所需的初始化數(shù)據(jù)及運(yùn)行結(jié)果.
需要注意的是,經(jīng)典微體系結(jié)構(gòu)關(guān)注的是數(shù)據(jù)流的移動(dòng),而量子控制微體系結(jié)構(gòu)關(guān)注的則是如何生成量子操作流.前者操作的是數(shù)據(jù),后者操作的是量子操作.這與第2節(jié)中的討論是一致的.
我們以圖15為例說(shuō)明一個(gè)量子程序在QuMA微體系結(jié)構(gòu)上的執(zhí)行過(guò)程.為了在硬件上執(zhí)行量子程序,用戶(hù)通過(guò)1臺(tái)經(jīng)典計(jì)算機(jī)(一般稱(chēng)為上位機(jī))將生成的量子指令程序和波形分別上傳到指令存儲(chǔ)器和波形存儲(chǔ)器中,并觸發(fā)QuMA開(kāi)始運(yùn)行.QuMA啟動(dòng)執(zhí)行之后,經(jīng)典流水線(xiàn)一條一條地從指令存儲(chǔ)器中讀取指令.經(jīng)典指令在經(jīng)典流水線(xiàn)中完成執(zhí)行,并在執(zhí)行過(guò)程中更新經(jīng)典寄存器、讀取數(shù)據(jù)存儲(chǔ)器和控制程序流(即更新程序計(jì)數(shù)器).量子指令被經(jīng)典流水線(xiàn)轉(zhuǎn)發(fā)給量子流水線(xiàn)進(jìn)行處理.在量子指令譯碼后,用于更新量子操作目標(biāo)寄存器的指令在尋址階段完成執(zhí)行.時(shí)序控制指令被發(fā)送到時(shí)序控制單元,其效果是為下1條量子操作指令預(yù)約觸發(fā)時(shí)間.如QWAIT 30會(huì)給下1條量子操作預(yù)約指令執(zhí)行的開(kāi)始時(shí)刻,該時(shí)刻與上1個(gè)被指定的時(shí)刻間隔30個(gè)周期.量子操作指令在譯碼之后,通過(guò)尋址單元獲得待操作的量子比特,并指導(dǎo)地址解碼單元(如譯碼器)控制該量子操作進(jìn)入對(duì)應(yīng)的任意波形發(fā)生器或測(cè)量結(jié)果識(shí)別單元中.時(shí)序控制單元指定量子操作的觸發(fā)時(shí)刻.之后,量子操作會(huì)以數(shù)字觸發(fā)信號(hào)的格式在目標(biāo)時(shí)刻被發(fā)射給AWG或測(cè)量識(shí)別模塊,觸發(fā)產(chǎn)生對(duì)應(yīng)的模擬脈沖信號(hào)施加在量子比特上控制量子狀態(tài)的翻轉(zhuǎn),或啟動(dòng)測(cè)量結(jié)果的識(shí)別.測(cè)量結(jié)果識(shí)別單元識(shí)別量子比特的測(cè)量結(jié)果之后,會(huì)自動(dòng)將該結(jié)果返回給經(jīng)典流水線(xiàn),供后續(xù)指令的處理.
量子計(jì)算仍然處于高速發(fā)展的階段,量子系統(tǒng)的不同層次仍然面臨著諸多挑戰(zhàn).本節(jié)依次簡(jiǎn)要討論量子程序設(shè)計(jì)語(yǔ)言、量子編譯器、量子軟硬件接口和量子控制微體系結(jié)構(gòu)等層次面臨的相關(guān)挑戰(zhàn).
如引言中所述,NISQ量子算法有2個(gè)主要特點(diǎn):1)量子-經(jīng)典異構(gòu)計(jì)算;2)從應(yīng)用層對(duì)硬件進(jìn)行低級(jí)控制.現(xiàn)有的量子程序設(shè)計(jì)語(yǔ)言對(duì)上述2個(gè)特點(diǎn)的支持均存在不足.
在對(duì)量子-經(jīng)典異構(gòu)算法的支持上,主要問(wèn)題有2個(gè):1)對(duì)程序流控制結(jié)構(gòu)的忽視,導(dǎo)致語(yǔ)言只能描述單一量子線(xiàn)路,如Cirq[72]語(yǔ)言.對(duì)于Q#,Quingo等獨(dú)立語(yǔ)言,在語(yǔ)言層面增加對(duì)流控結(jié)構(gòu)的支持是比較直觀的,而對(duì)于基于經(jīng)典語(yǔ)言的eDSL來(lái)說(shuō),不得不采用元編程的方式向程序中顯式地插入流控結(jié)構(gòu),這會(huì)使得流控的描述很不直觀,降低算法結(jié)構(gòu)的清晰程度以及代碼的可讀性.2)難以實(shí)現(xiàn)包括基于測(cè)量結(jié)果的反饋控制在內(nèi)的量子-經(jīng)典計(jì)算實(shí)時(shí)在線(xiàn)交互,(例如圖12中19~21行與30~34行).導(dǎo)致這一問(wèn)題的根本原因是在語(yǔ)言層面沒(méi)有清晰地界定離線(xiàn)與在線(xiàn)這2種經(jīng)典-量子計(jì)算交互方式,對(duì)于這一挑戰(zhàn),文獻(xiàn)[24]開(kāi)展了一些有意義的探索.
在低級(jí)控制機(jī)制的支持方面,面臨的主要挑戰(zhàn)是如何在高級(jí)語(yǔ)言中實(shí)現(xiàn)與硬件相關(guān)的低級(jí)操作,同時(shí)對(duì)高級(jí)語(yǔ)言可移植性不產(chǎn)生顯著影響.當(dāng)前,Qiskit,PyQuil與Quingo分別以不同的方式對(duì)時(shí)序控制進(jìn)行了支持,但在時(shí)序描述的靈活性與通用性方面存在較大的差異.在量子操作波形的描述方面,IBM提出的OpenPulse[108]試圖提供一種解決方案,但OpenPulse是一種低抽象層次的描述工具,當(dāng)前還不存在任何一種高級(jí)量子語(yǔ)言做出這方面的嘗試,因此仍是一個(gè)開(kāi)放性的問(wèn)題.
量子編譯器使用的中間表示直接影響到量子編譯器的能力邊界,以及優(yōu)化遍的實(shí)現(xiàn)難易程度.因此,人們?cè)谠O(shè)計(jì)IR時(shí),一方面使得編譯器方便優(yōu)化量子程序外,另一方面則力求使其表達(dá)能力盡可能完備.現(xiàn)有的量子中間表示主要關(guān)注如何表達(dá)量子線(xiàn)路、量子線(xiàn)路中使用的二進(jìn)制控制門(mén)(binary-controlled gate)以及量子-經(jīng)典指令的混合執(zhí)行等.
除量子-經(jīng)典異構(gòu)算法外,量子實(shí)驗(yàn)也是一大類(lèi)重要的NISQ應(yīng)用.而在這些實(shí)驗(yàn)中,大多需要顯示地調(diào)整量子操作的時(shí)序及使用到的波形.高級(jí)量子程序設(shè)計(jì)語(yǔ)言在控制量子實(shí)驗(yàn)時(shí)可提供極高的靈活性,表現(xiàn)出極大的潛力,如在PycQED[128]量子測(cè)控軟件環(huán)境中使用的OpenQL語(yǔ)言[74].這些實(shí)驗(yàn)要求量子編譯器能夠表達(dá)并操作量子操作的低層次特性,如時(shí)序及使用的波形等.另一方面,已有研究將量子最優(yōu)控制引入量子編譯優(yōu)化的流程之中,可提高量子程序執(zhí)行結(jié)果的保真度[77].但現(xiàn)有量子中間表示無(wú)法表達(dá)量子操作的時(shí)序及使用的波形等.如何設(shè)計(jì)量子編譯器的中間表示,以支持量子-經(jīng)典異構(gòu)計(jì)算并能夠表達(dá)量子操作的時(shí)序和使用的波形,仍然是一個(gè)開(kāi)放的問(wèn)題.
指令集體系結(jié)構(gòu)是經(jīng)典計(jì)算機(jī)軟硬件間的接口,它承接了2方面的職能.1)它是硬件的編程接口.經(jīng)典計(jì)算機(jī)的軟件可通過(guò)不同的指令組合充分利用經(jīng)典計(jì)算機(jī)提供的計(jì)算能力.2)它提供了經(jīng)典程序在低層次描述上的可移植性.針對(duì)特定體系結(jié)構(gòu)生成的二進(jìn)制程序可運(yùn)行在支持同一體系結(jié)構(gòu)的不同硬件實(shí)現(xiàn)上,如基于x86_64指令集的程序可運(yùn)行在如Intel Core系列和AMD Ryzen系列等不同的處理器上.
但在量子計(jì)算領(lǐng)域,硬件編程接口和低級(jí)描述層面的可移植性這2個(gè)功能被分開(kāi)在不同的層次上.如第7節(jié)所述,現(xiàn)有的硬件編程接口一般通過(guò)波形和定制指令集構(gòu)成.雖然eQASM具備明確的量子計(jì)算語(yǔ)義,但更多的硬件控制系統(tǒng)所使用的指令集并不具備相關(guān)支持,如BBN公司和IBM公司使用的控制系統(tǒng)[16,124].
為了提供量子程序的可移植的低層次描述,人們對(duì)量子匯編開(kāi)展了大量的研究.越來(lái)越多的量子匯編語(yǔ)言(如QASM-HL,OpenQASM,Quil,cQASM)在其規(guī)范中引入了函數(shù)調(diào)用、循環(huán)等高級(jí)語(yǔ)言特性,這離硬件接口這個(gè)目標(biāo)漸行漸遠(yuǎn).
硬件編程接口和低級(jí)描述層面的可移植性這2種功能的分離,一方面使得具體的量子系統(tǒng)需要額外定制一套低層次編譯器或翻譯軟件將量子匯編翻譯為控制硬件可執(zhí)行的格式.這在工程實(shí)現(xiàn)上引入了額外的工作量,增加量子系統(tǒng)維護(hù)人員的負(fù)擔(dān).另一方面,這種分離也導(dǎo)致量子計(jì)算硬件系統(tǒng)無(wú)法形成統(tǒng)一的接口標(biāo)準(zhǔn).未遵循統(tǒng)一標(biāo)準(zhǔn)開(kāi)發(fā)的不同量子控制硬件系統(tǒng)在功能上可能不盡相同,低層次的量子匯編程序難以保證在不同硬件上的可執(zhí)行性.例如,雖然Quil支持實(shí)時(shí)經(jīng)典操作,但現(xiàn)有許多量子控制硬件系統(tǒng)無(wú)法完全支持Quil描述的帶經(jīng)典邏輯的量子程序.
如何實(shí)現(xiàn)硬件編程接口和可移植的程序低層次描述的統(tǒng)一,是一個(gè)尚未解決的問(wèn)題.這對(duì)于NISQ時(shí)代實(shí)現(xiàn)不同量子計(jì)算系統(tǒng)的聯(lián)合發(fā)展具有實(shí)際的工程意義.
量子軟硬件接口使用指令觸發(fā)量子操作對(duì)應(yīng)的波形的一個(gè)隱含前提是,量子操作的脈沖波形在每次觸發(fā)時(shí)是確定的.如多次施加Rx(π)門(mén)在一個(gè)Transmon量子比特上,可以固定地使用圖6左側(cè)所示波形.然而,這個(gè)假設(shè)對(duì)于不同類(lèi)型的量子比特或不同類(lèi)型的量子操作而言未必始終成立.如在Transmon量子比特上施加CZ操作時(shí),一般需要在通量偏置線(xiàn)上短暫地施加一個(gè)直流方波信號(hào).該信號(hào)從任意波形發(fā)生器產(chǎn)生至到達(dá)量子芯片的Pf端口,一般會(huì)經(jīng)過(guò)一個(gè)低通濾波器.該濾波器不僅會(huì)改變信號(hào)的形狀,還會(huì)產(chǎn)生一個(gè)長(zhǎng)拖尾.為了抵消信號(hào)形變和之前的信號(hào)產(chǎn)生的長(zhǎng)拖尾的影響,現(xiàn)有的實(shí)驗(yàn)中一般會(huì)利用軟件提前對(duì)信號(hào)進(jìn)行預(yù)處理,并使用AWG輸出預(yù)處理的信號(hào),使得最終到達(dá)Pf端口的信號(hào)是一個(gè)方波信號(hào).這導(dǎo)致AWG為每個(gè)CZ操作預(yù)存的波形是不一樣的,從而使得基于測(cè)量的實(shí)時(shí)反饋控制難以實(shí)現(xiàn).
這構(gòu)成了基于指令集的量子控制系統(tǒng)所面臨的巨大挑戰(zhàn).為了解決這個(gè)問(wèn)題,研究人員開(kāi)始研究相關(guān)技術(shù)使得靜態(tài)上傳到任意波形發(fā)生器中的波形是固定的.相關(guān)研究主要包含2種方法:1)AWG在輸出波形之前,利用無(wú)限響應(yīng)濾波器進(jìn)行實(shí)時(shí)的波形預(yù)處理,使得量子比特所見(jiàn)波形為預(yù)期波形.目前瑞士蘇黎世儀器公司生產(chǎn)的高密度任意波形發(fā)生器(HDAWG)已實(shí)現(xiàn)了該功能.2)使用新型控制波形,使該波形經(jīng)過(guò)濾波器之后可同樣地更新量子比特狀態(tài),但不會(huì)產(chǎn)生長(zhǎng)拖尾效應(yīng)[129].目前2種方法在小規(guī)模的量子芯片得到了驗(yàn)證.前者在一個(gè)波形500 ns之后仍然會(huì)產(chǎn)生拖尾,而后者生成的受控相位門(mén)的保真度僅可達(dá)99.1%[129].能夠生成與歷史無(wú)關(guān)的量子控制波形是實(shí)現(xiàn)基于指令集并支持基于測(cè)量結(jié)果反饋控制的控制系統(tǒng)的必要條件.如何實(shí)現(xiàn)與歷史無(wú)關(guān)的波形產(chǎn)生是量子控制體系結(jié)構(gòu)面臨的一個(gè)巨大挑戰(zhàn).
現(xiàn)有的量子控制微體系結(jié)構(gòu)中的數(shù)字處理器、AWG和測(cè)量識(shí)別模塊一般通過(guò)定制FPGA實(shí)現(xiàn).受限于FPGA片上存儲(chǔ)大小、輸入輸出管腳數(shù)量、指令執(zhí)行過(guò)程中的量子操作發(fā)射速率[112]等因素,實(shí)驗(yàn)中觀察到平均每塊FPGA可控制的量子比特?cái)?shù)量小于10.已有的量子系統(tǒng)可集成60多個(gè)量子比特[10],且NISQ系統(tǒng)有望在幾年內(nèi)集成幾百乃至上千個(gè)固態(tài)量子比特.因此,使用分布式的量子控制系統(tǒng)是實(shí)現(xiàn)NISQ系統(tǒng)控制的不二選擇.分布式的量子控制系統(tǒng)中,很可能需要在多個(gè)微處理器內(nèi)同時(shí)執(zhí)行多個(gè)二進(jìn)制,協(xié)作完成對(duì)大量量子比特的控制.分布式的量子控制系統(tǒng)需要將同一個(gè)量子應(yīng)用拆分為多個(gè)二進(jìn)制程序,每個(gè)二進(jìn)制程序用于操作一組量子比特.由于量子算法允許任意量子比特之間的反饋控制,反饋控制不僅需要在控制系統(tǒng)的不同設(shè)備之間進(jìn)行傳遞信息(主要是測(cè)量結(jié)果),還需要實(shí)現(xiàn)多個(gè)指令流間的周期級(jí)同步.如何將一個(gè)量子應(yīng)用拆分為多個(gè)二進(jìn)制程序,支持任意量子比特間的任意反饋并保證指令流之間周期級(jí)的同步,仍然是一個(gè)有待解決的問(wèn)題.
隨著邁入含噪中尺度量子技術(shù)時(shí)代,量子軟件與量子硬件對(duì)接并支持量子-經(jīng)典異構(gòu)計(jì)算的需求日益明顯.通過(guò)對(duì)比量子計(jì)算與經(jīng)典計(jì)算的異同,我們發(fā)現(xiàn)量子計(jì)算是典型的存內(nèi)計(jì)算.
由于未知的量子狀態(tài)不可克隆,量子計(jì)算在程序設(shè)計(jì)語(yǔ)言、編譯、體系結(jié)構(gòu)等方面比經(jīng)典計(jì)算更加關(guān)注對(duì)量子操作——而非數(shù)據(jù)——的描述、優(yōu)化和產(chǎn)生.這使得量子計(jì)算機(jī)的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)未必需要基于馮·諾依曼體系結(jié)構(gòu).從工程實(shí)現(xiàn)的視角,本文介紹了量子-經(jīng)典異構(gòu)計(jì)算的宏觀系統(tǒng)層次結(jié)構(gòu),討論了如何組織和管理量子、經(jīng)典軟硬件資源,以支持量子-經(jīng)典異構(gòu)計(jì)算.本文討論了量子程序設(shè)計(jì)語(yǔ)言、量子編譯器、量子軟硬件接口和量子控制微體系結(jié)構(gòu)的功能定位、關(guān)鍵技術(shù)或設(shè)計(jì)思路和已有的實(shí)現(xiàn),并以IPE算法為例介紹了一個(gè)量子計(jì)算算法從高級(jí)程序設(shè)計(jì)語(yǔ)言描述到硬件執(zhí)行的整體流程.本文討論了量子程序設(shè)計(jì)語(yǔ)言、量子編譯器、量子軟硬件接口和量子控制微體系結(jié)構(gòu)等層次在支持量子-經(jīng)典異構(gòu)計(jì)算、時(shí)序控制、量子操作波形控制等方面面臨的挑戰(zhàn).針對(duì)量子計(jì)算系統(tǒng)中的不同層次,本文在相應(yīng)的章節(jié)提供了若干參考文獻(xiàn),以幫助有興趣的讀者深入了解對(duì)應(yīng)領(lǐng)域.我們希望本文可以促進(jìn)人們對(duì)NISQ時(shí)代下量子計(jì)算系統(tǒng)整體結(jié)構(gòu)的理解,并激發(fā)更多相關(guān)研究.
致謝作者感謝朱曉波教授提供的超導(dǎo)量子比特的掃描電鏡照片(圖5).