From 10758e807972d539515784bb9ce9e5f4426aec18 Mon Sep 17 00:00:00 2001 From: Chris Rackauckas Date: Sun, 18 Jun 2023 10:18:53 -0400 Subject: [PATCH 1/2] Improve a few docstrings --- src/factorization.jl | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/factorization.jl b/src/factorization.jl index 1fc7ef6a2..e6feb6121 100644 --- a/src/factorization.jl +++ b/src/factorization.jl @@ -30,13 +30,13 @@ end Julia's built in `lu`. Equivalent to calling `lu!(A)` - * On dense matrices, this uses the current BLAS implementation of the user's computer, - which by default is OpenBLAS but will use MKL if the user does `using MKL` in their - system. - * On sparse matrices, this will use UMFPACK from SuiteSparse. Note that this will not - cache the symbolic factorization. - * On CuMatrix, it will use a CUDA-accelerated LU from CuSolver. - * On BandedMatrix and BlockBandedMatrix, it will use a banded LU. +* On dense matrices, this uses the current BLAS implementation of the user's computer, +which by default is OpenBLAS but will use MKL if the user does `using MKL` in their +system. +* On sparse matrices, this will use UMFPACK from SuiteSparse. Note that this will not +cache the symbolic factorization. +* On CuMatrix, it will use a CUDA-accelerated LU from CuSolver. +* On BandedMatrix and BlockBandedMatrix, it will use a banded LU. ## Positional Arguments @@ -136,12 +136,12 @@ end Julia's built in `qr`. Equivalent to calling `qr!(A)`. - * On dense matrices, this uses the current BLAS implementation of the user's computer - which by default is OpenBLAS but will use MKL if the user does `using MKL` in their - system. - * On sparse matrices, this will use SPQR from SuiteSparse - * On CuMatrix, it will use a CUDA-accelerated QR from CuSolver. - * On BandedMatrix and BlockBandedMatrix, it will use a banded QR. +* On dense matrices, this uses the current BLAS implementation of the user's computer +which by default is OpenBLAS but will use MKL if the user does `using MKL` in their +system. +* On sparse matrices, this will use SPQR from SuiteSparse +* On CuMatrix, it will use a CUDA-accelerated QR from CuSolver. +* On BandedMatrix and BlockBandedMatrix, it will use a banded QR. """ struct QRFactorization{P} <: AbstractFactorization pivot::P @@ -324,9 +324,9 @@ end Julia's built in `svd`. Equivalent to `svd!(A)`. - * On dense matrices, this uses the current BLAS implementation of the user's computer - which by default is OpenBLAS but will use MKL if the user does `using MKL` in their - system. +* On dense matrices, this uses the current BLAS implementation of the user's computer +which by default is OpenBLAS but will use MKL if the user does `using MKL` in their +system. """ struct SVDFactorization{A} <: AbstractFactorization full::Bool From 9c85e96694fcc6779c98eb6d6476b3d8fb28f6bc Mon Sep 17 00:00:00 2001 From: Chris Rackauckas Date: Sun, 18 Jun 2023 10:19:28 -0400 Subject: [PATCH 2/2] don't forget pardiso --- src/extension_algs.jl | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/extension_algs.jl b/src/extension_algs.jl index 43d5a25b8..2bdb9d2da 100644 --- a/src/extension_algs.jl +++ b/src/extension_algs.jl @@ -180,6 +180,28 @@ MKLPardisoIterate(; kwargs...) = PardisoJL(; solver_type = 1, kwargs...) end end else + """ + ```julia + PardisoJL(; nprocs::Union{Int, Nothing} = nothing, + solver_type = nothing, + matrix_type = nothing, + iparm::Union{Vector{Tuple{Int, Int}}, Nothing} = nothing, + dparm::Union{Vector{Tuple{Int, Int}}, Nothing} = nothing) + ``` + + A generic method using MKL Pardiso. Specifying `solver_type` is required. + + !!! note + + Using this solver requires adding the package Pardiso.jl, i.e. `using Pardiso` + + ## Keyword Arguments + + For the definition of the keyword arguments, see the Pardiso.jl documentation. + All values default to `nothing` and the solver internally determines the values + given the input types, and these keyword arguments are only for overriding the + default handling process. This should not be required by most users. + """ Base.@kwdef struct PardisoJL <: LinearSolve.SciMLLinearSolveAlgorithm nprocs::Union{Int, Nothing} = nothing solver_type::Any = nothing