oneAPI extension
Loaded with using oneAPI. It accepts the sparse matrices of oneMKL, routes the level-3 BLAS operations of large fronts (gemm, syrk/herk, trsm and their strided batches) to oneMKL, and lets the regime-A subtree kernels use the 64 KiB local-memory class on Intel GPUs. Every oneMKL call waits for its queue and the LAPACK routines allocate a scratchpad, so the Cholesky and LU panel factorizations stay on the KernelAbstractions kernels; oneMKL's potrf and getrf are reached only through an explicit impl = :vendor of the internal dense interface, which is not a solver parameter. oneMKL's GPU potrf reports the failing column relative to its 32-column panel; the extension reads the column from the factor's diagonal instead, so potrf!, potrf_info! and the solver's info are exact.
SparseDirectSolver.CSR — Method
CSR(A::oneSparseMatrixCSC)Wrap A (m × n) without copying as the CSR of transpose(A) (n × m, transposed = true), sharing colPtr, rowVal and nzVal.
SparseDirectSolver.CSR — Method
CSR(A::oneSparseMatrixCSR)Wrap A without copying: the CSR shares rowPtr, colVal and nzVal (one-based, transposed = false).
SparseDirectSolver.DirectSolver — Method
DirectSolver(A::oneSparseMatrixCSR, structure::String, view::Char; index = 'O')
DirectSolver(A::oneSparseMatrixCSC, structure::String, view::Char; index = 'O')Solver on A's arrays, without copies (the oneAPI twin of DirectSolver(::CuSparseMatrixCSR, …)). A oneSparseMatrixCSC is read as the CSR of its transpose with the view flipped, see DirectSolver.
oneAPI.oneMKL.oneSparseMatrixCSR — Method
oneSparseMatrixCSR(A::CSR)The stored CSR matrix of A (the transposed flag is not applied) as a oneSparseMatrixCSR. One-based arrays are shared; zero-based index arrays are copied and rebased. Batches (nbatch(A) > 1) are rejected.
LinearAlgebra.cholesky — Function
cholesky(A::oneSparseMatrixCSR, NoPivot(); view = 'F', check = false) -> DirectSolver
cholesky(Symmetric(A::oneSparseMatrixCSR)) / cholesky(Hermitian(A::oneSparseMatrixCSR))LLᵀ/LLᴴ factorization of A on the Intel GPU; the wrappers pass their uplo as the view. See cholesky(::CSR).
LinearAlgebra.ldlt — Method
ldlt(A::oneSparseMatrixCSR; view = 'F', check = false) -> DirectSolver
ldlt(Symmetric(A::oneSparseMatrixCSR)) / ldlt(Hermitian(A::oneSparseMatrixCSR))LDLᵀ/LDLᴴ factorization of A on the Intel GPU; the wrappers pass their uplo as the view. See ldlt(::CSR).
LinearAlgebra.lu — Method
lu(A::oneSparseMatrixCSR; check = false) -> DirectSolverL D U factorization (structure "G") of A on the Intel GPU. See lu(::CSR).
SparseDirectSolver.max_local_bytes — Method
max_local_bytes(::oneAPIBackend) -> IntThe shared local memory of one workgroup on the current oneAPI device (maxSharedLocalMemory of its compute properties; 128 KiB on the Intel Data Center GPU Max): the regime-A kernels may use their largest class, 64 KiB.
SparseDirectSolver.to_backend — Method
to_backend(A::SparseMatrixCSC, ::oneAPIBackend; index = 'O') -> CSRCSR arrays of A built on the host, then uploaded as oneVectors. Float64 and ComplexF64 raise NotSupportedError on a device without Float64 support.
SparseDirectSolver.update! — Method
update!(solver::DirectSolver, A::oneSparseMatrixCSR)
update!(solver::DirectSolver, A::oneSparseMatrixCSC)Point solver at the arrays of A, see update!.