天天看點

開創性提供量子計算機從軟到硬的完整可程式設計性!Delft提出可執行量子計算指令集eQASM

去年 8 月,荷蘭代爾夫特理工大學博士生付祥及其所在團隊提出了一種針對超導量子計算機的控制微體系結構,首次有機地連接配接了量子軟體和量子硬體,并使傳統處理器的設計技術能夠為量子控制處理器所用(MICRO 2017 最佳論文獎)。

針對現有量子彙編語言資訊密度低、無法在量子硬體上直接執行、難以支援量子程式流控制(如回報控制)等問題,近日,該團隊又開創性地提出了一種可執行的量子計算機指令集架構 eQASM,旨在為量子軟體提供一個通用靈活的硬體抽象,實作量子計算機從軟體到硬體的完整可程式設計性。該論文已于近日被計算機體系結構頂會 HPCA 2019 接收。

研究團隊表示,希望 eQASM 能夠像 RISC-V 指令集(一款傳統計算機領域十分流行的開源指令集)一樣,成為量子計算領域可供業界、學界自由使用的開源指令集。

從量子控制微體系結構出發的指令集架構

以往量子計算工程方面的研究主要集中在兩端上:頂層的軟體系統(如算法設計、語言設計、編譯器、優化、低階彙編語言等);和底層的實體系統實作(如超導、半導體、光子等不同的量子比特的實作、量子晶片結構的設計、量子比特的具體控制等)。由于這兩個方向的發展都還很初級,二者相對獨立,彼此之間的互動有限。這導緻了量子軟體與量子硬體之間的鴻溝:即量子軟體的輸出無法在量子硬體上直接執行,而需要額外的中間翻譯步驟來将二者聯系起來。

具體做法是,量子軟體先輸出低階的量子彙程式設計式,然後額外的中間層軟體将彙程式設計式轉換為多個數字化表示的波形。這些波形包含了所需的全部量子操作。将這些波形上傳到任意波形發生器之後,任意波形發生器通過數模轉換産生出這些模拟波形并打到量子比特上,進而實作量子操作。

但這種方式有三個主要弊端:

  1. 模拟裝置開銷很大,擴充性較差;
  2. 系統的配置時間長,降低了量子比特的使用效率;
  3. 量子軟體提供的靈活的程式設計能力無法被硬體支援。

針對這些問題,去年 8 月,荷蘭代爾夫特理工大學從計算機工程的角度出發,提出了一個通用可程式設計的量子計算機的全系統層次的結構方案(如圖+1 所示),以及一種針對超導量子計算機的控制微體系結構 QuMA(對應圖+1 綠色部分)。QuMA 首次有機地連接配接了量子軟體和量子硬體,使得傳統計算機處理器的設計技術能夠為量子控制處理器所用。

開創性提供量子計算機從軟到硬的完整可程式設計性!Delft提出可執行量子計算指令集eQASM

圖+1:量子計算系統層次概覽(X. Fu et al. MICRO-50, 2017)

經典計算機軟體程式在用進階程式設計語言(如 C++)描述之後,會被編譯器(如 GCC)翻譯為一組指令集(如 x86)中的指令,最後被相應的處理器(如 Intel 處理器)執行。在這個過程中,指令集作為軟體與硬體之間的接口存在,其地位至關重要。

基于 QuMA 的系統與此類似,量子編譯器(如 OpenQL)可以編譯量子程式産生該團隊提出的量子微指令集 QuMIS 中的指令,并在量子控制微體系結構 QuMA 上執行,最後靈活地控制量子比特的操作。

由于無法實作基于對量子比特測量結果的回報控制、與具體硬體耦合過于緊密等問題,量子微指令集 QuMIS 無法實作完整的量子程式流控制,不是一個合格的量子計算指令集體系結構(quantum instruction set architecture, QISA,對應圖+1 黃色部分),進而無法像經典計算機中的 x86 等指令集一樣,成為量子計算機軟硬體之間的通用接口。

但現有低層次量子程式設計語言如 QASM、QASM-HL、Quil、OpenQASM、f-QASM 等,它們的目标是提供在數學上等效于量子線路模型的表達能力,卻較少地考慮了在硬體上的執行能力。這導緻某些代碼在文法上可能是正确的,但在硬體上卻不可執行。同時,量子程式不僅描述量子狀态的演變,同等重要的是,它還描述了程式流的控制。

即使低階彙編提供了程式流的控制能力,但國内外現有的量子雲平台的硬體,都不具執行具有量子程式流控制的代碼的能力。如 IBM 的 Quantum Experience 和 Rigetti 的 Forest 硬體,都還無法實作量子程式流的控制。

其次,由于有噪聲的中等規模量子(Noisy Intermediate-Scale Quantum, NISQ)裝置對環境變化敏感,用于校準量子位和量子操作的實驗需要周期性地執行。這些實驗通常占據了量子比特使用時間的很高比例。這些實驗的例子包括如測量量子比特的弛豫時間(T_1)和校準量子操作的波形的參數(幅度、相位、頻率等)等。它們需要使用未經校準或不常見的量子操作,并明确地改變操作的時序。現有的量子彙編語言主要基于已經校準好的操作,是以描述能力高度受限甚至不能描述很多各種量子實驗。

再之,因為能夠表達的硬體特性非常有限,量子編譯器很難通過在滿足限制的同時利用可能的硬體特性在各個方面上進行徹底的優化。這一事實在一定程度上限制了量子軟硬體的協同設計。

針對這些問題,基于廣泛使用的量子彙編語言 QASM,代爾夫特研究團隊再次開創性地提出了一種可執行的量子計算指令集 eQASM (executable QASM)。eQASM 定義了一個明确可行的經典與量子相結合的異構程式設計模型,不僅可以描述量子算法,還可以描述許多常用的量子校準實驗,可大幅提升對量子比特的可操作性及量子比特的使用效率。

作為軟體輸出,eQASM 可由量子編譯器生成,來描述對應的量子程式;作為硬體輸入,eQASM 可被量子控制微體系結構 QuMA_v2 支援,能直接在量子硬體上執行。eQASM 既包含量子指令,也包含輔助性的經典指令來支援複雜的量子程式流控制。與 IBM 的 OpenQASM 支援參數化的量子操作不一樣,eQASM 支援離散的量子操作指令,這可有效地降低控制硬體的設計複雜度。

eQASM 是個開源的指令集,允許使用者可根據自己需求添加指令,但會由獨立團隊根據開發者需求維持該指令集的一個标準。該研究團隊目前正在開發支援 eQASM 的開源體系結構模拟器及相關工具鍊,助力開發者自由開發用于控制特定的量子晶片的量子控制微體系結構。

本論文的主要貢獻如下:

  • 全面的量子程式流控制:eQASM 提出了兩類回報控制以及用于實作這些回報的微體系結構機制:簡單但快速的快速條件執行和使用者可任意定義的全面回報控制。在這個基礎上,eQASM 可支援全面的量子程式流控制,包括順序、選擇分支、循環、遞歸等。
  • 靈活的實作:eQASM 是一種 QISA 架構,其定義側重于彙編文法以及将彙編語言映射成二進制語言的基本規則。它需要針對特定平台自定義二進制格式(這個過程被稱為執行個體化),這有助于 eQASM 高效地控制不同的實體硬體,保證它的實用性。
  • 編譯時可配置的量子操作:經典指令集能夠支援的操作一般是在設計之初就定義好的,與之不同,eQASM 允許編譯器根據應用程式的需要選擇所需的量子運算,這為基于編譯器的優化留下了充足的空間。

eQASM 概覽

作者認為,與 GPU 或 FPGA 類似,通過異構架構來整合量子計算與經典計算是一條可行之路。在量子-經典異構體系結構中,量子部分可作為協處理器,來加速經典處理器難以處理的特定任務。下面将介紹 eQASM 的程式設計和編譯模型、eQASM 的設計原則、體系結構狀态和指令的概況。

程式設計及編譯模型

OpenCL 是一種傳統異構并行計算的開放式行業标準,這被用作了定義 eQASM 的基礎。圖 1 展示了 eQASM 的程式設計和編譯模型。

開創性提供量子計算機從軟到硬的完整可程式設計性!Delft提出可執行量子計算指令集eQASM

圖 1:異構式量子程式設計和編譯模型

一個量子-經典混合程式包含一個主程式以及一個或多個量子核(quantum kernel),這些量子核可加速計算中的特定部分。主程式使用 Python 或 C++ 等經典程式設計語言描述,量子核使用 Scaffold 或 Q|SI> 等量子程式設計語言描述。混合編譯基礎架構會使用 GCC 等傳統編譯器将主程式編譯成傳統指令集代碼,之後再由主 CPU 執行。

OpenQL 等量子編譯器則會以兩個步驟編譯量子核。第一步,量子核會被編譯成 QASM 或一種在數學上等效于線路模型的格式。這種格式與硬體無關,而且可以移植到不同的量子硬體平台上。第二步會考慮大部分硬體限制,編譯器會在這一步執行量子比特的排程及低層次的優化。其輸出是由 eQASM 指令構成的量子代碼。這種量子代碼既包含量子指令,也包含用于支援包括回報在内的量子程式流控制的輔助性經典指令。在主 CPU 将量子代碼加載進量子處理器之後,量子代碼就可直接執行了。

設計原則

eQASM 的設計重點是提供在真實硬體上可執行的全面的量子程式表達能力。它應該要能描述不同量子技術的量子應用,而不受限于特定的控制裝置。在 NISQ 時代,量子校準實驗通常會占據相當大比例的量子比特使用時間。eQASM 也有望助益校準量子比特和量子運算所需的實驗。eQASM 的設計遵循五個主要原則:

  1. eQASM 應該包含經典指令,以支援運作時回報等量子程式流控制。
  2. eQASM 應該包含可明确指定量子操作時序的明确方法。
  3. 低層面的硬體資訊應該被盡可能多地從 eQASM 彙編語言中抽離,以避免 eQASM 受限于特定的硬體實作。
  4. 量子指令編碼的資訊密度應該很高,可以采用如經典架構中單指令多資料(SIMD)和超長指令字(VLIW)等方法。
  5. 通過配置,eQASM 允許使用不同的量子指令,進而支援不同的量子實驗及激進的編譯器優化技術(比如量子最優控制)。

指令概覽

量子技術發展迅猛,誰也不知道哪種量子技術會造就未來的量子計算機。為避免 eQASM 的格式受限于特定量子技術實作,eQASM 的定義側重于彙編層面以及将彙編代碼映射二進制指令的基本規則。二進制格式在 eQASM 執行個體化階段定義,可針對具體的控制電路設定和量子晶片定義。這在保證了 eQASM 彙編代碼的表達能力的同時,也給(微)體系結構設計師留下了相當大的自由度,讓他們可以根據微架構的實用性和性能進行設計。

eQASM 程式由混合的量子指令和輔助性的經典指令組成。表 1 給出了 eQASM 指令的概覽。因為主 CPU 可以提供經典計算能力,是以這裡的輔助性經典指令都是用于支援量子指令執行的簡單指令,不包含複雜指令(比如浮點指令)。

開創性提供量子計算機從軟到硬的完整可程式設計性!Delft提出可執行量子計算指令集eQASM

表 1:eQASM 指令概覽

eQASM 代碼示例

AllXY 實驗是一個用于檢驗量子操作是否準确的常用實驗。下圖顯示了實作 AllXY 實驗的 eQASM 代碼的一部分。這段代碼中顯示了兩種不同的對量子操作的時序的描述方式:即通過顯式的 QWAIT 指令(第 5 行與第 9 行),或隐式的前置等待時間(第 6 至 8 行)。這兩種方式規定的是前後兩個操作的起始時間差。假定每個單量子比特門的時間為 1 個周期(20 ns),那麼在第 6 行的 Y 門完成之後,第 7 行的兩個量子門 X90 與 X 會緊跟着同時執行。在第二個周期結束之後,第 8 行的測量操作開始執行。用這種方式可以準确地描述了量子門的時序、并行性等。據團隊表示,将量子操作的時序顯式地納入量子彙編語言是 eQASM 的特點之一,這使得 eQASM 能夠高效地支援量子計算實驗與算法優化對時序的控制需求。

開創性提供量子計算機從軟到硬的完整可程式設計性!Delft提出可執行量子計算指令集eQASM

圖 3:描述 AllXY 實作的 eQASM 代碼的一部分

下面的代碼則顯示了 eQASM 的回報控制能力。在這段代碼中,首先測量量子比特 Q1(第 4 行),在等待 30 個周期(第 5 行,一個周期 20ns)之後,經典指令獲得測量結果,并根據測量結果選擇後續程式分支(第 6 至 8 行):如果對 Q1 的測量結果是 0,那麼對量子比特 Q0 執行一個 X 操作(第 10、11 行),否則對量子比特 0 執行一個 Y 操作(第 13 行)。基于量子指令與經典指令的混編,eQASM 提供了對程式流的控制能力。在硬體上可實作的量子程式流控制,這構成了 eQASM 與其他現有量子彙編語言相比的突出之處。

開創性提供量子計算機從軟到硬的完整可程式設計性!Delft提出可執行量子計算指令集eQASM

圖 5:使用輔助性經典指令實作基于量子比特測量結果的回報控制

eQASM 執行個體及實驗結果

eQASM 執行個體化

針對一個七量子比特的超導量子處理器,論文将 eQASM 執行個體化成一個 32 位的指令集,并通過使用第二代量子控制微體系結構 QuMA_v2(如圖 9)對量子比特進行的控制。其硬體實作如圖 10 所示。

開創性提供量子計算機從軟到硬的完整可程式設計性!Delft提出可執行量子計算指令集eQASM

圖 9:支援針對七量子比特超導量子晶片執行個體化的 eQASM 的量子微體系結構

開創性提供量子計算機從軟到硬的完整可程式設計性!Delft提出可執行量子計算指令集eQASM

圖 10:實作針對七量子比特超導量子處理器執行個體化 eQASM 的硬體結構。細線和粗線分别代表數字和模拟信号。

可行性驗證

由于目标七量子比特量子晶片在寫作之時仍處于測試中,論文使用了一個具有兩個量子比特的超導量子晶片以驗證 eQASM 設計。在驗證過程中,量子晶片的結構(如比特的數量及其互連結構)通過一個配置檔案進行描述。實驗中,量子編譯器 OpenQL 根據這個配置檔案産生全部所需的 eQASM 代碼及底層硬體配置。文章表示,使用 eQASM 控制量子實驗顯著提高了量子實驗的效率,拓寬了量子彙編的應用範圍。

文章首先利用圖 3 中的代碼執行了一個兩比特 AllXY 實驗,實驗結果如圖 11。該實驗中,測量結果(藍點)與預期結果(紅線)的吻合表明 eQASM 能夠實作對量子操作的精确控制。

開創性提供量子計算機從軟到硬的完整可程式設計性!Delft提出可執行量子計算指令集eQASM

圖 11:兩量子比特 AllXY 結果

為了評估操作時序對量子算法保真度的影響,論文執行了對單量子比特的随機化基準測試(single-qubit randomized benchmarking)。這種測試可在常用的的噪聲模型下評估一組量子操作的平均錯誤率。實驗過程中,通過使用 eQASM 的顯示時序控制能力,連續的量子比特門的起始點之間被插入不同間隔時間(320、160、80、40 和 20 ns)。實驗結果如圖 12 所示。資料顯示,量子操作之間的間隔越大,平均每個量子操作的錯誤率就越高。這不僅表明了量子操作的時序對最終計算結果的保真度有顯著影響,更證明了為實作針對特定平台的優化(尤其是編譯層面的優化),在 QISA 代碼中顯示規定量子操作的時序是必要的。

開創性提供量子計算機從軟到硬的完整可程式設計性!Delft提出可執行量子計算指令集eQASM

圖 12:量子操作起始點之間不同的間隔時間對單量子比特随機化基準測試結果的影響。虛線标示了 10% 的錯誤率供參考。

多元化學術背景的科研團隊

據了解,從去年該團隊提出的量子計算控制微體系結構原型,到今年該論文中提出的可執行的量子指令集架構 eQASM,都是由多位分别具有不同背景的工程師與科學家合作完成。兩篇文章中的合作者中,有三位編譯器研究人員,兩位體系結構工程師、兩位進階 FPGA 工程師、兩位電子電路設計工程師、兩位系統軟體開發工程師、兩位實體博士和三位導師。

在做計算機工程的成員加入之間,以往的量子控制裝置開發流程是,實體學家提出實際的實體控制需求,電子電路工程師設計實作所需的控制裝置、FPGA 工程師針對需求開發固件。在做計算機工程的成員加入之後,團隊分工就變成了:實體學家會提出實際的實體控制需求;編譯器工程師提出軟體輸出需求;做體系結構的人構思軟硬體之間的接口,在滿足軟體輸出需求的同時,極大地優化硬體系統設計;電子電路工程師實作電子電路的設計;FPGA 工程師與體系結構工程師一起實作量子控制微體系結構;編譯器工程師開發進階量子程式設計語言及量子編譯器。這樣,研究團隊可以建構從量子程式語言到量子編譯器、量子指令集體系結構、量子控制微體系結構、模拟裝置、量子晶片的全套系統。

團隊成員科研背景的多元化是這兩項工作的一大特點。這種形式的科研團隊配置,在量子計算這個需要多學科知識背景融合的領域,很好地促進了不同視角理論與經驗的碰撞及融合,也很大程度上保證了體系架構設計思想和邏輯結構的可行性及完備性。以圖 3 為例,在量子彙編語言中顯式地支援量子操作的時序控制,這算是計算機工程服務于實體實驗的一次嘗試。

這兩項工作均由兩篇文章的第一作者付祥上司團隊合作完成。付祥是代爾夫特理工大學計算機工程實驗室與實體系量子計算實驗室聯合培養的博士生,也是該團隊唯一的華人。其導師是來自計算機工程實驗室(現獨立為量子計算體系結構實驗室)的 Koen Bertels 教授與實體系量子計算實驗室的 Leonardo DiCarlo 教授。

提到後續工作,研究團隊表示:一方面會使用 eQASM 來控制其它實體體系的量子處理器,包括量子晶片拓撲結構不同的超導量子處理器以及自旋量子點、鑽石色心等完全不同的量子硬體;另一方面,也更為重要是,團隊會繼續開發 eQASM 相關的工具鍊,使得更多人能夠使用 eQASM。