Skip to main content

AVX2-accelerated array and matrix operations for Python

Project description

pyvx2-sbhadade

License: MIT Python 3.8+

A high-performance Python library for AVX2-accelerated array and matrix operations.

Features

  • 🚀 AVX2-Optimized Operations: Leverages Intel AVX2 SIMD instructions for maximum performance
  • 📊 Matrix Multiplication: Fast matrix-matrix multiplication using FMA instructions
  • Vector Operations: Element-wise addition, multiplication, and dot products
  • 🔧 Production Ready: Comprehensive error handling and edge case coverage
  • 🧪 Well Tested: Full test suite with performance benchmarks

Performance

PyVX2 provides direct AVX2 implementations for educational purposes and scenarios where you need explicit SIMD control.

Note: For production workloads, NumPy with MKL/OpenBLAS backends may be faster due to:

  • Multi-threading
  • Cache-blocking algorithms
  • Additional CPU-specific optimizations

PyVX2 is ideal for:

  • Learning SIMD programming
  • Embedding in single-threaded contexts
  • Custom algorithmic optimizations
  • Understanding low-level performance

Benchmark results on modern x86_64 CPUs:

Installation

From PyPI

pip install pyVX2

From Source

git clone https://github.com/yourusername/pyVX2.git
cd pyVX2
pip install .

Requirements

  • Python 3.8+
  • NumPy 1.19.0+
  • x86_64 CPU with AVX2 support
  • C compiler (GCC, Clang, or MSVC)

Quick Start

import numpy as np
from pyVX2 import matmul_avx2, add_avx2, mul_avx2, dot_avx2

# Matrix multiplication
A = np.random.randn(1000, 500).astype(np.float32)
B = np.random.randn(500, 800).astype(np.float32)
C = matmul_avx2(A, B)

# Vector addition
a = np.random.randn(10000).astype(np.float32)
b = np.random.randn(10000).astype(np.float32)
c = add_avx2(a, b)

# Element-wise multiplication
d = mul_avx2(a, b)

# Dot product
result = dot_avx2(a, b)

API Reference

matmul_avx2(A, B)

Matrix multiplication using AVX2 instructions.

Parameters:

  • A: 2D NumPy array (M, K) of float32
  • B: 2D NumPy array (K, N) of float32

Returns:

  • 2D NumPy array (M, N) of float32

add_avx2(a, b)

Element-wise vector addition.

Parameters:

  • a, b: 1D NumPy arrays (N,) of float32

Returns:

  • 1D NumPy array (N,) of float32

mul_avx2(a, b)

Element-wise vector multiplication.

Parameters:

  • a, b: 1D NumPy arrays (N,) of float32

Returns:

  • 1D NumPy array (N,) of float32

dot_avx2(a, b)

Vector dot product.

Parameters:

  • a, b: 1D NumPy arrays (N,) of float32

Returns:

  • float: The dot product

Benchmarks

Run benchmarks with:

python tests/test_avx2_ops.py

Example results on Intel Core i7-10700K:

Matrix Multiplication (1000x500 @ 500x800):
  NumPy:  45.2 ms
  pyVX2:  18.7 ms (2.4x faster)

Vector Addition (1M elements):
  NumPy:  1.2 ms
  pyVX2:  0.3 ms (4.0x faster)

Development

Building from Source

# Install development dependencies
pip install -e ".[dev]"

# Build Cython extensions
python setup.py build_ext --inplace

# Run tests
pytest tests/

License

MIT License - see LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Acknowledgments

  • Built with Cython for Python/C interoperability
  • Uses Intel AVX2 intrinsics for SIMD acceleration
  • Inspired by modern high-performance computing practices

Citation

If you use pyVX2 in your research, please cite:

@software{pyvx2,
  title = {pyVX2: AVX2-Accelerated Array Operations for Python},
  author = {Your Name},
  year = {2025},
  url = {https://github.com/yourusername/pyVX2}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyvx2_sbhadade-0.1.0.tar.gz (94.6 kB view details)

Uploaded Source

File details

Details for the file pyvx2_sbhadade-0.1.0.tar.gz.

File metadata

  • Download URL: pyvx2_sbhadade-0.1.0.tar.gz
  • Upload date:
  • Size: 94.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pyvx2_sbhadade-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5edb54e23ba70954300a273b93d8ea444b2c2062a687c0d312ea930261f744d0
MD5 be15469585427830be237991552fd65d
BLAKE2b-256 b24f7f5a07fb750e071b484a7e1ff7dcbf7d0e01f150d097c598d7f7d684d70b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page