Module memory

Module memory 

Source
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 blocks

Structs§

BlockingStrategy
Blocking strategy for cache-friendly algorithms
CacheAwareAlgorithms
Cache-aware algorithms for common operations
CacheFriendlyMatrix
Cache-friendly matrix with optimized memory layout
DataLayoutOptimizer
Data layout optimization utilities
MemoryPool
Memory pool for efficient allocation and reuse of buffers
MemoryPrefetch
Memory prefetching utilities for performance optimization
MemoryUsage
Memory usage statistics
PooledBuffer
RAII wrapper for pooled buffers

Enums§

CacheLevel
MatrixLayout