PyC - High Performance Computing ================================= The ``pyc`` (Python CUDA) module provides high-performance C++ and CUDA implementations integrated with PyTorch. Overview -------- PyC is a standalone package within AnalysisG that implements computationally intensive algorithms in native C++ and CUDA. It uses the LibTorch API for seamless integration with PyTorch workflows. Key features: - **Native C++/CUDA**: Performance-critical code written in C++ with optional CUDA acceleration - **PyTorch Integration**: Uses LibTorch for tensor operations and GPU memory management - **Zero Copy**: Efficient memory sharing between Python and C++ - **Thread Safe**: Designed for multi-threaded Python environments Submodules ---------- The pyc module is organized into several specialized submodules: CUtils ~~~~~~ Core utility functions and data structures. Graph Operations ~~~~~~~~~~~~~~~~ Graph-level operations for neural network processing: - Node aggregation - Edge operations - Graph pooling - Message passing primitives Interface ~~~~~~~~~ Python/C++ interface layer providing Cython bindings. NuSol - Neutrino Solver ~~~~~~~~~~~~~~~~~~~~~~~ Analytical and numerical neutrino momentum reconstruction: - Single neutrino reconstruction - Double neutrino reconstruction - CUDA-accelerated solvers - Tensor-based batch processing Operators ~~~~~~~~~ Mathematical operators optimized for physics: - DeltaR calculations - Invariant mass computation - Angular separations - Momentum operations Physics ~~~~~~~ Physics-specific calculations: - Coordinate transformations (polar ↔ cartesian) - Lorentz transformations - 4-vector operations - Kinematic calculations Transform ~~~~~~~~~ Data transformation utilities: - Batch transformations - Feature scaling - Coordinate system conversions Architecture ------------ PyC follows a layered architecture: 1. **CUDA Kernels** (lowest level): Raw CUDA code for GPU operations 2. **C++ Wrappers**: C++ classes wrapping CUDA kernels with LibTorch tensors 3. **Cython Interface**: Python-accessible interface via Cython 4. **Python API**: High-level Python functions This design allows: - Using PyC from pure Python (via Cython) - Using PyC from Cython code (direct C++ access) - Using PyC from pure C++ projects (standalone) Performance ----------- PyC is designed for maximum performance: - **GPU Acceleration**: CUDA kernels for parallel operations - **Memory Efficiency**: Minimal memory allocation and copying - **Batch Processing**: Vectorized operations across multiple events - **Multi-threading**: Thread-safe for concurrent Python execution Example Use Cases ----------------- PyC is used throughout AnalysisG for: 1. **Data Preprocessing**: Fast coordinate transformations and feature engineering 2. **Graph Construction**: Efficient edge and node feature computation 3. **Neutrino Reconstruction**: Solving complex kinematics constraints 4. **Training**: Custom loss functions and metrics 5. **Inference**: High-throughput model evaluation