@hackage hblas0.4.0.1
Human friendly BLAS and Lapack bindings for Haskell.
Categories
License
BSD-3-Clause
Maintainer
carter at wellposed dot com
Links
Versions
Installation
Tested Compilers
Dependencies (4)
- base >=4.6 && <4.14
- primitive >=0.5 && <0.7
- storable-complex >=0.2.0 && <0.3.0
- vector >=0.10 && <0.13 Show all…
Dependents (1)
@hackage/acme-everything
Package Flags
openblas(off by default)
cblas
(off by default)
Use on platforms when libcblas isn't part of libblas
About hblas
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.
Install
By default, hblas will assume you have BLAS and LAPACK built and installed.
OSX
On OS X systems, things will just work.
$ cabal install
Linux
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
Testing
To run the test suite execute:
$ cabal test
Linking
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.
Usage
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 out
resulting <- mutableVectorToList $ _bufferDenMutMat out
print resulting
Getting Involved
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.
Commercial Support
I have > 32bit size arrays, help!
Congrats, you have ``big compute on big data'', contact Carter and we'll try to help you out.

