在過(guò)去十年中,在開(kāi)發(fā)實(shí)際的QPU硬件方面取得了巨大進(jìn)步,IBM發(fā)布了一個(gè)具有用于用戶(hù)訪問(wèn)的16位量子位QPU門(mén)戶(hù)。Rigetti公司正在開(kāi)發(fā)8-量子位QPU方面取得了相當(dāng)?shù)倪M(jìn)展。D-Wave已經(jīng)生產(chǎn)了一個(gè)2048量子位量子耦合器。Google正在開(kāi)發(fā)一個(gè)將于2017年底,或2018年初發(fā)布的49位量子位QPU。中國(guó)的量子計(jì)算機(jī)和量子通信在全球也不遑多讓!但量子計(jì)算在硬件成熟之后,該如何發(fā)展,其發(fā)展軟肋在哪?所以有了所有這些偉大的硬件選擇之后,現(xiàn)在的真正問(wèn)題就是,我們?nèi)绾翁峁┮粋€(gè)高級(jí)軟件基礎(chǔ)設(shè)施,這樣的基礎(chǔ)設(shè)施必然會(huì)加快研究工作,這將有利于現(xiàn)有應(yīng)用程序工作流程中的量子加速。
Eclipse XACC是一種開(kāi)源的混合編程模型和參考實(shí)現(xiàn),稱(chēng)為eXtreme-scale的加速(Accelerator)編程框架,簡(jiǎn)稱(chēng)為XACC。在這篇文章中,介紹量子計(jì)算,以及如何開(kāi)發(fā)智能高級(jí)軟件基礎(chǔ)設(shè)施,以便在計(jì)算硬件方面實(shí)現(xiàn)跨越式發(fā)展。
關(guān)于量子計(jì)算
科學(xué)計(jì)算和數(shù)據(jù)挖掘是幫助我們更好地了解自然并開(kāi)發(fā)解決能源,健康,物流和金融方面的新問(wèn)題的重要工具。突出的例子包括計(jì)算化學(xué)模擬,以調(diào)查新的藥物;以及遠(yuǎn)程模型來(lái)預(yù)測(cè)全球氣候變化。這些問(wèn)題和其他類(lèi)似的問(wèn)題只能用大規(guī)模高性能計(jì)算(HPC)資源來(lái)解決。計(jì)算架構(gòu)的持續(xù)進(jìn)步支持這些大規(guī)??茖W(xué)計(jì)算和數(shù)據(jù)挖掘任務(wù),HPC系統(tǒng)設(shè)計(jì)的最新趨勢(shì)主要集中在將許多CPU內(nèi)核與其他專(zhuān)用加速器相結(jié)合的異構(gòu)架構(gòu)上。例如,橡樹(shù)嶺國(guó)家實(shí)驗(yàn)室的Titan超級(jí)計(jì)算機(jī)依賴(lài)于許多GPU來(lái)實(shí)現(xiàn)高性能數(shù)值計(jì)算。
▲
可擴(kuò)展,模塊化和開(kāi)源軟件在應(yīng)用程序開(kāi)發(fā)人員可訪問(wèn)異構(gòu)HPC系統(tǒng)方面發(fā)揮重要作用。高級(jí)編程模型,軟件系統(tǒng)和應(yīng)用程序編程接口(API)對(duì)于使用這些大規(guī)??茖W(xué)設(shè)備是必要的,這些科學(xué)設(shè)備不斷推動(dòng)科學(xué)計(jì)算范圍。各國(guó)正推動(dòng)開(kāi)發(fā)運(yùn)行在超級(jí)計(jì)算機(jī)(即每秒可執(zhí)行十億次操作的機(jī)器)的高性能計(jì)算機(jī)系統(tǒng)(HPC),還要考慮到異構(gòu)HPC體系結(jié)構(gòu)需要超越超級(jí)計(jì)算。世界各地的一些研究工作正在開(kāi)始展示可能有助于加速后期計(jì)算世界的新型計(jì)算架構(gòu)。最重要的努力是量子計(jì)算和利用量子力學(xué)和量子信息的非直觀規(guī)律來(lái)執(zhí)行計(jì)算的想法。
量子計(jì)算與常規(guī)計(jì)算根本的不同之處在于,它們考慮到二進(jìn)制單位(位)0和1的運(yùn)算,量子計(jì)算機(jī)以量子位——具有給定概率的兩個(gè)不同狀態(tài)之一的物理系統(tǒng)進(jìn)行操作。電子的旋轉(zhuǎn)(向上或向下)或光子的偏振(水平或垂直極化)可以用作量子位;盡管目前的現(xiàn)有量子位系統(tǒng)由超導(dǎo),原子或光學(xué)設(shè)置組成。在圖形上,量子位的狀態(tài)可以如圖1所示,其中你有一個(gè)向量可以指向半徑為1的球體上的任何位置。
▲
量子計(jì)算的力量來(lái)自于位向量子位的泛化。傳統(tǒng)的計(jì)算被約束到位串的空間,并且計(jì)算是從將位串映射到位串的布爾基元構(gòu)建的。
然而,量子邏輯運(yùn)算是將量子態(tài)旋轉(zhuǎn)的單一矩陣(在圖1中)(在指數(shù)式的大向量空間內(nèi))。量子空間的快速(和不同)增長(zhǎng)的另一個(gè)后果是量子糾纏的存在,或是不可分離的狀態(tài)。這意味著狀態(tài)不能表示為單個(gè)量子位的狀態(tài)。這與二進(jìn)制邏輯狀態(tài)有很大不同,其中寄存器由獨(dú)立位的集合組成。通過(guò)利用上述量子資源,在多項(xiàng)式時(shí)間內(nèi)進(jìn)行量子計(jì)算,如整數(shù)分解的Shor算法和量子物理的模擬。
那么現(xiàn)在我們?nèi)绾卫眠@個(gè)優(yōu)勢(shì),而不用等待一個(gè)通用的獨(dú)立量子計(jì)算機(jī)呢?答案是加速具有小規(guī)模量子計(jì)算機(jī)的HPC系統(tǒng)。增加量子資源的HPC系統(tǒng)可能開(kāi)始幫助我們解決其他棘手的問(wèn)題。在這方面,我們可以處理與GPU類(lèi)似的量子處理單元(QPU)——作為現(xiàn)有科學(xué)應(yīng)用的加速單元。
在過(guò)去十年中,在開(kāi)發(fā)實(shí)際的QPU硬件方面取得了巨大進(jìn)步,該硬件具有一定的算法巧妙性,可以在混合計(jì)算環(huán)境中利用。IBM已經(jīng)(并公開(kāi)發(fā)布)一個(gè)具有用于用戶(hù)訪問(wèn)的16位量子位QPU門(mén)戶(hù)。Rigetti公司正在開(kāi)發(fā)8-量子位QPU方面取得了相當(dāng)?shù)倪M(jìn)展,D-Wave已經(jīng)生產(chǎn)了一個(gè)2048量子位量子耦合器,Google正在開(kāi)發(fā)一個(gè)將于2017年底,或2018年初發(fā)布的49位量子位QPU。中國(guó)的量子計(jì)算機(jī)和量子通信在全球也不遑多讓!
有了所有這些偉大的硬件選擇之后,現(xiàn)在的真正問(wèn)題就是,我們?nèi)绾翁峁┮粋€(gè)高級(jí)軟件基礎(chǔ)設(shè)施,明智地將選擇的計(jì)算任務(wù)分配到附加的量子加速器?這樣的基礎(chǔ)設(shè)施必然會(huì)加快研究工作,這將有利于現(xiàn)有應(yīng)用程序工作流程中的量子加速。
Eclipse基金會(huì),ORNL和XACC
橡樹(shù)嶺國(guó)家實(shí)驗(yàn)室已經(jīng)開(kāi)始調(diào)查用量子加速來(lái)增強(qiáng)HPC系統(tǒng)的意義,并提出了一個(gè)開(kāi)源的混合編程模型和參考實(shí)現(xiàn),稱(chēng)為eXtreme-scale的加速器編程框架Eclipse XACC。好消息是,XACC現(xiàn)在是一個(gè)完全成熟的Eclipse項(xiàng)目,是Eclipse Science工作組不斷努力推動(dòng)開(kāi)源軟件和圍繞量子計(jì)算的社區(qū)開(kāi)發(fā)的第一個(gè)項(xiàng)目,這是量子計(jì)算軟件早期歷史的一個(gè)令人興奮的發(fā)展!
XACC專(zhuān)門(mén)設(shè)計(jì)用于在現(xiàn)有的高性能計(jì)算應(yīng)用程序和工作流程中實(shí)現(xiàn)量子加速。該編程模型和相關(guān)的開(kāi)源參考實(shí)現(xiàn)遵循傳統(tǒng)的協(xié)處理器模型,類(lèi)似OpenCL或CUDA的GPU,但考慮到常規(guī)和量子硬件之間相互作用固有的細(xì)微之處和復(fù)雜性。
XACC提供了一種高級(jí)API,使軟件應(yīng)用程序以量子編程語(yǔ)言和量子硬件不可知的方式將量子代碼(以量子核表示)附加到附加的量子加速器。圖2以圖形方式顯示 - 該框架允許以任何可用語(yǔ)言編程量子內(nèi)核,并在任何可用的硬件后端執(zhí)行該代碼。這使得一個(gè)人能夠編寫(xiě)一次量子代碼,并對(duì)一組虛擬(模擬器)或物理硬件執(zhí)行基準(zhǔn)測(cè)試,驗(yàn)證和驗(yàn)證以及性能研究。
為了實(shí)現(xiàn)這種互操作性,XACC定義了四個(gè)主要的抽象或概念:量子內(nèi)核,中間表示,編譯器和加速器。量子內(nèi)核是包含用于在QPU上執(zhí)行的代碼的類(lèi)C函數(shù)。這些內(nèi)核被編譯為XACC中間表示(IR),這是一種對(duì)促進(jìn)集成多種語(yǔ)言和硬件至關(guān)重要的對(duì)象模型。IR提供了由算法程序員使用的四種主要形式:(1)內(nèi)存中表示和API,(2)磁盤(pán)上持久性表示,(3)人類(lèi)可讀量子組件表示,以及(4)控制流圖形或量子電路表示。該IR由XACC編譯器接口的實(shí)現(xiàn)產(chǎn)生,該接口委托內(nèi)核語(yǔ)言適當(dāng)?shù)慕馕銎?,編譯器和優(yōu)化器。
最后,XACC IR實(shí)例(以及編程的內(nèi)核)由Accelerator概念的實(shí)現(xiàn)來(lái)執(zhí)行,該概念定義了用于注入物理或虛擬量子加速器的接口。加速器將此IR作為輸入,并將執(zhí)行委托給供應(yīng)商提供的用于QPU(或模擬器的API)的API。
▲
這些概念的編排使得能夠?qū)崿F(xiàn)科學(xué)應(yīng)用的量子加速的表達(dá)式API。圖3演示了一個(gè)簡(jiǎn)單的量子位狀態(tài)傳送示例的API。Teleport內(nèi)核(teleport.hpp)以Scaffold量子編程語(yǔ)言編寫(xiě),并使用XACC API工作流程(teleport.cpp)進(jìn)行編譯和執(zhí)行 - (1)初始化框架(加載所有可用的編譯器,加速器等) ),(2)參考所需的加速器,(3)創(chuàng)建一個(gè)量子位寄存器,(4)構(gòu)造一個(gè)編排量子內(nèi)核編譯的程序?qū)嵗?5)獲取可執(zhí)行的內(nèi)核函數(shù)或lambda表示編譯的內(nèi)核代碼并在附加的加速器上執(zhí)行它。
XACC支持多種語(yǔ)言和物理和虛擬硬件實(shí)例。 XACC提供了一種編譯器實(shí)現(xiàn),可以實(shí)現(xiàn)C類(lèi)Scaffold編程語(yǔ)言中的量子內(nèi)核編程。該編譯器利用Clang / LLVM庫(kù)擴(kuò)展,通過(guò)量子門(mén)操作來(lái)擴(kuò)展LLVM IR。 XACC擴(kuò)展了該編譯器,支持新的構(gòu)造,如自定義量子函數(shù)和源到源翻譯(將Scaffold映射到其他語(yǔ)言)。
XACC提供了一種加速器實(shí)現(xiàn),可以以Rigetti Quantum Virtual Machine(QVM,F(xiàn)orest API)和物理雙量子位Rigetti QPU的任何可用語(yǔ)言執(zhí)行量子內(nèi)核。這些加速器將XACC IR映射到Quil(Rigetti低級(jí)匯編語(yǔ)言),并利用HTTP Rest客戶(hù)端將編譯的量子內(nèi)核代碼發(fā)布到Rigetti QVM / QPU驅(qū)動(dòng)程序服務(wù)器。 XACC還支持D-Wave QPU,其展示了跨量子計(jì)算模型(絕熱/量子耦合和門(mén)模型量子計(jì)算)的這種異構(gòu)混合編程模型的廣泛適用性。 XACC具有編譯器和加速器實(shí)現(xiàn)功能,可以分別在D-Wave Qubist QPU驅(qū)動(dòng)程序服務(wù)器上分別執(zhí)行二進(jìn)制優(yōu)化問(wèn)題和執(zhí)行的小圖形嵌入。
XACC提供基礎(chǔ)級(jí)API,允許計(jì)算科學(xué)家以熟悉的加速計(jì)算模型方式利用量子計(jì)算。它為更高級(jí)別的數(shù)據(jù)結(jié)構(gòu)奠定了基礎(chǔ),這些數(shù)據(jù)結(jié)構(gòu)為訪問(wèn)常見(jiàn)的量子算法提供了一種易于使用的機(jī)制。它的核心是開(kāi)始提供可擴(kuò)展的軟件基礎(chǔ)設(shè)施,可以作為所有偉大的語(yǔ)言和硬件實(shí)現(xiàn)之間的粘合劑,用于量子計(jì)算。展望未來(lái),該項(xiàng)目旨在提供一種熟練的機(jī)制,以量子加速增強(qiáng)HPC應(yīng)用,并提供一種機(jī)制,用于對(duì)后期計(jì)算技術(shù)進(jìn)行編程。