Skip to main content

Fast matrix transforms

Project description

matvec

A domain-specific language for fast graph shift operations. This implements mathematical fields on numbers, n-dimensional column vectors, and n-by-n sparse matrices.

License: Apache Software License
Author: Emmanouil (Manios) Krasanakis
Dependncies: numpy

:zap: Quickstart

Creating a 5-dimensional vector (can use numpy arrays as inputs interchangeably with lists everywhere):

from matvec import Vector
x = Vector([1, 2, 3, 4, 5])

Creating a 5x5 sparse matrix A in coo-format with non-zero elements A[1,2]=9 and A[3,0]=21

from matvec import Matrix
A = Matrix([1, 2],
           [3, 0],
           [9, 21],
           5)

Print the outcome of matrix-vector multiplication:

print(A*x)

Print the outcome of left-multiplying transpose(x) with A:

print(x*A)

:fire: Features

:rocket: Parallelized matrix-vector multiplication.
:chart_with_downwards_trend: Memory reuse optimization.
:mag: numpy compatibility.
:factory: Common arithmetic operations.

:volcano: Benchmark

Benchmarks tested on a machine with 2.6 GHz CPU base clock and up to 4.4 GHz turbo boost, 12 logical cores, and 16GB DDR3 RAM. They span vectors of 1.E4 to 1.E6 elements and matrices with up to 20x the number of non-zeroes. More rigorous evaluation will take place in the future.

Task numpy/scipy matvec
Create new vector or array 0.025 sec 0.014 sec
1000 temp. additions of 1.E6 vectors only 2.130 sec 1.061 sec
Create matrix 0.505 sec 0.183 sec
Sparse matrix with vector multiplication 0.045 sec 0.020 sec

benchmarks

:memo: List of Operations

  • Full arithmetic operations * + - / == < > <= >= between vectors and other vectors or scalars.
  • Matrix-vector multiplication * (both left and right).
  • Element access and assignment for vectors with [].
  • Masking, such as y = x[x>0].
  • matvec.clear() Clears cache.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

matvec-0.1.6-pp39-pypy39_pp73-win_amd64.whl (20.9 kB view hashes)

Uploaded PyPy Windows x86-64

matvec-0.1.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (85.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

matvec-0.1.6-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (92.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

matvec-0.1.6-pp38-pypy38_pp73-win_amd64.whl (20.9 kB view hashes)

Uploaded PyPy Windows x86-64

matvec-0.1.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (85.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

matvec-0.1.6-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (92.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

matvec-0.1.6-pp37-pypy37_pp73-win_amd64.whl (20.9 kB view hashes)

Uploaded PyPy Windows x86-64

matvec-0.1.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (85.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

matvec-0.1.6-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (92.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

matvec-0.1.6-cp310-cp310-win_amd64.whl (20.7 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

matvec-0.1.6-cp310-cp310-win32.whl (17.9 kB view hashes)

Uploaded CPython 3.10 Windows x86

matvec-0.1.6-cp310-cp310-musllinux_1_1_x86_64.whl (726.1 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

matvec-0.1.6-cp310-cp310-musllinux_1_1_i686.whl (783.5 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

matvec-0.1.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (164.4 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

matvec-0.1.6-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (166.0 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

matvec-0.1.6-cp39-cp39-win_amd64.whl (20.7 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

matvec-0.1.6-cp39-cp39-win32.whl (17.9 kB view hashes)

Uploaded CPython 3.9 Windows x86

matvec-0.1.6-cp39-cp39-musllinux_1_1_x86_64.whl (725.9 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

matvec-0.1.6-cp39-cp39-musllinux_1_1_i686.whl (783.3 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

matvec-0.1.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (164.2 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

matvec-0.1.6-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (165.9 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

matvec-0.1.6-cp38-cp38-win_amd64.whl (20.7 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

matvec-0.1.6-cp38-cp38-win32.whl (17.9 kB view hashes)

Uploaded CPython 3.8 Windows x86

matvec-0.1.6-cp38-cp38-musllinux_1_1_x86_64.whl (726.1 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

matvec-0.1.6-cp38-cp38-musllinux_1_1_i686.whl (783.5 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

matvec-0.1.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (164.2 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

matvec-0.1.6-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (165.9 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

matvec-0.1.6-cp37-cp37m-win_amd64.whl (20.7 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

matvec-0.1.6-cp37-cp37m-win32.whl (17.9 kB view hashes)

Uploaded CPython 3.7m Windows x86

matvec-0.1.6-cp37-cp37m-musllinux_1_1_x86_64.whl (727.3 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

matvec-0.1.6-cp37-cp37m-musllinux_1_1_i686.whl (784.6 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

matvec-0.1.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (164.2 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

matvec-0.1.6-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (165.8 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

matvec-0.1.6-cp36-cp36m-win_amd64.whl (20.7 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

matvec-0.1.6-cp36-cp36m-win32.whl (17.9 kB view hashes)

Uploaded CPython 3.6m Windows x86

matvec-0.1.6-cp36-cp36m-musllinux_1_1_x86_64.whl (726.3 kB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ x86-64

matvec-0.1.6-cp36-cp36m-musllinux_1_1_i686.whl (783.7 kB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ i686

matvec-0.1.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (164.2 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

matvec-0.1.6-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl (165.8 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686

Supported by

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