Python bindings for QuantRS2-Core quantum computing framework
Project description
QuantRS2-Core: Advanced Quantum Computing Foundation
QuantRS2-Core is the foundational library of the QuantRS2 quantum computing framework, providing a comprehensive suite of quantum computing primitives, algorithms, and optimizations that power the entire ecosystem.
Version 0.1.0-beta.2 🎉 PRODUCTION READY!
✅ Core Module - Policy Refinement Release
This release focuses on comprehensive documentation, refined SciRS2 integration patterns, and improved developer experience.
Release Highlights ✅
- 🔧 Complete SciRS2 v0.1.0-beta.3 Integration: Enhanced scientific computing acceleration with unified patterns
- ⚡ Advanced SIMD Operations: Hardware-optimized vectorized quantum operations via
scirs2_core::simd_ops - 🔄 Unified Parallel Processing: Automatic parallelization via
scirs2_core::parallel_ops - 🎯 Intelligent Platform Detection: Automatic CPU/GPU capability detection and optimization
- 🛠️ Developer Experience Tools: Complete suite of debugging, profiling, and optimization tools
- 🤖 AutoOptimizer: Intelligent automatic backend selection for optimal performance
- 💾 Advanced Memory Management: Memory-efficient algorithms for large-scale quantum computing
- 🎮 GPU Acceleration: Full GPU support with Metal backend (macOS) and cross-platform compatibility
Production Features ✅
- 30+ qubit simulation capabilities
- Comprehensive gate decomposition algorithms
- Advanced error correction and fault-tolerance
- Complete quantum machine learning framework
- Hardware integration for real quantum devices
- Zero-warning code quality with extensive testing
Core Features
Basic Quantum Primitives
- Type-Safe Qubit Identifiers: Zero-cost abstractions with compile-time validation
- Comprehensive Gate Library: All standard quantum gates with optimized matrix representations
- Quantum Registers: Fixed-size register types using const generics
- Robust Error Handling: Comprehensive error types with detailed diagnostics
Advanced Decomposition Algorithms
- Solovay-Kitaev: Universal gate set approximation with configurable precision
- Clifford+T Decomposition: T-count optimization for fault-tolerant computing
- KAK Decomposition: Multi-qubit gate decomposition with recursive algorithms
- Shannon Decomposition: Optimal gate count decomposition for arbitrary unitaries
- Cartan Decomposition: Two-qubit gate decomposition using Lie algebra
Quantum Machine Learning
- QML Layers: Rotation, entangling, and hardware-efficient layers
- Data Encoding: Feature maps and data re-uploading strategies
- Training Framework: Optimizers, loss functions, and hyperparameter optimization
- Variational Algorithms: VQE, QAOA with automatic differentiation
Error Correction & Fault Tolerance
- Quantum Error Correction: Surface, color, and Steane codes
- Stabilizer Formalism: Pauli strings and syndrome decoding
- Noise Models: Comprehensive quantum channel representations
- Topological QC: Anyonic models, braiding operations, and fusion trees
Advanced Computing Paradigms
- MBQC: Measurement-based quantum computing with cluster states
- Tensor Networks: Efficient contraction algorithms and optimization
- Fermionic Systems: Jordan-Wigner and Bravyi-Kitaev transformations
- Bosonic Systems: Continuous variable quantum computing
Performance & Optimization
- SciRS2 Integration: Leveraging SciRS2's high-performance computing capabilities
- GPU Acceleration: CUDA, OpenCL, and Metal (macOS) backend support
- SIMD Operations: Vectorized quantum state operations via
scirs2_core::simd_ops - Batch Processing: Parallel execution using
scirs2_core::parallel_ops - Platform Detection: Automatic CPU/GPU capability detection for optimal performance
- ZX-Calculus: Graph-based circuit optimization
- Memory Efficiency: Optimized state vector representations with SciRS2
Usage
Basic Quantum Operations
use quantrs2_core::prelude::*;
fn main() -> QuantRS2Result<()> {
// Create qubits and apply basic gates
let q0 = QubitId::new(0);
let q1 = QubitId::new(1);
// Standard gates
let x_gate = XGate::new();
let h_gate = HGate::new();
let cnot = CXGate::new();
// Parametric gates
let rz = RZGate::new(std::f64::consts::PI / 4.0);
// Controlled operations
let controlled_x = make_controlled(XGate::new(), vec![q0]);
Ok(())
}
Gate Decomposition
use quantrs2_core::prelude::*;
fn decomposition_example() -> QuantRS2Result<()> {
// Solovay-Kitaev decomposition
let config = SolovayKitaevConfig::default();
let sk = SolovayKitaev::new(config);
let target_gate = RYGate::new(0.123);
let sequence = sk.decompose(&target_gate, 10)?;
// Clifford+T decomposition for fault-tolerant computing
let decomposer = CliffordTDecomposer::new();
let ct_sequence = decomposer.decompose_gate(&target_gate)?;
let t_count = count_t_gates_in_sequence(&ct_sequence);
// KAK decomposition for two-qubit gates
let cnot = CXGate::new();
let kak_decomp = decompose_two_qubit_kak(&cnot.matrix())?;
Ok(())
}
Quantum Machine Learning
use quantrs2_core::prelude::*;
fn qml_example() -> QuantRS2Result<()> {
// Create QML layers
let rotation_layer = RotationLayer::new(4, vec!['X', 'Y', 'Z']);
let entangling_layer = EntanglingLayer::circular(4);
// Build a QML circuit
let mut circuit = QMLCircuit::new(4);
circuit.add_layer(Box::new(rotation_layer));
circuit.add_layer(Box::new(entangling_layer));
// Training configuration
let config = TrainingConfig {
learning_rate: 0.01,
epochs: 100,
batch_size: 32,
optimizer: Optimizer::Adam,
loss_function: LossFunction::MeanSquaredError,
};
Ok(())
}
Error Correction
use quantrs2_core::prelude::*;
fn error_correction_example() -> QuantRS2Result<()> {
// Surface code for error correction
let surface_code = SurfaceCode::new(3, 3)?;
let stabilizers = surface_code.stabilizers();
// Syndrome measurement and decoding
let syndrome = vec![0, 1, 0, 1]; // Example syndrome
let decoder = LookupDecoder::new(&surface_code);
let correction = decoder.decode(&syndrome)?;
// Quantum channels for noise modeling
let depolarizing = QuantumChannels::depolarizing(0.01);
let amplitude_damping = QuantumChannels::amplitude_damping(0.05);
Ok(())
}
Batch Operations & GPU Acceleration
use quantrs2_core::prelude::*;
fn batch_and_gpu_example() -> QuantRS2Result<()> {
// Create batch state vectors for parallel processing
let batch_config = BatchConfig::new(1000, 4); // 1000 states, 4 qubits each
let mut batch = create_batch(&batch_config)?;
// Apply gates to entire batch
apply_single_qubit_gate_batch(&mut batch, 0, &HGate::new())?;
apply_two_qubit_gate_batch(&mut batch, 0, 1, &CXGate::new())?;
// GPU acceleration (if available)
let gpu_config = GpuConfig::default();
let gpu_backend = GpuBackendFactory::create(&gpu_config)?;
let gpu_state = gpu_backend.create_state_vector(10)?;
Ok(())
}
Module Structure
Core Foundations
- error.rs: Comprehensive error types and result wrappers
- gate.rs: Gate trait definitions and standard quantum gates
- qubit.rs: Type-safe qubit identifier with zero-cost abstractions
- register.rs: Quantum register types with const generics
- complex_ext.rs: Extended complex number operations for quantum states
- matrix_ops.rs: Efficient quantum matrix operations with SciRS2 integration
- operations.rs: Non-unitary quantum operations (measurements, reset, POVM)
Decomposition & Synthesis
- decomposition.rs: Universal gate decomposition algorithms
- decomposition/solovay_kitaev.rs: Universal gate set approximation
- decomposition/clifford_t.rs: Fault-tolerant gate decomposition
- synthesis.rs: Unitary matrix synthesis into gate sequences
- shannon.rs: Quantum Shannon decomposition with optimal gate counts
- cartan.rs: Cartan (KAK) decomposition using Lie algebra
- kak_multiqubit.rs: Multi-qubit KAK decomposition with recursive algorithms
Advanced Quantum Systems
- fermionic.rs: Fermionic operators with Jordan-Wigner transformations
- bosonic.rs: Bosonic operators for continuous variable quantum computing
- topological.rs: Anyonic models, braiding operations, and fusion trees
- mbqc.rs: Measurement-based quantum computing with cluster states
- tensor_network.rs: Tensor network representations and contraction algorithms
Error Correction & Fault Tolerance
- error_correction.rs: Quantum error correction codes (surface, color, Steane)
- quantum_channels.rs: Quantum channel representations (Kraus, Choi, Stinespring)
- characterization.rs: Gate characterization and eigenstructure analysis
Optimization & Performance
- optimization/: Circuit optimization passes and algorithms
- compression.rs: Gate sequence compression with configurable strategies
- fusion.rs: Gate fusion for reducing circuit depth
- peephole.rs: Local optimization patterns and T-count reduction
- zx_optimizer.rs: ZX-calculus based optimization passes
- zx_calculus.rs: ZX-diagram representation and manipulation
- zx_extraction.rs: Circuit extraction from ZX-diagrams
- simd_ops.rs: SIMD-accelerated quantum operations
- memory_efficient.rs: Memory-optimized state vector representations
Variational & Machine Learning
- variational.rs: Variational quantum circuits with automatic differentiation
- variational_optimization.rs: Optimization algorithms for variational methods
- qml/: Quantum machine learning components
- layers.rs: Parameterized quantum layers (rotation, entangling, pooling)
- encoding.rs: Data encoding strategies and feature maps
- training.rs: Training algorithms and hyperparameter optimization
- parametric.rs: Parametric gates with symbolic computation
- qaoa.rs: Quantum Approximate Optimization Algorithm
- qpca.rs: Quantum Principal Component Analysis
Specialized Algorithms
- hhl.rs: HHL algorithm for linear systems
- eigensolve.rs: Quantum eigenvalue algorithms
- quantum_counting.rs: Quantum counting and amplitude estimation
- quantum_walk.rs: Discrete and continuous quantum walks
Hardware & Acceleration
- gpu/: GPU acceleration support
- mod.rs: GPU backend abstractions
- cpu_backend.rs: CPU fallback support
- metal_backend_scirs2_ready.rs: Metal GPU support for macOS (placeholder for SciRS2 integration)
- scirs2_adapter.rs: Adapter layer for SciRS2 GPU migration
- platform/: Platform-specific optimizations
- mod.rs: PlatformCapabilities detection and adaptive optimization
- controlled.rs: Efficient controlled gate operations
- batch/: Batch processing for parallel quantum computations
- operations.rs: Batch gate operations
- execution.rs: Batch circuit execution
- measurement.rs: Batch measurement and tomography
- optimization.rs: Batch parameter optimization
Testing & Validation
- testing.rs: Quantum-specific testing utilities and assertions
API Overview
Core Types
QubitId: Type-safe qubit identifier with zero-cost abstractionsRegister<N>: Fixed-size quantum register using const genericsQuantRS2Error: Comprehensive error enumeration with detailed diagnosticsQuantRS2Result<T>: Convenient result type alias for error handling
Gate System
GateOp: Core trait for quantum gates with matrix representations- Standard gates:
XGate,YGate,ZGate,HGate,SGate,TGate,CXGate,CZGate - Parametric gates:
RXGate,RYGate,RZGate,U1Gate,U2Gate,U3Gate - Controlled operations:
ControlledGate,MultiControlledGate,ToffoliGate,FredkinGate
Decomposition & Synthesis
SolovayKitaev: Universal gate set approximation with configurable precisionCliffordTDecomposer: T-count optimization for fault-tolerant computingKAKDecomposition: Multi-qubit gate decomposition structuresShannonDecomposer: Optimal gate count decomposition algorithmsCartanDecomposer: Two-qubit gate decomposition using Lie algebra
Machine Learning
QMLLayer: Base trait for quantum machine learning layersQMLCircuit: Parameterized quantum circuits for ML applicationsTrainingConfig: Configuration for quantum ML trainingVariationalGate: Gates with trainable parameters and autodiff support
Error Correction
StabilizerCode: Base trait for quantum error correction codesSurfaceCode,ColorCode: Specific error correction codesQuantumChannel: Noise models with Kraus, Choi, and Stinespring representationsSyndromeDecoder: Syndrome decoding algorithms (lookup, MWPM)
Advanced Computing
TensorNetwork: Tensor network representations with contraction optimizationFermionOperator: Fermionic system representations with transformationsBosonOperator: Bosonic operators for continuous variable systemsAnyonType: Topological quantum computing with anyonic models
Performance & Optimization
BatchStateVector: Parallel processing of multiple quantum statesGpuBackend: GPU acceleration for quantum computationsZXDiagram: ZX-calculus based circuit optimizationOptimizationPass: Circuit optimization pass framework
Performance Features
SIMD Acceleration
- Vectorized quantum state operations using platform-specific SIMD instructions
- Optimized inner products, normalizations, and phase applications
- Batch processing of expectation values
Memory Optimization
- Efficient state vector representations with configurable precision
- Sparse matrix support through SciRS2 integration
- Memory-mapped storage for large gate databases
GPU Computing
- CUDA, OpenCL, and Metal backend support for large-scale simulations
- Optimized kernels for common quantum operations
- Automatic fallback to CPU processing
- Metal GPU support for Apple Silicon (M1/M2/M3) with unified memory architecture
- Forward-compatible implementation ready for SciRS2 v0.1.0-alpha.6 Metal integration
SciRS2 Integration
- Advanced linear algebra operations using SciRS2's optimized BLAS/LAPACK bindings
- Sparse matrix solvers for large quantum systems
- Parallel algorithms for batch quantum computations via
scirs2_core::parallel_ops - SIMD operations for vectorized quantum state manipulations
- Memory-efficient algorithms for large-scale quantum simulations
- Platform-aware optimization with automatic backend selection
Technical Details
- Zero-cost abstractions:
QubitIduses#[repr(transparent)]for no runtime overhead - Column-major storage: Gate matrices stored for optimal BLAS compatibility
- Const generics: Compile-time validation of quantum register sizes
- Trait specialization: Optimized handling for common gate patterns
- Error propagation: Comprehensive error handling with detailed context
Integration with QuantRS2 Ecosystem
Circuit Module Integration
- Provides foundational gate types for circuit construction
- Supplies optimization passes for circuit compilation
- Offers decomposition algorithms for gate translation
Simulation Module Integration
- Supplies optimized matrix representations for quantum simulation
- Provides batch processing capabilities for parallel simulations
- Offers GPU acceleration for large-scale quantum computations
Device Module Integration
- Provides gate calibration data structures for hardware backends
- Supplies noise models for realistic quantum device simulation
- Offers translation algorithms for device-specific gate sets
ML Module Integration
- Provides QML layers and training frameworks
- Supplies variational optimization algorithms
- Offers automatic differentiation for quantum gradients
License
This project is licensed under either:
at your option.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quantrs2_core_extension-0.1.0b2.tar.gz.
File metadata
- Download URL: quantrs2_core_extension-0.1.0b2.tar.gz
- Upload date:
- Size: 896.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.9.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b00d469afa0bd9bbc3289515a6ce9933acf06da8e8196f5b99ab1ac278f9dc89
|
|
| MD5 |
1beb273123618eb665905337f3a17f97
|
|
| BLAKE2b-256 |
b4d5a62cd62bffd252c589fe8e687aba1dc8073e38e25f6db4b421256e6cac86
|
File details
Details for the file quantrs2_core_extension-0.1.0b2-cp38-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: quantrs2_core_extension-0.1.0b2-cp38-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 383.9 kB
- Tags: CPython 3.8+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.9.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de0e345051800f4e35937471746c2a138631f5b1c5274f76e3f1c7a206c8f4d4
|
|
| MD5 |
1ce4ec214605612b20514d6ec241a2b4
|
|
| BLAKE2b-256 |
b047741ff079eadd3b4f1329ede658df4b0f1ed414bebbdb669eed99012934c8
|