เครื่องจำลองวงจรควอนตัม QSIM และ QSIMH เครื่องจำลองเหล่านี้ใช้สำหรับการเปรียบเทียบข้ามเอนโทรปีใน [1]
[1], F. Arute et al, "อำนาจสูงสุดของควอนตัมโดยใช้โปรเซสเซอร์ตัวนำยิ่งยวดที่ตั้งโปรแกรมได้", ธรรมชาติ 574, 505, (2019)
QSIM เป็นเครื่องจำลองแบบเต็มสถานะของSchrödinger มันคำนวณแอมพลิจูด 2 N ทั้งหมดของเวกเตอร์สถานะโดยที่ n คือจำนวน qubits โดยพื้นฐานแล้วตัวจำลองจะทำการคูณเมทริกซ์-เวกเตอร์ซ้ำ ๆ การคูณเมทริกซ์-เวกเตอร์หนึ่งครั้งสอดคล้องกับการใช้หนึ่งเกต รันไทม์ทั้งหมดเป็นสัดส่วนกับ G2 N โดยที่ G คือจำนวนประตู 2-Qubit เพื่อเพิ่มความเร็วในการจำลองเราใช้เกตฟิวชั่น [2] [3], คณิตศาสตร์ที่มีความแม่นยำเดี่ยว, คำแนะนำ AVX/FMA สำหรับ vectorization และ OpenMP สำหรับมัลติเธรด
[2] M. Smelyanskiy, NP Sawaya, A. Aspuru-Guzik, "Qhipster: สภาพแวดล้อมการทดสอบซอฟต์แวร์ประสิทธิภาพสูงควอนตัม", Arxiv: 1601.07195 (2016)
[3] T. Häner, DS Steiger, "0.5 Petabyte Simulation ของวงจรควอนตัม 45-Qubit", arxiv: 1704.01127 (2017)
QSIMH เป็นเครื่องจำลองแบบไฮบริดSchrödinger-Feynman [4] ตาข่ายถูกแบ่งออกเป็นสองส่วนและการสลายตัวของ Schmidt ใช้เพื่อสลายประตู 2-Qubit ในการตัด หากอันดับ Schmidt ของแต่ละประตูคือ M และจำนวนประตูที่ตัดคือ K จะมีเส้นทาง M K ในการจำลองวงจรด้วยความจงรักภักดีเราต้องจำลองเส้นทาง M K ทั้งหมดและรวมผลลัพธ์ รันไทม์ทั้งหมดเป็นสัดส่วนกับ (2 N 1 + 2 N 2 ) M K โดยที่ N 1 และ N 2 เป็นหมายเลข QUBIT ในส่วนแรกและส่วนที่สอง การจำลองเส้นทางเป็นอิสระจากกันและสามารถขนานกันเล็กน้อยเพื่อทำงานบนซูเปอร์คอมพิวเตอร์หรือในศูนย์ข้อมูล โปรดทราบว่าหนึ่งสามารถเรียกใช้การจำลองด้วย 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 Supremacy นั้นใกล้เคียงและไกลกว่าที่ปรากฏ", arxiv: 1807.10749 (2018)
รหัสได้รับการออกแบบโดยทั่วไปเป็นห้องสมุด ผู้ใช้สามารถแก้ไขแอปพลิเคชันตัวอย่างในแอพเพื่อตอบสนองความต้องการของตนเอง การใช้งานแอปพลิเคชันตัวอย่างอธิบายไว้ในเอกสาร
รูปแบบอินพุตวงจรอธิบายไว้ในเอกสาร
หมายเหตุ: รูปแบบนี้เลิกใช้แล้วและไม่ได้รับการดูแลอย่างแข็งขันอีกต่อไป
จำนวนวงจรตัวอย่างมีให้ในวงจร
การทดสอบหน่วยสำหรับไลบรารี C ++ ใช้เฟรมเวิร์กทดสอบของ Google และอยู่ในการทดสอบ การทดสอบ Python ใช้ pytest และอยู่ใน QSimcirq_tests
ในการสร้างและเรียกใช้การทดสอบทั้งหมดรัน:
make run-tests
สิ่งนี้จะรวบรวมไบนารีทดสอบทั้งหมดเป็นไฟล์ที่มีส่วนขยาย .x และเรียกใช้การทดสอบแต่ละครั้งในซีรีส์ การทดสอบจะหยุดเร็วหากการทดสอบล้มเหลว นอกจากนี้ยังจะเรียกใช้การทดสอบของอินเตอร์เฟส qsimcirq Python ในการเรียกใช้การทดสอบ C ++ หรือ Python เท่านั้นให้เรียกใช้ make run-cxx-tests หรือ make run-py-tests ตามลำดับ
ในการทำความสะอาดไฟล์ทดสอบที่สร้างขึ้นให้เรียกใช้ make clean จากไดเรกทอรีทดสอบ
CIRQ เป็นกรอบสำหรับการสร้างแบบจำลองและเรียกใช้วงจรควอนตัมระดับกลางที่มีเสียงดัง (NISQ)
ในการเริ่มต้นการจำลองวงจร Google CIRQ กับ QSIM ดูบทช่วยสอน
ข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับ 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}
}