[發明專利]一種基于CPU和GPU協同的大規模量子電路模擬方法在審
| 申請號: | 202210232271.4 | 申請日: | 2022-03-09 |
| 公開(公告)號: | CN114595820A | 公開(公告)日: | 2022-06-07 |
| 發明(設計)人: | 楊海龍;仲書璋 | 申請(專利權)人: | 北京航空航天大學 |
| 主分類號: | G06N10/20 | 分類號: | G06N10/20 |
| 代理公司: | 北京科迪生專利代理有限責任公司 11251 | 代理人: | 安麗;鄧治平 |
| 地址: | 100191*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 cpu gpu 協同 大規模 量子 電路 模擬 方法 | ||
1.一種基于CPU和GPU協同的大規模量子電路模擬方法,其特征在于,包括以下步驟:
步驟1:啟動量子電路模擬進程,讀取待計算量子電路的輸入,所述輸入包括量子比特的數量n、量子比特初始狀態Ψ、量子門集合G和量子門排布圖E;
步驟2:調用內存管理器,使用全振幅的方式對量子比特初始狀態Ψ進行存儲,存放在狀態數組s中;
步驟3:調用內存管理器,將狀態數組s分頁存儲,使用頁面作為后續數據遷移的基本單元;
步驟4:將量子門集合G中的量子門作為結點,量子門排布圖E中記錄的量子門之間的有向依賴作為邊,建立有向無環圖DAG;
步驟5:基于步驟4建立完成的有向無環圖DAG,將該有向無環圖DAG劃分為多個互相獨立的子電路Si,構成子電路集合S,Si中的子電路量子門集合記作Gi;
步驟6:調用執行器,對于劃分出的子電路集合S,每次取出一個子電路Si,進入步驟7;
步驟7:遍歷子電路Si中不存在數據依賴性的量子比特集合為Q,量子比特q∈Q,當且僅當對于子電路量子門集合Gi中的任意門g,如果僅作用到量子比特q,即:
步驟8:若量子比特集合Q為空集,進入步驟11;否則從量子比特集合Q中逐一取出量子比特q,記q的索引為index(q),如果index(q)n-2k,即q在索引中的位置對應頁內偏移,進入步驟9,否則進入步驟10;
步驟9:遍歷量子比特索引的[n-2k,n-k-1]位,如果存在一個索引x,使得該索引x對應的量子比特則重映射qx與q的索引,進入步驟8;
步驟10:遍歷量子比特索引的[n-k,n-1]位,如果存在一個索引x,使得索引x對應的量子比特則重映射qx與q的索引,進入步驟8;
步驟11:在包含多個計算節點的集群上,對量子電路進行模擬,對于包含s個量子比特的子電路,其中每一個量子門表示為2s*2s的方陣A,n時刻s個量子比特的狀態表示為長度為2s的向量Ψs(n),n+1時刻s個量子比特的狀態表示為長度為2s的向量Ψs(n+1),則每一次量子門的作用表示為:
Ψs(n+1)=A·Ψs(n)
計算過程中需要進行任務劃分,將計算任務以高k位為任務編號,均衡發送到可用的GPU中,進入步驟12;
步驟12:需要在計算節點之間發送數據時,發送方執行發送任務,接收方執行接收、加載和運行任務,對于每一個計算節點,開啟一個線程單獨處理發送任務;當發送任務結束之后,關閉該線程,接收、加載和運算任務使用原線程執行,結束后檢查所有子電路是否計算完畢,完畢則進入步驟13,否則返回步驟7;
步驟13:計算完步驟6子電路集合S中所有子電路,輸出最終的量子比特狀態Ψn:
Ψn=[p00…000,p00…001,……,p11…111]
其中p00…000為經過所有量子門作用后,量子比特狀態為00…000的概率,為經過所有量子門作用后,量子比特狀態為a0a1…an-1的概率。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京航空航天大學,未經北京航空航天大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210232271.4/1.html,轉載請聲明來源鉆瓜專利網。





