Skip to content

Allocations in ADMM #107

@JakobAsslaender

Description

@JakobAsslaender

The calculations of all convergenance criteria are allocating:

state.rᵏ[i] = norm(solver.regTrafo[i] * state.x - state.z[i]) # primal residual (x-z)
state.sᵏ[i] = norm(state.ρ[i] * adjoint(solver.regTrafo[i]) * (state.z[i] .- state.zᵒˡᵈ[i])) # dual residual (concerning f(x))
state.ɛᵖʳⁱ[i] = max(norm(solver.regTrafo[i] * state.x), norm(state.z[i]))
state.ɛᵈᵘᵃ[i] = norm(state.ρ[i] * adjoint(solver.regTrafo[i]) * state.u[i])
Δᵒˡᵈ = state.Δ[i]
state.Δ[i] = norm(state.x .- state.xᵒˡᵈ ) +
norm(state.z[i] .- state.zᵒˡᵈ[i]) +
norm(state.u[i] .- state.uᵒˡᵈ[i])

I have noticed that ADMM reconstructions tend to have a memory usage that grows with the iterations, and I presume it is due to these lines I tested it in one example case, and commenting out these lines fixes the issue. Of course, this prevents adaptive rho and convergance tracking. Any idea how to fix this @nHackel?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions