-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | FFI bindings to CUDA Solver, a LAPACK-like library -- -- The cuSolver library provides useful LAPACK-like features implemented -- on NVIDIA GPUs, such as common matrix factorization and triangular -- solve routines for dense matrices, a sparse least-squares solver -- routine, and an eigenvalue solver. This package provides FFI bindings -- to the functions of the cuSolver library. You will need to install the -- CUDA driver and developer toolkit: -- -- http://developer.nvidia.com/cuda-downloads -- -- See the travis-ci.org build matrix for tested CUDA library -- versions. @package cusolver @version 0.3.0.0 module Foreign.CUDA.Solver.Error -- | Error codes used by cuSolver library functions -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuSolverSPstatus data Status Success :: Status NotInitialized :: Status AllocFailed :: Status InvalidValue :: Status ArchMismatch :: Status MappingError :: Status ExecutionFailed :: Status InternalError :: Status MatrixTypeNotSupported :: Status NotSupported :: Status ZeroPivot :: Status InvalidLicense :: Status IrsParamsNotInitialized :: Status IrsParamsInvalid :: Status IrsInternalError :: Status IrsNotSupported :: Status IrsOutOfRange :: Status IrsNrhsNotSupportedForRefineGmres :: Status IrsInfosNotInitialized :: Status describe :: Status -> String data CUSolverException ExitCode :: Status -> CUSolverException UserError :: String -> CUSolverException -- | Raise a CUSolverException in the IO Monad cusolverError :: String -> IO a -- | A specially formatted error message requireSDK :: Name -> Double -> IO a -- | Return the results of a function on successful execution, otherwise -- throw an exception with an error string associated with the return -- code resultIfOk :: (Status, a) -> IO a -- | Throw an exception with an error string associated with an -- unsuccessful return code, otherwise return unit. nothingIfOk :: Status -> IO () -- | Throw an error if given error code is not CUSPARSE_STATUS_SUCCESS checkStatus :: CInt -> IO () instance GHC.Show.Show Foreign.CUDA.Solver.Error.Status instance GHC.Classes.Eq Foreign.CUDA.Solver.Error.Status instance GHC.Exception.Type.Exception Foreign.CUDA.Solver.Error.CUSolverException instance GHC.Show.Show Foreign.CUDA.Solver.Error.CUSolverException instance GHC.Enum.Enum Foreign.CUDA.Solver.Error.Status module Foreign.CUDA.Solver.Dense.Context -- | An opaque handle to the cuSolverDN context, which is passed to all -- library function calls. -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuSolverDNhandle newtype Handle Handle :: Ptr () -> Handle [useHandle] :: Handle -> Ptr () -- | This function initializes the cuSolverDN library and creates a handle -- to the cuSolverDN context. It must be called before any other -- cuSolverDN API function is invoked. It allocates hardware resources -- necessary for accessing the GPU. -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuSolverDNcreate create :: IO Handle -- | This function releases resources used by the cuSolverDN library. -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuSolverDNdestroy destroy :: Handle -> IO () module Foreign.CUDA.Solver.Dense.Stream -- | Sets the execution stream which all subsequent cuSolverDn library -- functions will execute with. If not set, functions execute in the -- default stream (which never overlaps any other operations). -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cudssetstream setStream :: Handle -> Stream -> IO () -- | For more information see the cuSolver function reference: -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuds-linearsolver-reference module Foreign.CUDA.Solver.Dense.Linear -- | An opaque handle to the cuSolverDN context, which is passed to all -- library function calls. -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuSolverDNhandle data Handle data Fill Lower :: Fill Upper :: Fill Full :: Fill -- | Indicates whether the dense matrix is on the lift or right side in the -- matrix equation solved by a particular function. -- -- http://docs.nvidia.com/cuda/cublas/index.html#cublassidemode_t data Side Left :: Side Right :: Side spotrf_bufferSize :: Handle -> Fill -> Int -> DevicePtr Float -> Int -> IO Int dpotrf_bufferSize :: Handle -> Fill -> Int -> DevicePtr Double -> Int -> IO Int cpotrf_bufferSize :: Handle -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> IO Int zpotrf_bufferSize :: Handle -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> IO Int spotrf :: Handle -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dpotrf :: Handle -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () cpotrf :: Handle -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zpotrf :: Handle -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () spotrs :: Handle -> Fill -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dpotrs :: Handle -> Fill -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () cpotrs :: Handle -> Fill -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zpotrs :: Handle -> Fill -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () sgetrf_bufferSize :: Handle -> Int -> Int -> DevicePtr Float -> Int -> IO Int dgetrf_bufferSize :: Handle -> Int -> Int -> DevicePtr Double -> Int -> IO Int cgetrf_bufferSize :: Handle -> Int -> Int -> DevicePtr (Complex Float) -> Int -> IO Int zgetrf_bufferSize :: Handle -> Int -> Int -> DevicePtr (Complex Double) -> Int -> IO Int sgetrf :: Handle -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Int32 -> DevicePtr Int32 -> IO () dgetrf :: Handle -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Int32 -> DevicePtr Int32 -> IO () cgetrf :: Handle -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr Int32 -> DevicePtr Int32 -> IO () zgetrf :: Handle -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr Int32 -> DevicePtr Int32 -> IO () sgetrs :: Handle -> Operation -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Int32 -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dgetrs :: Handle -> Operation -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Int32 -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () cgetrs :: Handle -> Operation -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zgetrs :: Handle -> Operation -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () sgeqrf_bufferSize :: Handle -> Int -> Int -> DevicePtr Float -> Int -> IO Int dgeqrf_bufferSize :: Handle -> Int -> Int -> DevicePtr Double -> Int -> IO Int cgeqrf_bufferSize :: Handle -> Int -> Int -> DevicePtr (Complex Float) -> Int -> IO Int zgeqrf_bufferSize :: Handle -> Int -> Int -> DevicePtr (Complex Double) -> Int -> IO Int sgeqrf :: Handle -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dgeqrf :: Handle -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () cgeqrf :: Handle -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zgeqrf :: Handle -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () sormqr :: Handle -> Side -> Operation -> Int -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dormqr :: Handle -> Side -> Operation -> Int -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () cunmqr :: Handle -> Side -> Operation -> Int -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zunmqr :: Handle -> Side -> Operation -> Int -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () ssytrf_bufferSize :: Handle -> Int -> DevicePtr Float -> Int -> IO Int dsytrf_bufferSize :: Handle -> Int -> DevicePtr Double -> Int -> IO Int csytrf_bufferSize :: Handle -> Int -> DevicePtr (Complex Float) -> Int -> IO Int zsytrf_bufferSize :: Handle -> Int -> DevicePtr (Complex Double) -> Int -> IO Int ssytrf :: Handle -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Int32 -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dsytrf :: Handle -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Int32 -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () csytrf :: Handle -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zsytrf :: Handle -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () sorgqr_bufferSize :: Handle -> Int -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> IO Int dorgqr_bufferSize :: Handle -> Int -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> IO Int cungqr_bufferSize :: Handle -> Int -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> IO Int zungqr_bufferSize :: Handle -> Int -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> IO Int sorgqr :: Handle -> Int -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dorgqr :: Handle -> Int -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () cungqr :: Handle -> Int -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zungqr :: Handle -> Int -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () sormqr_bufferSize :: Handle -> Side -> Operation -> Int -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> IO Int dormqr_bufferSize :: Handle -> Side -> Operation -> Int -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> IO Int cunmqr_bufferSize :: Handle -> Side -> Operation -> Int -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> IO Int zunmqr_bufferSize :: Handle -> Side -> Operation -> Int -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> IO Int spotri :: Handle -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dpotri :: Handle -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () cpotri :: Handle -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zpotri :: Handle -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () spotri_bufferSize :: Handle -> Fill -> Int -> DevicePtr Float -> Int -> IO Int dpotri_bufferSize :: Handle -> Fill -> Int -> DevicePtr Double -> Int -> IO Int cpotri_bufferSize :: Handle -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> IO Int zpotri_bufferSize :: Handle -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> IO Int -- | For more information see the cuSolver function reference: -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuds-eigensolver-reference module Foreign.CUDA.Solver.Dense.Eigenvalue -- | An opaque handle to the cuSolverDN context, which is passed to all -- library function calls. -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuSolverDNhandle data Handle data Fill Lower :: Fill Upper :: Fill Full :: Fill -- | Indicates whether the dense matrix is on the lift or right side in the -- matrix equation solved by a particular function. -- -- http://docs.nvidia.com/cuda/cublas/index.html#cublassidemode_t data Side Left :: Side Right :: Side -- | Indicates which operation needs to be performed with a dense matrix. -- -- -- -- http://docs.nvidia.com/cuda/cublas/index.html#cublasoperation_t data Operation N :: Operation T :: Operation C :: Operation Hermitan :: Operation Conjg :: Operation -- | This type indicates whether eigenvectors are computed. -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cusolverEigMode data EigMode NoVector :: EigMode Vector :: EigMode -- | This type indicates which type of eigenvalue solver is used. It -- corresponds to the parameters used by legacy LAPACK implementations: -- -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cusolverEigType data EigType EigType1 :: EigType EigType2 :: EigType EigType3 :: EigType -- | This type indicates which selection of eigenvalues and optionally -- eigenvectors need to be computed data EigRange All :: EigRange I :: EigRange V :: EigRange data Info_gesvdj data Info_syevj sgebrd_bufferSize :: Handle -> Int -> Int -> IO Int dgebrd_bufferSize :: Handle -> Int -> Int -> IO Int cgebrd_bufferSize :: Handle -> Int -> Int -> IO Int zgebrd_bufferSize :: Handle -> Int -> Int -> IO Int sgebrd :: Handle -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> DevicePtr Float -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dgebrd :: Handle -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> DevicePtr Double -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () cgebrd :: Handle -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zgebrd :: Handle -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () sgesvd_bufferSize :: Handle -> Int -> Int -> IO Int dgesvd_bufferSize :: Handle -> Int -> Int -> IO Int cgesvd_bufferSize :: Handle -> Int -> Int -> IO Int zgesvd_bufferSize :: Handle -> Int -> Int -> IO Int sgesvd :: Handle -> Char -> Char -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Int32 -> IO () dgesvd :: Handle -> Char -> Char -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Int32 -> IO () cgesvd :: Handle -> Char -> Char -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr Int32 -> IO () zgesvd :: Handle -> Char -> Char -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr Int32 -> IO () sorgbr_bufferSize :: Handle -> Side -> Int -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> IO Int dorgbr_bufferSize :: Handle -> Side -> Int -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> IO Int cungbr_bufferSize :: Handle -> Side -> Int -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> IO Int zungbr_bufferSize :: Handle -> Side -> Int -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> IO Int sorgbr :: Handle -> Side -> Int -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dorgbr :: Handle -> Side -> Int -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () cungbr :: Handle -> Side -> Int -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zungbr :: Handle -> Side -> Int -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () ssytrd_bufferSize :: Handle -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> DevicePtr Float -> IO Int dsytrd_bufferSize :: Handle -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> DevicePtr Double -> IO Int chetrd_bufferSize :: Handle -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> IO Int zhetrd_bufferSize :: Handle -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> IO Int ssytrd :: Handle -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dsytrd :: Handle -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () chetrd :: Handle -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zhetrd :: Handle -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () sormtr_bufferSize :: Handle -> Side -> Fill -> Operation -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> IO Int dormtr_bufferSize :: Handle -> Side -> Fill -> Operation -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> IO Int cunmtr_bufferSize :: Handle -> Side -> Fill -> Operation -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> IO Int zunmtr_bufferSize :: Handle -> Side -> Fill -> Operation -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> IO Int sormtr :: Handle -> Side -> Fill -> Operation -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dormtr :: Handle -> Side -> Fill -> Operation -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () cunmtr :: Handle -> Side -> Fill -> Operation -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zunmtr :: Handle -> Side -> Fill -> Operation -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () sorgtr_bufferSize :: Handle -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> IO Int dorgtr_bufferSize :: Handle -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> IO Int cungtr_bufferSize :: Handle -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> IO Int zungtr_bufferSize :: Handle -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> IO Int sorgtr :: Handle -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dorgtr :: Handle -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () cungtr :: Handle -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zungtr :: Handle -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () ssyevd_bufferSize :: Handle -> EigMode -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> IO Int dsyevd_bufferSize :: Handle -> EigMode -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> IO Int cheevd_bufferSize :: Handle -> EigMode -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> IO Int zheevd_bufferSize :: Handle -> EigMode -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> IO Int ssyevd :: Handle -> EigMode -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dsyevd :: Handle -> EigMode -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () cheevd :: Handle -> EigMode -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zheevd :: Handle -> EigMode -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () ssygvd_bufferSize :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> IO Int dsygvd_bufferSize :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> IO Int chegvd_bufferSize :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> IO Int zhegvd_bufferSize :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> IO Int ssygvd :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO () dsygvd :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO () chegvd :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO () zhegvd :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO () sgesvdj_bufferSize :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> Info_gesvdj -> IO Int dgesvdj_bufferSize :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> Info_gesvdj -> IO Int cgesvdj_bufferSize :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> Info_gesvdj -> IO Int zgesvdj_bufferSize :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> Info_gesvdj -> IO Int sgesvdj :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Int32 -> Info_gesvdj -> IO () dgesvdj :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Int32 -> Info_gesvdj -> IO () cgesvdj :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> Info_gesvdj -> IO () zgesvdj :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> Info_gesvdj -> IO () sgesvdjBatched_bufferSize :: Handle -> EigMode -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> Info_gesvdj -> Int -> IO Int dgesvdjBatched_bufferSize :: Handle -> EigMode -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> Info_gesvdj -> Int -> IO Int cgesvdjBatched_bufferSize :: Handle -> EigMode -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> Info_gesvdj -> Int -> IO Int zgesvdjBatched_bufferSize :: Handle -> EigMode -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> Info_gesvdj -> Int -> IO Int sgesvdjBatched :: Handle -> EigMode -> Int -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Int32 -> Info_gesvdj -> Int -> IO () dgesvdjBatched :: Handle -> EigMode -> Int -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Int32 -> Info_gesvdj -> Int -> IO () cgesvdjBatched :: Handle -> EigMode -> Int -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> Info_gesvdj -> Int -> IO () zgesvdjBatched :: Handle -> EigMode -> Int -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> Info_gesvdj -> Int -> IO () ssyevj_bufferSize :: Handle -> EigMode -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Info_syevj -> IO Int dsyevj_bufferSize :: Handle -> EigMode -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Info_syevj -> IO Int ssyevj :: Handle -> EigMode -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Int32 -> Info_syevj -> IO () dsyevj :: Handle -> EigMode -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Int32 -> Info_syevj -> IO () cheevj_bufferSize :: Handle -> EigMode -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Info_syevj -> IO Int zheevj_bufferSize :: Handle -> EigMode -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Info_syevj -> IO Int cheevj :: Handle -> EigMode -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> Info_syevj -> IO () zheevj :: Handle -> EigMode -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> Info_syevj -> IO () ssyevjBatched_bufferSize :: Handle -> EigMode -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Info_syevj -> Int -> IO Int dsyevjBatched_bufferSize :: Handle -> EigMode -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Info_syevj -> Int -> IO Int ssyevjBatched :: Handle -> EigMode -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Int32 -> Info_syevj -> Int -> IO () dsyevjBatched :: Handle -> EigMode -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Int32 -> Info_syevj -> Int -> IO () cheevjBatched_bufferSize :: Handle -> EigMode -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Info_syevj -> Int -> IO Int zheevjBatched_bufferSize :: Handle -> EigMode -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Info_syevj -> Int -> IO Int cheevjBatched :: Handle -> EigMode -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> Info_syevj -> Int -> IO () zheevjBatched :: Handle -> EigMode -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> Info_syevj -> Int -> IO () ssygvj_bufferSize :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Info_syevj -> IO Int dsygvj_bufferSize :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Info_syevj -> IO Int ssygvj :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Int32 -> Info_syevj -> IO () dsygvj :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Int32 -> Info_syevj -> IO () chegvj_bufferSize :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Info_syevj -> IO Int zhegvj_bufferSize :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Info_syevj -> IO Int chegvj :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> Info_syevj -> IO () zhegvj :: Handle -> EigType -> EigMode -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> Info_syevj -> IO () sgesvdaStridedBatched :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr Float -> Int -> Int64 -> DevicePtr Float -> Int64 -> DevicePtr Float -> Int -> Int64 -> DevicePtr Float -> Int -> Int64 -> DevicePtr Float -> Int -> DevicePtr Int32 -> Ptr Double -> Int -> IO () dgesvdaStridedBatched :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr Double -> Int -> Int64 -> DevicePtr Double -> Int64 -> DevicePtr Double -> Int -> Int64 -> DevicePtr Double -> Int -> Int64 -> DevicePtr Double -> Int -> DevicePtr Int32 -> Ptr Double -> Int -> IO () cgesvdaStridedBatched :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr (Complex Float) -> Int -> Int64 -> DevicePtr (Complex Float) -> Int64 -> DevicePtr (Complex Float) -> Int -> Int64 -> DevicePtr (Complex Float) -> Int -> Int64 -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> Ptr Double -> Int -> IO () zgesvdaStridedBatched :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr (Complex Double) -> Int -> Int64 -> DevicePtr (Complex Double) -> Int64 -> DevicePtr (Complex Double) -> Int -> Int64 -> DevicePtr (Complex Double) -> Int -> Int64 -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> Ptr Double -> Int -> IO () sgesvdaStridedBatched_bufferSize :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr Float -> Int -> Int64 -> DevicePtr Float -> Int64 -> DevicePtr Float -> Int -> Int64 -> DevicePtr Float -> Int -> Int64 -> Int -> IO Int dgesvdaStridedBatched_bufferSize :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr Double -> Int -> Int64 -> DevicePtr Double -> Int64 -> DevicePtr Double -> Int -> Int64 -> DevicePtr Double -> Int -> Int64 -> Int -> IO Int cgesvdaStridedBatched_bufferSize :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr (Complex Float) -> Int -> Int64 -> DevicePtr (Complex Float) -> Int64 -> DevicePtr (Complex Float) -> Int -> Int64 -> DevicePtr (Complex Float) -> Int -> Int64 -> Int -> IO Int zgesvdaStridedBatched_bufferSize :: Handle -> EigMode -> Int -> Int -> Int -> DevicePtr (Complex Double) -> Int -> Int64 -> DevicePtr (Complex Double) -> Int64 -> DevicePtr (Complex Double) -> Int -> Int64 -> DevicePtr (Complex Double) -> Int -> Int64 -> Int -> IO Int ssyevdx :: Handle -> EigMode -> EigRange -> Fill -> Int -> DevicePtr Float -> Int -> Float -> Float -> Int -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO Int dsyevdx :: Handle -> EigMode -> EigRange -> Fill -> Int -> DevicePtr Double -> Int -> Double -> Double -> Int -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO Int ssyevdx_bufferSize :: Handle -> EigMode -> EigRange -> Fill -> Int -> DevicePtr Float -> Int -> Float -> Float -> Int -> Int -> DevicePtr Float -> IO (Int, Int) dsyevdx_bufferSize :: Handle -> EigMode -> EigRange -> Fill -> Int -> DevicePtr Double -> Int -> Double -> Double -> Int -> Int -> DevicePtr Double -> IO (Int, Int) cheevdx :: Handle -> EigMode -> EigRange -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> Float -> Float -> Int -> Int -> DevicePtr Float -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO Int zheevdx :: Handle -> EigMode -> EigRange -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> Double -> Double -> Int -> Int -> DevicePtr Double -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO Int cheevdx_bufferSize :: Handle -> EigMode -> EigRange -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> Float -> Float -> Int -> Int -> DevicePtr Float -> IO (Int, Int) zheevdx_bufferSize :: Handle -> EigMode -> EigRange -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> Double -> Double -> Int -> Int -> DevicePtr Double -> IO (Int, Int) ssygvdx :: Handle -> EigType -> EigMode -> EigRange -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> Float -> Float -> Int -> Int -> DevicePtr Float -> DevicePtr Float -> Int -> DevicePtr Int32 -> IO Int dsygvdx :: Handle -> EigType -> EigMode -> EigRange -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> Double -> Double -> Int -> Int -> DevicePtr Double -> DevicePtr Double -> Int -> DevicePtr Int32 -> IO Int ssygvdx_bufferSize :: Handle -> EigType -> EigMode -> EigRange -> Fill -> Int -> DevicePtr Float -> Int -> DevicePtr Float -> Int -> Float -> Float -> Int -> Int -> DevicePtr Float -> IO (Int, Int) dsygvdx_bufferSize :: Handle -> EigType -> EigMode -> EigRange -> Fill -> Int -> DevicePtr Double -> Int -> DevicePtr Double -> Int -> Double -> Double -> Int -> Int -> DevicePtr Double -> IO (Int, Int) chegvdx :: Handle -> EigType -> EigMode -> EigRange -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> Float -> Float -> Int -> Int -> DevicePtr Float -> DevicePtr (Complex Float) -> Int -> DevicePtr Int32 -> IO Int zhegvdx :: Handle -> EigType -> EigMode -> EigRange -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> Double -> Double -> Int -> Int -> DevicePtr Double -> DevicePtr (Complex Double) -> Int -> DevicePtr Int32 -> IO Int chegvdx_bufferSize :: Handle -> EigType -> EigMode -> EigRange -> Fill -> Int -> DevicePtr (Complex Float) -> Int -> DevicePtr (Complex Float) -> Int -> Float -> Float -> Int -> Int -> DevicePtr Float -> IO (Int, Int) zhegvdx_bufferSize :: Handle -> EigType -> EigMode -> EigRange -> Fill -> Int -> DevicePtr (Complex Double) -> Int -> DevicePtr (Complex Double) -> Int -> Double -> Double -> Int -> Int -> DevicePtr Double -> IO (Int, Int) -- | The cuSolver library provides useful LAPACK-like features implemented -- on NVIDIA GPUs. This module implements a subset of LAPACK functions on -- dense matrices. -- -- To use operations from the cuSolver library, the user must allocate -- the required vectors and matrices in the GPU memory space, fill them -- with data, call the desired sequence of cuSolver functions, then copy -- the results from the GPU memory space back to the host. -- -- The cuda package can be used for writing to and retrieving data -- from the GPU. -- -- -- -- TODO -- -- -- -- For more information, see the NVIDIA cuSolver documentation: -- -- http://docs.nvidia.com/cuda/cusolver/index.html module Foreign.CUDA.Solver.Dense -- | An opaque handle to the cuSolverDN context, which is passed to all -- library function calls. -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuSolverDNhandle newtype Handle Handle :: Ptr () -> Handle -- | This function initializes the cuSolverDN library and creates a handle -- to the cuSolverDN context. It must be called before any other -- cuSolverDN API function is invoked. It allocates hardware resources -- necessary for accessing the GPU. -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuSolverDNcreate create :: IO Handle -- | This function releases resources used by the cuSolverDN library. -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuSolverDNdestroy destroy :: Handle -> IO () module Foreign.CUDA.Solver.Sparse.Analysis newtype Info_csrqr Info_csrqr :: Ptr () -> Info_csrqr [useInfo_csrqr] :: Info_csrqr -> Ptr () createInfo_csrqr :: IO Info_csrqr destroyInfo_csrqr :: Info_csrqr -> IO () newtype Info_csrchol Info_csrchol :: Ptr () -> Info_csrchol [useInfo_csrchol] :: Info_csrchol -> Ptr () createInfo_csrchol :: IO Info_csrchol destroyInfo_csrchol :: Info_csrchol -> IO () module Foreign.CUDA.Solver.Sparse.Context -- | An opaque handle to the cuSolverSP context, which is passed to all -- library function calls. -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuSolverSPhandle newtype Handle Handle :: Ptr () -> Handle [useHandle] :: Handle -> Ptr () -- | This function initializes the cuSolverSP library and creates a handle -- to the cuSolverSP context. It must be called before any other -- cuSolverSP API function is invoked. It allocates hardware resources -- necessary for accessing the GPU. -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cusolverecreate create :: IO Handle -- | This function releases resources used by the cuSolverSP library. -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cusparsedestroy destroy :: Handle -> IO () -- | For more information see the cuSolver function reference: -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cusolver-high-level-function-reference module Foreign.CUDA.Solver.Sparse.High -- | An opaque handle to the cuSolverSP context, which is passed to all -- library function calls. -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuSolverSPhandle data Handle -- | An opaque type used to describe the shape and properties of a matrix. -- -- -- http://docs.nvidia.com/cuda/cusparse/index.html#cusparsematdescrt data MatrixDescriptor scsrlsvqr :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr Float -> DevicePtr Int32 -> DevicePtr Int32 -> DevicePtr Float -> Float -> Int -> DevicePtr Float -> IO Int dcsrlsvqr :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr Double -> DevicePtr Int32 -> DevicePtr Int32 -> DevicePtr Double -> Double -> Int -> DevicePtr Double -> IO Int ccsrlsvqr :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Float) -> DevicePtr Int32 -> DevicePtr Int32 -> DevicePtr (Complex Float) -> Float -> Int -> DevicePtr (Complex Float) -> IO Int zcsrlsvqr :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Double) -> DevicePtr Int32 -> DevicePtr Int32 -> DevicePtr (Complex Double) -> Double -> Int -> DevicePtr (Complex Double) -> IO Int scsrlsvchol :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr Float -> DevicePtr Int32 -> DevicePtr Int32 -> DevicePtr Float -> Float -> Int -> DevicePtr Float -> IO Int dcsrlsvchol :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr Double -> DevicePtr Int32 -> DevicePtr Int32 -> DevicePtr Double -> Double -> Int -> DevicePtr Double -> IO Int ccsrlsvchol :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Float) -> DevicePtr Int32 -> DevicePtr Int32 -> DevicePtr (Complex Float) -> Float -> Int -> DevicePtr (Complex Float) -> IO Int zcsrlsvchol :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Double) -> DevicePtr Int32 -> DevicePtr Int32 -> DevicePtr (Complex Double) -> Double -> Int -> DevicePtr (Complex Double) -> IO Int scsreigvsi :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr Float -> DevicePtr Int32 -> DevicePtr Int32 -> Float -> DevicePtr Float -> Int -> Float -> DevicePtr Float -> DevicePtr Float -> IO () dcsreigvsi :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr Double -> DevicePtr Int32 -> DevicePtr Int32 -> Double -> DevicePtr Double -> Int -> Double -> DevicePtr Double -> DevicePtr Double -> IO () ccsreigvsi :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Float) -> DevicePtr Int32 -> DevicePtr Int32 -> Complex Float -> DevicePtr (Complex Float) -> Int -> Float -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> IO () zcsreigvsi :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Double) -> DevicePtr Int32 -> DevicePtr Int32 -> Complex Double -> DevicePtr (Complex Double) -> Int -> Double -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> IO () -- | For more information see the cuSolver function reference: -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cusolver-low-level-function-reference module Foreign.CUDA.Solver.Sparse.Low -- | An opaque handle to the cuSolverSP context, which is passed to all -- library function calls. -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuSolverSPhandle data Handle -- | An opaque type used to describe the shape and properties of a matrix. -- -- -- http://docs.nvidia.com/cuda/cusparse/index.html#cusparsematdescrt data MatrixDescriptor data Info_csrqr data Info_csrchol xcsrqrAnalysisBatched :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrqr -> IO () scsrqrBufferInfoBatched :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr Float -> DevicePtr Int32 -> DevicePtr Int32 -> Int -> Info_csrqr -> IO (Int, Int) dcsrqrBufferInfoBatched :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr Double -> DevicePtr Int32 -> DevicePtr Int32 -> Int -> Info_csrqr -> IO (Int, Int) ccsrqrBufferInfoBatched :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Float) -> DevicePtr Int32 -> DevicePtr Int32 -> Int -> Info_csrqr -> IO (Int, Int) zcsrqrBufferInfoBatched :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Double) -> DevicePtr Int32 -> DevicePtr Int32 -> Int -> Info_csrqr -> IO (Int, Int) scsrqrsvBatched :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr Float -> DevicePtr Int32 -> DevicePtr Int32 -> DevicePtr Float -> DevicePtr Float -> Int -> Info_csrqr -> DevicePtr () -> IO () dcsrqrsvBatched :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr Double -> DevicePtr Int32 -> DevicePtr Int32 -> DevicePtr Double -> DevicePtr Double -> Int -> Info_csrqr -> DevicePtr () -> IO () ccsrqrsvBatched :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Float) -> DevicePtr Int32 -> DevicePtr Int32 -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Int -> Info_csrqr -> DevicePtr () -> IO () zcsrqrsvBatched :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Double) -> DevicePtr Int32 -> DevicePtr Int32 -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Int -> Info_csrqr -> DevicePtr () -> IO () xcsrqrAnalysis :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrqr -> IO () scsrqrBufferInfo :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr Float -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrqr -> IO (Int, Int) dcsrqrBufferInfo :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr Double -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrqr -> IO (Int, Int) ccsrqrBufferInfo :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Float) -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrqr -> IO (Int, Int) zcsrqrBufferInfo :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Double) -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrqr -> IO (Int, Int) scsrqrSetup :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr Float -> DevicePtr Int32 -> DevicePtr Int32 -> Float -> Info_csrqr -> IO () dcsrqrSetup :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr Double -> DevicePtr Int32 -> DevicePtr Int32 -> Double -> Info_csrqr -> IO () ccsrqrSetup :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Float) -> DevicePtr Int32 -> DevicePtr Int32 -> Complex Float -> Info_csrqr -> IO () zcsrqrSetup :: Handle -> Int -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Double) -> DevicePtr Int32 -> DevicePtr Int32 -> Complex Double -> Info_csrqr -> IO () scsrqrFactor :: Handle -> Int -> Int -> Int -> DevicePtr Float -> DevicePtr Float -> Info_csrqr -> DevicePtr () -> IO () dcsrqrFactor :: Handle -> Int -> Int -> Int -> DevicePtr Double -> DevicePtr Double -> Info_csrqr -> DevicePtr () -> IO () ccsrqrFactor :: Handle -> Int -> Int -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Info_csrqr -> DevicePtr () -> IO () zcsrqrFactor :: Handle -> Int -> Int -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Info_csrqr -> DevicePtr () -> IO () scsrqrZeroPivot :: Handle -> Info_csrqr -> Float -> IO Int dcsrqrZeroPivot :: Handle -> Info_csrqr -> Double -> IO Int ccsrqrZeroPivot :: Handle -> Info_csrqr -> Float -> IO Int zcsrqrZeroPivot :: Handle -> Info_csrqr -> Double -> IO Int scsrqrSolve :: Handle -> Int -> Int -> DevicePtr Float -> DevicePtr Float -> Info_csrqr -> DevicePtr () -> IO () dcsrqrSolve :: Handle -> Int -> Int -> DevicePtr Double -> DevicePtr Double -> Info_csrqr -> DevicePtr () -> IO () ccsrqrSolve :: Handle -> Int -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Info_csrqr -> DevicePtr () -> IO () zcsrqrSolve :: Handle -> Int -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Info_csrqr -> DevicePtr () -> IO () xcsrcholAnalysis :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrchol -> IO () scsrcholBufferInfo :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr Float -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrchol -> IO (Int, Int) dcsrcholBufferInfo :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr Double -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrchol -> IO (Int, Int) ccsrcholBufferInfo :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Float) -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrchol -> IO (Int, Int) zcsrcholBufferInfo :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Double) -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrchol -> IO (Int, Int) scsrcholFactor :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr Float -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrchol -> DevicePtr () -> IO () dcsrcholFactor :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr Double -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrchol -> DevicePtr () -> IO () ccsrcholFactor :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Float) -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrchol -> DevicePtr () -> IO () zcsrcholFactor :: Handle -> Int -> Int -> MatrixDescriptor -> DevicePtr (Complex Double) -> DevicePtr Int32 -> DevicePtr Int32 -> Info_csrchol -> DevicePtr () -> IO () scsrcholZeroPivot :: Handle -> Info_csrchol -> Float -> IO Int dcsrcholZeroPivot :: Handle -> Info_csrchol -> Double -> IO Int ccsrcholZeroPivot :: Handle -> Info_csrchol -> Float -> IO Int zcsrcholZeroPivot :: Handle -> Info_csrchol -> Double -> IO Int scsrcholSolve :: Handle -> Int -> DevicePtr Float -> DevicePtr Float -> Info_csrchol -> DevicePtr () -> IO () dcsrcholSolve :: Handle -> Int -> DevicePtr Double -> DevicePtr Double -> Info_csrchol -> DevicePtr () -> IO () ccsrcholSolve :: Handle -> Int -> DevicePtr (Complex Float) -> DevicePtr (Complex Float) -> Info_csrchol -> DevicePtr () -> IO () zcsrcholSolve :: Handle -> Int -> DevicePtr (Complex Double) -> DevicePtr (Complex Double) -> Info_csrchol -> DevicePtr () -> IO () module Foreign.CUDA.Solver.Sparse.Stream -- | Sets the execution stream which all subsequent cuSolverSp library -- functions will execute with. If not set, functions execute in the -- default stream (which never overlaps any other operations). -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cusparsesetstream setStream :: Handle -> Stream -> IO () -- | The cuSolver library provides useful LAPACK-like features implemented -- on NVIDIA GPUs. This module implements a subset of LAPACK functions on -- sparse matrices in CSR or CSC format. -- -- To use operations from the cuSolver library, the user must allocate -- the required vectors and matrices in the GPU memory space, fill them -- with data, call the desired sequence of cuSolver functions, then copy -- the results from the GPU memory space back to the host. -- -- The cuda package can be used for writing to and retrieving data -- from the GPU. -- -- -- -- TODO -- -- -- -- For more information, see the NVIDIA cuSolver documentation: -- -- http://docs.nvidia.com/cuda/cusolver/index.html module Foreign.CUDA.Solver.Sparse -- | An opaque handle to the cuSolverSP context, which is passed to all -- library function calls. -- -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cuSolverSPhandle newtype Handle Handle :: Ptr () -> Handle -- | This function initializes the cuSolverSP library and creates a handle -- to the cuSolverSP context. It must be called before any other -- cuSolverSP API function is invoked. It allocates hardware resources -- necessary for accessing the GPU. -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cusolverecreate create :: IO Handle -- | This function releases resources used by the cuSolverSP library. -- -- http://docs.nvidia.com/cuda/cusolver/index.html#cusparsedestroy destroy :: Handle -> IO ()