Expand description
Memory access pattern optimization utilities
This module provides utilities for optimizing memory access patterns in numerical computations. It includes cache-friendly algorithms, data layout optimizations, and memory pooling strategies to improve performance.
§Memory Layout Optimization
Different memory layouts can significantly impact performance:
- Row-major vs column-major for matrices
- Structure of Arrays (SoA) vs Array of Structures (AoS)
- Cache-friendly blocking and tiling
§Examples
use scirs2_integrate::memory::{MemoryPool, CacheFriendlyMatrix, BlockingStrategy, MatrixLayout};
// Use memory pool for frequent allocations
let mut pool = MemoryPool::<f64>::new(1024);
let buffer = pool.allocate(100);
// Cache-friendly matrix operations
let matrix = CacheFriendlyMatrix::<f64>::new(100, 100, MatrixLayout::RowMajor);
let blocking = BlockingStrategy::new(64); // 64x64 blocksStructs§
- Blocking
Strategy - Blocking strategy for cache-friendly algorithms
- Cache
Aware Algorithms - Cache-aware algorithms for common operations
- Cache
Friendly Matrix - Cache-friendly matrix with optimized memory layout
- Data
Layout Optimizer - Data layout optimization utilities
- Memory
Pool - Memory pool for efficient allocation and reuse of buffers
- Memory
Prefetch - Memory prefetching utilities for performance optimization
- Memory
Usage - Memory usage statistics
- Pooled
Buffer - RAII wrapper for pooled buffers