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.

source
SparseDirectSolver.CSR — Method
CSR(A::oneSparseMatrixCSR)

Wrap A without copying: the CSR shares rowPtr, colVal and nzVal (one-based, transposed = false).

source
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.

source
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.

source
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).

source
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).

source
LinearAlgebra.lu — Method
lu(A::oneSparseMatrixCSR; check = false) -> DirectSolver

L D U factorization (structure "G") of A on the Intel GPU. See lu(::CSR).

source
SparseDirectSolver.max_local_bytes — Method
max_local_bytes(::oneAPIBackend) -> Int

The 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.

source
SparseDirectSolver.to_backend — Method
to_backend(A::SparseMatrixCSC, ::oneAPIBackend; index = 'O') -> CSR

CSR arrays of A built on the host, then uploaded as oneVectors. Float64 and ComplexF64 raise NotSupportedError on a device without Float64 support.

source