প্রকল্প সম্পর্কে

PRISM-Q হল Rust-এ লেখা একটি কোয়ান্টাম সার্কিট সিমুলেটর, যাতে Python bindings রয়েছে। এটি সার্কিটের গঠন অনুযায়ী স্বয়ংক্রিয়ভাবে ব্যাকএন্ড নির্বাচন করে, একটি মাল্টি-পাস গেট ফিউশন পাইপলাইন চালায় এবং অভ্যন্তরীণ লুপে AVX2, FMA ও BMI2 kernels ব্যবহার করে (ARM64-এ NEON)। CUDA সমর্থন ঐচ্ছিক এবং statevector, stabilizer (পরীক্ষামূলক) ও density-matrix ব্যাকএন্ড কভার করে। ইনপুট হলো OpenQASM 3.0, পশ্চাৎ-সামঞ্জস্যপূর্ণ 2.0 সিনট্যাক্সসহ, এবং সার্কিটগুলো আবার OpenQASM 3.0-এ রপ্তানি করা যায়। cargo (prism-q) বা pip (prism-q) দিয়ে ইনস্টলেশন করা যায়। ডিফল্ট ফিচার সেটে Rayon প্যারালেলিজম ও faer SVD অন্তর্ভুক্ত; no-default-features বিল্ড সিঙ্গেল-থ্রেডেড এবং ন্যূনতম ডিপেন্ডেন্সিসহ। gpu ফিচারের জন্য CUDA Toolkit 12.x বা তার নতুন সংস্করণ প্রয়োজন। ব্যাকএন্ডগুলোর মধ্যে রয়েছে Statevector (সাধারণ সার্কিট, O(2^n)), Stabilizer (শুধু Clifford, O(n^2)), Factored Stabilizer (স্বাধীন ব্লকসহ Clifford), Sparse (অল্প কয়েকটি লাইভ অ্যামপ্লিটিউড), MPS (কম entanglement বা 1D, O(n*chi^2)), Product State (কোনো entanglement নেই), Tensor Network (কম treewidth), Factored (আংশিক entanglement), Density Matrix (সঠিক noisy evolution, O(4^n), শুধু explicit dispatch), এবং Distributed Statevector (একক-হোস্ট মেমরির বাইরে, MPI ranks, সঠিক ফলাফল)। BackendKind::Auto ডিফল্ট; statevector মেমরি বাজেট মেশিনের ফিজিক্যাল মেমরির অর্ধেক, PRISM_MAX_SV_QUBITS দিয়ে ওভাররাইড করা যায়। OpenQASM পার্সার stdgates.inc সেট, সাধারণ controlled ও multi-controlled ভ্যারিয়েন্ট, Qiskit exporter gates, IonQ এবং Google/Cirq native gate নাম, decomposed multi-instruction gates, IBM legacy u1/u2/u3, এবং user-defined gate declarations গ্রহণ করে। inv @, ctrl @ ও pow(k) @ modifier গুলো direct gates-এ চেইন করা যায়। qasm_export::to_qasm3 একটি Circuit-কে আবার OpenQASM 3.0 হিসেবে লিখে রাখে। ফিচারগুলোর মধ্যে রয়েছে shots ও sample counts, expectation values ও marginals, rebindingসহ parametric circuits, এবং adjoint method বা parameter-shift rule দিয়ে gradients। GPU ফিচার ডিভাইসের compute capability-র জন্য NVRTC-র মাধ্যমে রানটাইমে PTX কম্পাইল করে; একটি size crossover ছোট সাব-সার্কিটগুলোকে CPU-তে রাখে। circuit macrobenchmarks, gate microbenchmarks ও GPU dispatch-এর জন্য benchmarks দেওয়া আছে। রোডম্যাপে mid-circuit branching, multi-GPU ও distributed GPU execution, ROCm ports, এবং distributed ব্যাকএন্ডে noisy shots-এর কথা উল্লেখ আছে।