AMDGPU extension

Loaded with using AMDGPU. It accepts the sparse matrices of rocSPARSE, routes the dense operations of large fronts to rocBLAS and rocSOLVER, and lets the regime-A subtree kernels use the 64 KiB of local memory (LDS) per workgroup of AMD GPUs.

AMDGPU.rocSPARSE.ROCSparseMatrixCSR — Method
ROCSparseMatrixCSR(A::CSR)

The stored CSR matrix of A (the transposed flag is not applied) as a ROCSparseMatrixCSR. One-based arrays are shared; zero-based index arrays are copied and rebased. Batches (nbatch(A) > 1) are rejected.

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

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::ROCSparseMatrixCSR)

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

source
SparseDirectSolver.DirectSolver — Method
DirectSolver(A::ROCSparseMatrixCSR, structure::String, view::Char; index = 'O')
DirectSolver(A::ROCSparseMatrixCSC, structure::String, view::Char; index = 'O')

Solver on A's arrays, without copies (the ROCm twin of DirectSolver(::CuSparseMatrixCSR, …)). A ROCSparseMatrixCSC is read as the CSR of its transpose with the view flipped, see DirectSolver.

source
LinearAlgebra.cholesky — Function
cholesky(A::ROCSparseMatrixCSR, NoPivot(); view = 'F', check = false) -> DirectSolver
cholesky(Symmetric(A::ROCSparseMatrixCSR)) / cholesky(Hermitian(A::ROCSparseMatrixCSR))

LLᵀ/LLᴴ factorization of A on the AMD GPU; the wrappers pass their uplo as the view. See cholesky(::CSR).

source
LinearAlgebra.ldlt — Method
ldlt(A::ROCSparseMatrixCSR; view = 'F', check = false) -> DirectSolver
ldlt(Symmetric(A::ROCSparseMatrixCSR)) / ldlt(Hermitian(A::ROCSparseMatrixCSR))

LDLᵀ/LDLᴴ factorization of A on the AMD GPU; the wrappers pass their uplo as the view. See ldlt(::CSR).

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

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

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

The local data share (LDS) of one workgroup on the current HIP device (hipDeviceAttributeMaxSharedMemoryPerBlock, 64 KiB on CDNA): the regime-A kernels may use the 64 KiB class there (issue #60).

source