Skip to main content

Accelera - Memory-Efficient Matrix Operations Framework

A framework for performing large matrix operations on memory-constrained GPUs through intelligent chunking and CPU-GPU memory management.

Python 3.8+ PyTorch CUDA

🚀 Problem Statement

When working with large matrices on GPUs with limited VRAM, operations like matrix multiplication can cause Out-of-Memory (OOM) errors. Accelera solves this by:

  • 🧩 Breaking large operations into smaller chunks
  • 💾 Intelligently offloading intermediate results to CPU/RAM
  • 🔄 Dynamically managing GPU memory
  • 🎯 Providing a seamless API for large matrix operations

✨ Features

  • 🤖 Automatic chunking for matrix operations
  • 🧠 Dynamic memory management between GPU and CPU
  • ⚡ CUDA-optimized for NVIDIA GPUs
  • 📊 Configurable chunk sizes based on available VRAM
  • 📈 Progress tracking for long-running operations
  • 📋 Memory usage monitoring
  • 🔌 Multiple input types (PyTorch tensors, NumPy arrays)

🏃‍♂️ Quick Start

import accelera as acc

# Initialize with automatic VRAM detection
engine = acc.MatrixEngine(auto_detect_memory=True)

# Perform large matrix multiplication that might cause OOM on small GPUs
A = acc.Matrix.random((10000, 8000))  # 10k x 8k matrix (~305 MB)
B = acc.Matrix.random((8000, 12000))  # 8k x 12k matrix (~366 MB)

# This will automatically chunk and manage memory
C = engine.matmul(A, B)  # Result: 10k x 12k matrix (~458 MB)

print(f"✅ Success! Result shape: {C.shape}")

🎯 Real-world Example

# Scenario: Training a large neural network layer on a 4GB GPU
import accelera as acc

engine = acc.MatrixEngine()

# Large weight matrix (would normally cause OOM)
weights = acc.Matrix.randn((20000, 15000))  # ~1.1 GB
inputs = acc.Matrix.randn((15000, 8000))    # ~457 MB

# Forward pass - automatically chunked if needed
output = engine.matmul(weights, inputs)     # ~610 MB result

# Check memory usage
memory_info = engine.get_memory_info()
print(f"GPU utilization: {memory_info['gpu_utilization']:.1f}%")

📦 Installation

Requirements

  • Python 3.8+
  • PyTorch 2.0+ with CUDA support
  • NVIDIA GPU with CUDA drivers
  • Sufficient CPU RAM for temporary storage

Install

# Clone the repository
git clone https://github.com/maifeeulasad/accelera
cd accelera

# Install dependencies
pip install -r requirements.txt

# Install in development mode
pip install -e .

# Verify installation
make verify

🛠️ Usage Examples

Basic Operations

import accelera as acc
import numpy as np

# Initialize engine
engine = acc.MatrixEngine(auto_detect_memory=True, enable_progress=True)

# Matrix multiplication
A = acc.Matrix.randn((5000, 4000))
B = acc.Matrix.randn((4000, 6000))
C = engine.matmul(A, B)

# Element-wise operations
X = acc.Matrix.randn((3000, 4000))
Y = acc.Matrix.randn((3000, 4000))

# Addition
Z1 = engine.add(X, Y)

# Element-wise multiplication  
Z2 = engine.multiply(X, Y)

# Works with NumPy arrays and PyTorch tensors too!
A_np = np.random.randn(1000, 800).astype(np.float32)
B_np = np.random.randn(800, 1200).astype(np.float32)
C_from_numpy = engine.matmul(A_np, B_np)

Advanced Configuration

# Custom chunking strategy
engine = acc.MatrixEngine(
    chunking_strategy='adaptive',  # 'row', 'tile', 'adaptive'
    chunk_size=1024,               # Manual chunk size
    enable_progress=True           # Show progress bars
)

# Manual memory management
engine.set_chunk_size(512)                    # Smaller chunks for limited memory
engine.enable_auto_memory_detection(False)    # Disable auto-detection
engine.cleanup()                              # Force GPU memory cleanup

# Memory monitoring
memory_info = engine.get_memory_info()
print(f"GPU Memory: {memory_info['gpu_available_gb']:.2f}GB available")
print(f"CPU Memory: {memory_info['cpu_available_gb']:.2f}GB available")

📊 Performance Comparison

Run the benchmark to see how Accelera performs on your system:

# Run full benchmark suite
make benchmark

# Test specific matrix size
python examples/benchmark.py --custom-size 4000 3000 5000

# Quick demo
make demo

📁 Project Structure

accelera/
├── accelera/                  # Core framework
│   ├── __init__.py            # Main package exports
│   ├── engine.py              # MatrixEngine - main API
│   ├── matrix.py              # Matrix wrapper class
│   ├── memory_manager.py      # GPU/CPU memory management
│   ├── chunking.py            # Chunking strategies
│   └── config.py              # Configuration and logging
├── examples/                  # Usage examples
│   ├── basic_usage.py         # Basic operations demo
│   ├── advanced_usage.py      # Advanced features demo
│   └── benchmark.py           # Performance benchmarking
├── tests/                     # Unit tests
│   └── test_accelera.py       # Comprehensive test suite
├── DOCUMENTATION.md           # Detailed documentation
├── requirements.txt           # Python dependencies
├── setup.py                   # Package setup
└── Makefile                   # Development commands

🧪 Running Examples

# Basic usage example
python examples/basic_usage.py

# Advanced features demonstration
python examples/advanced_usage.py

# Performance benchmarking
python examples/benchmark.py

# Or use make commands
make examples
make benchmark

🔧 Development

# Install development dependencies
make dev-install

# Run tests
make test

# Run linting
make lint

# Format code
make format

# Clean build artifacts
make clean

📖 Documentation

🎯 Use Cases

  • 🧠 Deep Learning: Training large neural networks on consumer GPUs
  • 🔬 Scientific Computing: Large matrix operations in research
  • 📊 Data Processing: Batch processing of large datasets
  • 🎮 Computer Graphics: Large transformation matrices
  • 📈 Financial Modeling: Risk calculations with large covariance matrices

⚠️ System Requirements

  • NVIDIA GPU (optional)
  • CUDA (not sure about minimum version)

🤝 Contributing

Following the guidelines in claude.md:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Follow the coding standards: Small commits, clear intent, boring solutions
  4. Add tests for new functionality
  5. Submit a pull request with clear description

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • PyTorch team for the excellent tensor library
  • NVIDIA for CUDA and GPU computing
  • Community feedback and contributions

💡 Pro Tip: Start with the basic example, then explore advanced features. The framework is designed to be simple by default but powerful when needed!

# Get started in 3 lines
import accelera as acc
engine = acc.MatrixEngine()
result = engine.matmul(large_matrix_A, large_matrix_B)

Metadata

Release files for accelera 0.1.2.post2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for accelera 0.1.2.post2
File Size Uploaded
accelera-0.1.2.post2.tar.gz 29.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for accelera 0.1.2.post2
File Interpreter ABI Platform
accelera-0.1.2.post2-py3-none-any.whl Python 3 none any Details

Total release size: 58.3 kB

Release files / accelera-0.1.2.post2.tar.gz

Download URL accelera-0.1.2.post2.tar.gz
Size 29.5 kB
Tags Source
SHA-256 checksum
How to use checksums
5f52414e2d7508613b4faf1583e00a6cfba4b56853bab9c1375b48c488d81934
BLAKE2b-256 checksum
How to use checksums
e4bb6cfe6d220d3cf2e6afcfbe9b424835f6ba33af7eaacab3841540c330ca5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.11

Release files / accelera-0.1.2.post2-py3-none-any.whl

Download URL accelera-0.1.2.post2-py3-none-any.whl
Size 28.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cd4ac58e09129bb7a678dd6b41b35ddb28027df78ddd20f984a2c7c4ba59d5ce
BLAKE2b-256 checksum
How to use checksums
9b2832dca6f57c579496e3925a3376a5158a16144ffc0030a6ea066b1483fd31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.11

Release history Release notifications | RSS feed

This release

0.1.2.post2 This release

2 release files

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page