Deepity
Ultra-fast, SIMD-accelerated Predictive Coding
Loading...
Searching...
No Matches
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 12]
 NDeepThis file exists to provide both Tensor.h and IComputeBackend.h with device types without introducing circular dependencies
 CCPUBackendCPU 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)
 CCUDABackendCUDA 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
 CIComputeBackendDevice-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
 CTensorA device-aware, RAII-managed, move-only buffer – see the file-level note above for the full ownership/device contract
 CConvPCLayerConvolutional Predictive Coding layer (im2col-based). See the file-level warning above before enabling an unclamped middle layer
 CDirectKPPCLayerPredictive 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
 CFullPCLayerPC 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
 CGaussSeidelPCLayerPC 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
 CTensorDescriptorA named, shaped view into a layer's weight/bias data, for ModelIO's save/load (see Layer::GetStateDict())
 CLayerA deepity layer virtual class
 CRBLayerRestricted Boltzmann-style Predictive Coding (PC) Layer
 CSimpleConvPCLayerConvolutional 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
 CSimplePCLayerPredictive Coding layer without precision weighting – the simpler, unweighted-energy counterpart to DiscriminativePCLayer
 CConvPCNetworkConvolutional Predictive Coding Network built from ConvPCLayer
 CDirectKPPCNetworkPredictive 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
 CDiscriminativePCNetworkAn abstracted class for an array of DiscriminativePCLayer
 CFullPCNetworkPredictive 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
 CGaussSeidelPCNetworkPredictive Coding network built from GaussSeidelPCLayer, sweeping layers sequentially rather than updating them simultaneously. See the file-level warning above on its current verification status
 CSimpleConvPCNetworkConvolutional Predictive Coding Network built from SimpleConvPCLayer – precision-free, AdamW-capable, device-aware
 CSimplePCNetworkAn abstracted class for an array of SimplePCLayer
 CDeviceMemoryArenaA 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)
 CMemoryArenaA 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
 CModelIOStatic save/load helpers for any network type exposing GetLayers() – templated so it works across every PC network variant without each one reimplementing serialization
 CProfileAccumulatorOne 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)
 CProfileEntryOne registered layer's profiling data: its print label paired with its accumulator
 CScopedTimerNo-op stand-in for the PCN_PROFILE build of ScopedTimer above, so PCN_TIME() call sites compile identically either way
 CStreamAlignedBatcherBuilds 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
 CTimerImplementation by Alex: https://www.learncpp.com/cpp-tutorial/timing-your-code/