Skip to content

Use block_gmres for batched linear solves #129

Description

@thorek1

The latest Krylov.jl version has a block-gmres version which I think can simplify/speed-up some parts of the code.

Activity

  1. changed the title [-]Consider block-gmres[/-] [+]block-gmres[/+] on Dec 8, 2023
  2. gdalle commented on Dec 12, 2023

    @gdalle
    Member

    Thanks for the idea. I don't have much time to work on this at the moment though

  3. mohdibntarek commented on Dec 12, 2023

    @mohdibntarek
    Collaborator

    how can block-gmres help ID.jl?

  4. thorek1 commented on Dec 12, 2023

    @thorek1
    ContributorAuthor

    for example here:

        dy = ntuple(Val(N)) do k
            dₖx = partials.(x_and_dx, k)
            dₖx_vec = vec(dₖx)
            dₖc_vec = similar(y_vec)
            mul!(dₖc_vec, B_vec, dₖx_vec)
            dₖy_vec = solve(implicit.linear_solver, A_vec_presolved, -dₖc_vec)
            reshape(dₖy_vec, size(y))
        end
    
        y_and_dy = map(eachindex(IndexCartesian(), y)) do i
            Dual{T}(y[i], Partials(ntuple(k -> dy[k][i], Val(N))))
        end

    instead of solving with gmres for each slice you could use block-gmres once. I didn't check the block-gmres implementation but I think it is worth testing whether this speeds up computation and this might also allow to solve #118

  5. gdalle commented on Apr 10, 2024

    @gdalle
    Member

    This is implemented in #135 but it still requires JuliaSmoothOptimizers/Krylov.jl#854 to be fixed

  6. changed the title [-]block-gmres[/-] [+]Use `block_gmres` for batched linear solves[/+] on Apr 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    performanceImprove performance or stability

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions