FlexChunk / README.md
DanielSwift's picture
Initial commit of FlexChunk Hugging Face app
30b652f
|
raw
history blame
2.31 kB
metadata
title: FlexChunk SpMV Demo
emoji: 
colorFrom: blue
colorTo: green
sdk: gradio
sdk_version: 4.39.0
app_file: app.py
pinned: false

FlexChunk: Enabling 100M×100M Out-of-Core SpMV

This Hugging Face Space demonstrates FlexChunk, an algorithm for performing Sparse Matrix-Vector Multiplication (SpMV) on matrices potentially too large to fit in RAM.

Key Idea: Divide the matrix into manageable horizontal chunks, process them sequentially, and use minimal memory (~1.7 GB for 100M×100M SpMV).

Interactive Demo

The app above allows you to:

  1. Generate a sparse matrix (adjust Size, Density, Chunks, Challenging flag).
  2. Run SpMV using FlexChunk (chunking to disk) and SciPy (emulating disk load).
  3. Compare performance (timings) and correctness.

Note: Larger matrices/densities will take longer. Limits are set for public infrastructure.

Performance Highlights

FlexChunk demonstrates near-linear scaling in time and memory for increasing matrix dimensions.

Time Performance and Memory Usage: See the original article for detailed performance graphs and analysis.

Benchmark Results

Selected results showing performance on large matrices:

Matrix Size Non-zero Elements Total Time Peak RAM Usage
... ... ... ...
1.0M × 1.0M 1.2M 1.07 s 17.00 MB
10.0M × 10.0M 12.0M 10.21 s 170.00 MB
30.0M × 30.0M 36.0M 31.13 s 510.00 MB
50.0M × 50.0M 62.5M 55.27 s 850.00 MB
70.0M × 70.0M 88.2M 1 min 17.1 s 1.19 GB
100.0M × 100.0M 120.0M 1 min 47.1 s 1.70 GB

*(Full table in the original README - Update this link!)*

More Information

See the original post for technical details: FlexChunk: Enabling 100M×100M Out-of-Core SpMV