量子電路模擬器QSIM和QSIMH。這些模擬器用於[1]中的交叉熵基準測試。
[1],F。Arute等人,“使用可編程超導處理器的量子至上”,《自然574,505》,(2019年)。
QSIM是Schrödinger的全州矢量模擬器。它計算狀態向量的所有2個振幅,其中n是Qubits的數量。本質上,模擬器反复執行矩陣矢量乘法。一個矩陣矢量乘法對應於應用一個門。總的運行時與G2 N成正比,其中G是2 Qubit門的數量。為了加快模擬器的速度,我們使用Gate Fusion [2] [3],單個精度算術,AVX/FMA指令進行矢量化和OpenMP用於多線程。
[2] M. Smelyanskiy,NP Sawaya,A。Aspuru-Guzik,“ Qhipster:Quantum高性能軟件測試環境”,Arxiv:1601.07195(2016)。
[3]T.Häner,DS Steiger,“ 45 Qubit量子電路的0.5 pB仿真”,Arxiv:1704.01127(2017)。
QSIMH是一種混合schrödinger-feynman模擬器[4]。晶格分為兩部分,施密特分解用於切割上的2 Quition門。如果每個門的Schmidt等級為M ,並且切口上的門數為K ,則有M K路徑。為了模擬一個以富達度為單位的電路,需要模擬所有M K路徑並總和結果。總運行時與(2 N 1 + 2 N 2 )M K成正比,其中n 1和n 2是第一部分和第二部分中的Qubit編號。路徑模擬彼此獨立,並且可以在超級計算機或數據中心上進行瑣碎的平行。請注意,僅通過將所有路徑的分數f求和來運行以Fidelity f <1的方式運行模擬。
兩級檢查點方案用於提高性能。說,有k大門。我們將它們分為三個部分: p+r+s = k ,其中p是“前綴”門的數量, r是“ root”門的數量, s是“後綴”門的數量。在將所有門應用到和包括前綴門(包括前綴門)之後,將執行第一個檢查點,並在將所有門應用於根門上和包括根門(包括根門)後執行第二個檢查點。執行根和後綴門的所有路徑上的完整求和。
如果p> 0 ,則這樣的模擬給出f≈m -p (對於具有相同schmidt等級m的所有前綴門)。一個人需要運行具有不同前綴路徑的M P模擬,並將結果總結為f = 1 。
[4] Il Markov,A。Fatima,SV Isakov,S。Boixo,“量子至高無上既近又比看起來更近又遠”,Arxiv:1807.10749(2018)。
該代碼基本設計為庫。用戶可以修改應用程序中的示例應用程序以滿足自己的需求。文檔中描述了樣本應用程序的使用。
電路輸入格式在文檔中描述。
注意:這種格式被棄用,不再積極維護。
電路中提供了許多樣品電路。
C ++庫的單元測試使用Google測試框架,並位於測試中。 Python測試使用Pytest,位於QSIMCIRQ_TEST中。
要構建和運行所有測試,請運行:
make run-tests
這將將所有測試二進製文件編譯到具有.x擴展名的文件中,並串聯運行每個測試。如果測試失敗,測試將儘早停止。它還將運行qsimcirq Python接口的測試。要僅運行C ++或Python測試,請運行make run-cxx-tests或make run-py-tests 。
要清理生成的測試文件,請從測試目錄中運行make clean 。
CIRQ是建模和調用嘈雜的中間尺度量子(NISQ)電路的框架。
要開始使用QSIM模擬Google CIRQ電路,請參見教程。
有關QSIM-CIRQ API的更多詳細信息可以在文檔中找到。
這不是官方支持的Google產品。
QSIM自動上傳到Zenodo。單擊此徽章以查看所有版本的所有引用格式。
所有版本的等效bibtex格式參考如下:
@software{quantum_ai_team_and_collaborators_2020_4023103,
author = {Quantum AI team and collaborators},
title = {qsim},
month = Sep,
year = 2020,
publisher = {Zenodo},
doi = {10.5281/zenodo.4023103},
url = {https://doi.org/10.5281/zenodo.4023103}
}