QPanda 2.0量子計算 SDK
QPanda 2.0 SDK(Quantum Panda 2.0 Software Development Kit)是由本源量子推出的開源量子程序開發(fā)工具包。其支持主流的量子邏輯門操作,并且可對不同平臺下的量子程序進(jìn)行針對性優(yōu)化,可適配多種量子芯片。QPanda 2.0 使用C++語言作為經(jīng)典宿主語言,并支持以QRunes和QASM書寫的量子語言。
目前,QPanda 2.0支持本地仿真運行模式,最高可支持到32位,它集成了量子虛擬機(jī),封裝了主流的量子算法??稍跓o芯片支持的情況下驗證量子應(yīng)用的可靠性和有效性。加上增加了控制流的概念使得量子程序可進(jìn)行邏輯判斷,從而符合高級語言的編程習(xí)慣。
在QPanda里,總共由三個過程組成:初始化生成、編譯和運行。
初始化:初始化生成是允許用戶設(shè)計不同的量子線路來處理對應(yīng)需要解決的問題。
編譯:而編譯則是允許用戶重寫它們以在不同的后端運行(比如模擬器,量子芯片,不同公司的量子芯片等)。
運行:即是收集結(jié)果的過程,對于運行后的數(shù)據(jù)采集,取決于程序本身的設(shè)計需求去做相應(yīng)的存儲或者轉(zhuǎn)化,運行的結(jié)果,也依賴于解決問題的需要而定。有的問題,可能需要依賴上一個量子程序運行結(jié)果才能執(zhí)行下一個量子程序,諸如此類。
QPanda的設(shè)計思想
考慮到量子計算的蓬勃發(fā)展和未來的廣泛應(yīng)用,QPanda 2.0做了很多前瞻性的設(shè)計。所以QPanda在設(shè)計時做了以下考慮:
-
全系列兼容:
QPanda 的目標(biāo)是兼容所有量子計算機(jī)。底層量子計算機(jī)現(xiàn)在由于正處快速發(fā)展期,所以芯片、測控等實現(xiàn)細(xì)節(jié)都不確定。QPanda簡化并規(guī)避了諸多量子計算機(jī)的物理細(xì)節(jié)而為用戶提供了標(biāo)準(zhǔn)化的接口。通過QPanda構(gòu)建的量子計算機(jī),本身是通過經(jīng)典的程序語言對其進(jìn)行交互,所以它可以被用于任意的云量子計算機(jī),本地量子計算機(jī),或者是實驗中的量子原型機(jī)。通過QPanda構(gòu)建的量子應(yīng)用則不會受到硬件變動的影響。
-
標(biāo)準(zhǔn)架構(gòu):
QPanda提供了標(biāo)準(zhǔn)化的量子程序(Quantum Program)架構(gòu)。架構(gòu)者認(rèn)為,在量子機(jī)器(Quantum Machine)中執(zhí)行的程序和在經(jīng)典計算機(jī)中執(zhí)行的程序應(yīng)該徹底區(qū)分開來,特別是涉及到經(jīng)典控制的部分。物理上,芯片的退相干(Decoherence)時間極為短暫,這使得量子程序中的控制流并非在狹義的CPU中完成,而更有可能會采用極低延時的FPGA或其它嵌入式器件作為其測控系統(tǒng)實現(xiàn)。我們認(rèn)為,量子機(jī)器包含了量子芯片與其測控系統(tǒng),一個量子程序被視作是對一個原子的操作,直到執(zhí)行完畢才返回結(jié)果給經(jīng)典計算機(jī)。 量子程序的架構(gòu)包含:量子邏輯門、量子線路、量子分支程序和量子循環(huán)程序。在QPandaa里這幾種元素均以接口的形式被提供,我們提供了一組這些接口的實現(xiàn)類作為基礎(chǔ)的數(shù)據(jù)接口。用戶可以重寫這些接口并將實現(xiàn)類進(jìn)行注冊,系統(tǒng)會選擇用戶的類對默認(rèn)實現(xiàn)類進(jìn)行覆蓋,并且保持其它結(jié)構(gòu)的不變。
-
標(biāo)準(zhǔn)化量子機(jī)器模型:
我們提供了標(biāo)準(zhǔn)化的量子機(jī)器模型。通常,量子程序是靜態(tài)加載到量子機(jī)器里,并且量子程序本身也是被靜態(tài)地構(gòu)建的。這意味我們可以在量子程序被執(zhí)行前,對量子程序進(jìn)行靜態(tài)檢查和分析,獲取其中的信息(而非執(zhí)行它)。能檢查的要素例如:量子比特是否越界,經(jīng)典寄存器是否超過硬件允許的范圍等等。而能進(jìn)行的預(yù)處理則包含:任意的量子程序被替換到對應(yīng)真實芯片的拓?fù)浣Y(jié)構(gòu)和基本邏輯門集合上(硬件兼容),量子程序的運行時長判斷,量子程序的優(yōu)化等等。 量子機(jī)器模型還定義了量子程序的標(biāo)準(zhǔn)構(gòu)建過程。例如從量子比特池中申請空閑比特,從內(nèi)存中申請空間,將程序加載到量子機(jī)器中,或者在已有的量子程序中附加一段新的量子程序。和量子程序的部分類似,量子機(jī)器本身的任何架構(gòu)也是接口化的,用戶也可以對接口進(jìn)行覆寫以應(yīng)對不同硬件的需求。
QPanda項目總共包括:
-
QPanda SDK:
用于編寫量子程序和應(yīng)用程序的 C++宿主語言工具包。它使用戶能夠方便連接和執(zhí)行量子程序。
-
QRunes:
QRunes是本源量子制定的一套量子計算指令集。
-
QRunes(QASM) Generator:
QRunes(QASM) Generator 是一個支持以函數(shù)調(diào)用方式生成QRunes指令的C++庫。
提供了QPanda軟件的使用細(xì)節(jié),以及一些常見算法的案例。包括算法概要,對應(yīng)的量子線路圖,對應(yīng)的QPanda代碼等,旨在指導(dǎo)用戶快速正確的使用QPanda。
