![]() |
Deepity
Ultra-fast, SIMD-accelerated Predictive Coding
|
| NDeep | This file exists to provide both Tensor.h and IComputeBackend.h with device types without introducing circular dependencies |
| CCPUBackend | CPU implementation of IComputeBackend: SIMD (via Activations.h) for elementwise ops, BLAS for GEMM. Graph capture/replay are no-ops (there's no async device queue to record) |
| CCUDABackend | CUDA implementation of IComputeBackend: device kernels for elementwise ops, cuBLAS for GEMM, CUTLASS for the fused forward path, CUDA graphs for capture/replay. See src/backend/cuda/ for the implementation, split by concern to mirror this interface's own section grouping |
| CIComputeBackend | Device-agnostic compute backend interface: every numerical primitive a layer/network needs, implemented once each by CPUBackend (SIMD/BLAS) and CUDABackend (kernels/cuBLAS/CUTLASS), so layer code never branches on device directly |
| CTensor | A device-aware, RAII-managed, move-only buffer – see the file-level note above for the full ownership/device contract |
| CConvPCLayer | Convolutional Predictive Coding layer (im2col-based). See the file-level warning above before enabling an unclamped middle layer |
| CDirectKPPCLayer | Predictive Coding layer using Direct Kolen-Pollack feedback alignment (DFA): a per-layer feedback matrix Psi, trained to gradually correlate with W's transpose chain, replaces symmetric weight transport for the feedback term. See DirectKPPCNetwork.h's class docs and the paper's Appendix A.1 |
| CDiscriminativePCLayer | |
| CFullPCLayer | PC layer combining muPC scaling, optional residual connections, and DKP direct feedback – every extra OFF by default, so plain defaults reproduce DirectKPPCLayer exactly. See the file-level note above for the full design rationale |
| CGaussSeidelPCLayer | PC layer with Gauss-Seidel (sequential-sweep) settling dynamics, in place of the usual simultaneous update. Not yet gradient-checked – see the file-level warning above |
| CTensorDescriptor | A named, shaped view into a layer's weight/bias data, for ModelIO's save/load (see Layer::GetStateDict()) |
| CLayer | A deepity layer virtual class |
| CRBLayer | Restricted Boltzmann-style Predictive Coding (PC) Layer |
| CSimpleConvPCLayer | Convolutional PC layer, precision-free, AdamW-capable, routed through IComputeBackend for GPU portability – see the file-level warning above for the GPU path's verification status |
| CSimplePCLayer | Predictive Coding layer without precision weighting – the simpler, unweighted-energy counterpart to DiscriminativePCLayer |
| CConvPCNetwork | Convolutional Predictive Coding Network built from ConvPCLayer |
| CDirectKPPCNetwork | Predictive Coding network built from DirectKPPCLayer, using Direct Kolen-Pollack feedback alignment (DFA) instead of symmetric weight transport. See the file-level warning above on its current verification status |
| CDiscriminativePCNetwork | An abstracted class for an array of DiscriminativePCLayer |
| CFullPCNetwork | Predictive Coding network combining muPC scaling, optional residual connections, and DKP direct feedback – see the file-level note above for how its defaults reproduce DirectKPPCNetwork exactly |
| CGaussSeidelPCNetwork | Predictive Coding network built from GaussSeidelPCLayer, sweeping layers sequentially rather than updating them simultaneously. See the file-level warning above on its current verification status |
| CSimpleConvPCNetwork | Convolutional Predictive Coding Network built from SimpleConvPCLayer – precision-free, AdamW-capable, device-aware |
| CSimplePCNetwork | An abstracted class for an array of SimplePCLayer |
| CDeviceMemoryArena | A 64-byte-aligned bump-pointer allocator over a single contiguous block of device memory, obtained via a supplied IComputeBackend (expected to be a CUDABackend in practice, though this class itself doesn't hard-require that specific type) |
| CMemoryArena | A 64-byte-aligned bump-pointer allocator over a single contiguous block of host memory. Every chunk handed out via AllocateFloats() is itself 64-byte aligned, satisfying this codebase's strict alignment requirement for AVX2/AVX-512 loads |
| CModelIO | Static save/load helpers for any network type exposing GetLayers() – templated so it works across every PC network variant without each one reimplementing serialization |
| CProfileAccumulator | One layer's accumulated time-per-phase, in seconds – see the file-level note for the reconciliation invariants (PhaseSum() vs. the top-level totals vs. external wall-clock) |
| CProfileEntry | One registered layer's profiling data: its print label paired with its accumulator |
| CScopedTimer | No-op stand-in for the PCN_PROFILE build of ScopedTimer above, so PCN_TIME() call sites compile identically either way |
| CStreamAlignedBatcher | Builds batches with a fixed, grouped number of examples per class – see the file-level note for why this exists and what it deliberately doesn't own |
| CTimer | Implementation by Alex: https://www.learncpp.com/cpp-tutorial/timing-your-code/ |