양자 회로 시뮬레이터 QSIM 및 QSIMH. 이 시뮬레이터는 [1]의 교차 엔트로피 벤치마킹에 사용되었습니다.
[1], F. Arute et al, "프로그래밍 가능한 초전도 프로세서를 사용한 양자 우위", Nature 574, 505, (2019).
QSIM은 Schrödinger 전체 상태 벡터 시뮬레이터입니다. 상태 벡터의 모든 2 N 진폭을 계산하는데, 여기서 n은 큐 비트 수입니다. 본질적으로, 시뮬레이터는 매트릭스 벡터 곱셈을 반복적으로 수행합니다. 하나의 매트릭스 벡터 곱셈은 하나의 게이트를 적용하는 것에 해당합니다. 총 런타임은 G2 N 에 비례하며 여기서 G는 2 쿼트 게이트 수입니다. 시뮬레이터의 속도를 높이기 위해 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 쿼트 양자 회로의 0.5 페타 바이트 시뮬레이션", ARXIV : 1704.01127 (2017).
Qsimh는 하이브리드 Schrödinger-Feynman 시뮬레이터 [4]입니다. 격자는 두 부분으로 분할되며 Schmidt 분해는 컷의 2 쿼트 게이트를 분해하는 데 사용됩니다. 각 게이트의 Schmidt 순위가 M 이고 컷의 게이트 수가 k 인 경우 M k 경로가 있습니다. 충실도로 회로를 시뮬레이션하려면 모든 M K 경로를 시뮬레이션하고 결과를 합산해야합니다. 총 런타임은 (2 N 1 + 2 N 2 ) M K 에 비례하며, 여기서 N 1 및 N 2는 첫 번째 및 두 번째 부분의 큐 비트 수입니다. 경로 시뮬레이션은 서로 독립적이며 슈퍼 컴퓨터 또는 데이터 센터에서 실행되도록 사소하게 병렬화 될 수 있습니다. 모든 경로의 일부 F 에 걸쳐 Fidelity F <1 으로 시뮬레이션을 실행할 수 있습니다.
두 레벨 체크 포인팅 체계는 성능을 향상시키는 데 사용됩니다. 컷에 K 게이트가 있습니다. P+R+S = K , 여기서 P 는 "접두사"게이트의 수, r 은 "루트"게이트 수이고 S는 "접미사"게이트의 수입니다. 첫 번째 체크 포인트는 접두사 게이트까지 모든 게이트를 적용한 후에 실행되며, 두 번째 검사 점은 루트 게이트를 포함하여 모든 게이트를 적용한 후에 실행됩니다. 루트 및 접미사 게이트의 모든 경로에 대한 전체 합산이 수행됩니다.
p> 0 이면 하나의 시뮬레이션은 f ≈ m -p를 제공합니다 (동일한 schmidt 순위 m을 갖는 모든 접두사 게이트에 대해). 접두사 경로로 M P 시뮬레이션을 실행하고 결과를 F = 1을 얻도록 합산해야합니다.
[4] Il Markov, A. Fatima, Sv Isakov, S. Boixo, "Quantum Tepremacy는 그것이 나타나는 것보다 더 가깝고 더 멀다", Arxiv : 1807.10749 (2018).
코드는 기본적으로 라이브러리로 설계되었습니다. 사용자는 앱에서 샘플 응용 프로그램을 수정하여 자신의 요구를 충족시킬 수 있습니다. 샘플 응용 프로그램의 사용은 문서에 설명되어 있습니다.
회로 입력 형식은 문서에 설명되어 있습니다.
참고 :이 형식은 더 이상 사용되지 않으며 더 이상 적극적으로 유지되지 않습니다.
회로에서 다수의 샘플 회로가 제공됩니다.
C ++ 라이브러리의 단위 테스트는 Google 테스트 프레임 워크를 사용하며 테스트에 있습니다. Python 테스트는 Pytest를 사용하며 Qsimcirq_tests에 있습니다.
모든 테스트를 구축하고 실행하려면 실행하십시오.
make run-tests
이렇게하면 모든 테스트 바이너리가 .x 확장 기능이있는 파일에 대한 모든 테스트 바이너리를 수집하고 각 테스트를 직렬로 실행합니다. 테스트가 실패하면 테스트가 일찍 중지됩니다. 또한 qsimcirq Python 인터페이스의 테스트를 실행합니다. C ++ 또는 Python 테스트 만 실행하려면 RUN은 각각 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}
}