Skip to content

mrader1248/pylapack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pylapack

LAPACK bindings for Python

This package provides bindings to LAPACK functions making it easy to reuse working memory.

The following example shows how pylapack can be used to perform a low-rank SVD using the ZGESVDX function (which cannot be used from scipy).

import numpy as np
import scipy.linalg as la
from time import time

import pylapack
pylapack.init()

n = 4096
k = 256
a = np.random.rand(n,n) + 1j*np.random.rand(n,n)
a = np.asfortranarray(a)

t = time()
u2,s2,v2 = la.svd(a)
u2,s2,v2 = u2[:,:k],s2[:k],v2[:k]
t = time() - t
print "scipy:    {:f} s".format(t)

t = time()
svd = pylapack.GESVDX(a.dtype, n, n, svals=(0, k-1))
u,s,v = svd.run(a)
t = time() - t
print "pylapack: {:f} s".format(t)

assert np.allclose(s, s2)

Output on an Intel® Core™ i7-5960X:

scipy:    28.297044 s
pylapack: 21.041771 s

About

LAPACK bindings for Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages