accelerate-cublas-0.1: Basic Linear Algebra using native CUBLAS library

Data.Array.Accelerate.CUBLAS.Level3.Batched

Synopsis

# Documentation

data Handle :: *

Types

class (DevicePtrs (EltRepr a) ~ ((), DevicePtr a), Fractional (StorableOf a), Cublas (StorableOf a), Storable (StorableOf a), Real a) => Element a Source

Instances

 Element Double Element Float

mul :: (Shape ix, Slice ix, Eq ix, Element a, Elt a, IsNum a) => Handle -> Exp a -> Matrix ix a -> Matrix ix a -> Matrix ix a Source

mac :: (Shape ix, Slice ix, Eq ix, Element a, Elt a, IsNum a) => Handle -> Exp a -> Matrix ix a -> Matrix ix a -> Exp a -> Matrix ix a -> Matrix ix a Source

data LU ix a Source

lu :: (Shape ix, Eq ix, Element a, Elt a) => Handle -> Matrix ix a -> LU ix a Source

luInv :: (Shape ix, Eq ix, Element a, Elt a) => Handle -> LU ix a -> (Matrix ix a, Scalar ix Word32) Source

inv :: (Shape ix, Eq ix, Element a, Elt a) => Handle -> Matrix ix a -> (Matrix ix a, Scalar ix Word32) Source

Returns the inverted matrix and a rank information. If the matrix is invertible, then the rank information is zero. Otherwise it is the matrix rank plus 1.

luSolve :: (Shape ix, Slice ix, Eq ix, Element a, Elt a) => Handle -> LU ix a -> Matrix ix a -> Matrix ix a Source

Matrices with sizes larger than 32 are only supported starting with CUDA-6.5. In CUDA-6.0 you will get the error `CUBLAS Exception: unsupported value or parameter passed to a function`. On CUDA-6.0 you may prefer `luInv` which works surprisingly.

newtonInverseStep :: (Shape ix, Slice ix, Eq ix, Element a, Elt a, IsNum a) => Handle -> Matrix ix a -> Matrix ix a -> Matrix ix a Source

newtonInverse :: (Shape ix, Slice ix, Eq ix, Element a, Elt a, IsNum a) => Handle -> Exp Int -> Matrix ix a -> Matrix ix a -> Matrix ix a Source