Human friendly BLAS and Lapack bindings for Haskell. http://github.com/wellposed/hblas/
|Latest on Hackage:||0.3.2.1|
This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.
hblas is an open source component of the Wellposed® mathematical software suite.
Members of the numerical haskell open source community can be found on irc at
#numerical-haskell on freenode,
and via the numericalhaskell mailing list.
hblas is a self contained full (well, not quite yet) BLAS and LAPACK binding that provides the full BLAS and LAPACKE APIs in a simple, unopinionated, Haskell wrapper.
This library is NOT meant to be used by end users, it is designed to be an unopinionated, simple, portable, easy to install BLAS/LAPACK substrate for higher level numerical computing libraries to build upon. Morever, this library is strictly a wrapper, and simply makes using the functionality of BLAS and LAPACK more accessible.
This library is NOT meant to be used a standalone array library (except in desperation), but rather should be used by a higher level numerical array library to provide high performance linear algebra routines.
By default, hblas will assume you have BLAS and LAPACK built and installed.
On OS X systems, things will just work.
$ cabal install
On linux and bsd systems, you will need to manually install the BLAS and LAPACK libraries beforehand.
$ sudo apt-get install libblas liblapack $ cabal install
To run the test suite execute:
$ cabal test
If you get an error like
undefined reference to 'cblas_sdsdot' when building or running an HBLAS program,
you might be on a system that builds BLAS and CBLAS separately, such as Arch Linux.
In which case, be sure to install CBLAS and invoke
cabal install hblas -fCBLAS
to make sure
hblas links to CBLAS properly.
API is subject to change.
import Foreign.Storable import Numerical.HBLAS.BLAS import Numerical.HBLAS.MatrixTypes -- Generate the constant mutable square matrix of the given type and dimensions. constMatrix :: Storable a => Int -> a -> IO (IODenseMatrix Row a) constMatrix n k = generateMutableDenseMatrix SRow (n,n) (const k) example_dgemm :: IO () example_dgemm = do left <- constMatrix 2 (2 :: Double) right <- constMatrix 2 (3 :: Double) out <- constMatrix 2 (0 :: Double) dgemm NoTranspose NoTranspose 1.0 1.0 left right res resulting <- mutableVectorToList $ _bufferDenMutMat out print resulting
Patches, bug reports, tests, and other contributions welcome.
If you want to add a new routine, check out the ones listed in the lapack section of the Intel MKL manual to get some human readable documentation.
I have > 32bit size arrays, help!
Congrats, you have ``big compute on big data'', contact Carter and we'll try to help you out.
release, bug fixes in show and improved tests, thanks to tomas musil for catching them
Improved type exports and getting started docs thanks to Stephen Diehl
the first useful release
PRE-RELEASE version 0.2.0.0
- Support for all BLAS operations defined on General Dense matrices, both row and column major.
- general dense linear and least squares solvers from LAPACK. Simple Drivers.
- support basic manipulations of BLAS style dense matrices