quantrs2-core

Crates.ioquantrs2-core
lib.rsquantrs2-core
version0.1.0-alpha.5
created_at2025-05-13 01:55:22.493126+00
updated_at2025-06-17 11:51:29.415565+00
descriptionCore types and traits for the QuantRS2 quantum computing framework
homepage
repositoryhttps://github.com/cool-japan/quantrs
max_upload_size
id1671313
size3,558,102
KitaSan (cool-japan)

documentation

README

QuantRS2-Core: Advanced Quantum Computing Foundation

Crates.io Documentation License

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.

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

  • GPU Acceleration: CUDA and OpenCL backend support
  • SIMD Operations: Vectorized quantum state operations
  • Batch Processing: Parallel execution of quantum circuits
  • ZX-Calculus: Graph-based circuit optimization
  • Memory Efficiency: Optimized state vector representations

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
  • 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 abstractions
  • Register<N>: Fixed-size quantum register using const generics
  • QuantRS2Error: Comprehensive error enumeration with detailed diagnostics
  • QuantRS2Result<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 precision
  • CliffordTDecomposer: T-count optimization for fault-tolerant computing
  • KAKDecomposition: Multi-qubit gate decomposition structures
  • ShannonDecomposer: Optimal gate count decomposition algorithms
  • CartanDecomposer: Two-qubit gate decomposition using Lie algebra

Machine Learning

  • QMLLayer: Base trait for quantum machine learning layers
  • QMLCircuit: Parameterized quantum circuits for ML applications
  • TrainingConfig: Configuration for quantum ML training
  • VariationalGate: Gates with trainable parameters and autodiff support

Error Correction

  • StabilizerCode: Base trait for quantum error correction codes
  • SurfaceCode, ColorCode: Specific error correction codes
  • QuantumChannel: Noise models with Kraus, Choi, and Stinespring representations
  • SyndromeDecoder: Syndrome decoding algorithms (lookup, MWPM)

Advanced Computing

  • TensorNetwork: Tensor network representations with contraction optimization
  • FermionOperator: Fermionic system representations with transformations
  • BosonOperator: Bosonic operators for continuous variable systems
  • AnyonType: Topological quantum computing with anyonic models

Performance & Optimization

  • BatchStateVector: Parallel processing of multiple quantum states
  • GpuBackend: GPU acceleration for quantum computations
  • ZXDiagram: ZX-calculus based circuit optimization
  • OptimizationPass: 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 and OpenCL backend support for large-scale simulations
  • Optimized kernels for common quantum operations
  • Automatic fallback to CPU processing

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

Technical Details

  • Zero-cost abstractions: QubitId uses #[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.

Commit count: 5

cargo fmt