170 likes | 374 Views
Quantum Simulators. DoRon Motter August 2, 2001. Introduction. Currently a wide variety of quantum simulators are available Good to know to avoid duplication of effort Different simulators have different target audiences Different simulators have different strengths/weaknesses.
E N D
Quantum Simulators DoRon Motter August 2, 2001
Introduction • Currently a wide variety of quantum simulators are available • Good to know to avoid duplication of effort • Different simulators have different target audiences • Different simulators have different strengths/weaknesses
Simulator Space • Simulators of a single algorithm • ex. Shor’s Algorithm • Simulators for illustration • Often simulate a single algorithm • Give some sort of display with heavily annotated source • Quantum API’s / Programming Languages • Java Applets
Single Algorithm • Often provide the best performance (for this single algorithm) • Performance results vary • Different ‘implementations’ of the algorithm • Different OS/language requirements • Different results(!) • Often undeveloped API’s
Illustrative Simulators • Often Mathematica worksheets • Provide heavily annotated source • Often integrate source/annotations and display • Useful when attempting to understand (or explain)
Quantum API’s • Provide ‘high-level’ quantum operations • Often provide completely generic QC simulation • The widest approach, with several good options
Simulator Traits • Interface • C/C++ • GUI • Speed • Source Availability • Universality
Single Algorithm: OpenQubit • http://www.ennui.net/~quantum/ • API but only complete enough to do Shor’s • Open Source (GPL) • Useful because it’s GPL and hopes to become an API
Quantum API: QCE • http://rugth30.phys.rug.nl/compphys0/qce.htm • Quantum Computer Emulator • Provides support (GUI) for testing/sim of quantum algorithms on various hardware • Support for interactions as a result of implementation • Interesting because it takes into account physical implementation • Built in visualization
Quantum API: QDD • http://home.plutonium.net/~dagreve/qdd.html • (And SHORNUF…) • Uses BDD’s to represent quantum state • Gains an efficiency advantage • Loses the ability to perform analog computations • Open Source • Probably the most efficient ‘general purpose’ simulator
Quantum API: QDD X.Set(0); // place the register in a superposition of states. X.Mix(); F.Set(0); expn(A,Number,X,F, 1); // F = a^X mod n // Perform a classical sampling of F. This collapses the entire quantum // state so that it is consistant with the value measured in F. Fv = F.Sample(); // Measure the period of X. Unfortunately, a bit of a quantum cheat. Pv = X.Period(); f1 = gcd((powmod(A,Pv/2,Number) + 1) % Number , Number) ; f2 = gcd((powmod(A,Pv/2,Number) + Number - 1) % Number , Number) ; Xv = X.Sample(); Cv = powmod(A,Xv,Number); assert(Cv == Fv, "Mismatch"); f1 = gcd(Number,f1); f2 = gcd(Number,f2); Factor = (f1 > f2 ? f1 : f2); found = (Factor > 1) && (Factor < Number);
Quantum API: QCL • http://tph.tuwien.ac.at/~oemer/qcl.html • Quantum Computation Language • A high-level, architecture independent programming language • Separates algorithm from implementation • Provides reference implementation • Interprets commands in its own ‘shell’
Quantum API: QCL operator dft(qureg q) { // main operator const n=#q; // set n to length of input int i; int j; // declare loop counters for i=0 to n-1 { for j=0 to i-1 { // apply conditional phase gates CPhase(2*pi/2^(i-j+1),q[n-i-1] & q[n-j-1]); } Mix(q[n-i-1]); // qubit rotation } flip(q); // swap bit order of the output }
Quantum API: QCS • http://www.senko-corp.co.jp/qcs/ • Universal Quantum Computer Simulator • Closed Source, Commercial • GUI interface to building circuits
Conclusion • Different approaches to Universality • GUI circuit building from gates • C++ algorithm writing • Tradeoffs must be considered • Universality vs. Speed