Our ECP demonstration project involved a multiperiod security-constrained optimal power flow simulation modelled entire in Julia. We used pure Julia numerical solvers that leveraged Julia's flexibilty to run on GPU architectures and ECP systems. This included Summit at OLCF, Frontier, and Aurora. To implement our methods, we heavily relied on the Julia packages KernelAbstractions.jl, CUDA.jl, AMDGPU.jl, and oneAPI.jl.
The entire code base of our ECP demonstration Milepost7 can be found at Milepost7.jl.
Our adventure was recently published in SIAG/OPT Views and News.
- Overcome sparse algebra limitations on GPUs for unstructured optimization problems.
- Fast and higher-order derivatives on GPUs and other architectures.
An ADMM-like proximal Augmented Lagrangian solver for tackling large-scale block-structured nonconvex optimization problems in a distributed manner. The latter includes security-constrained as well as multi-period AC optimal power flow problems.
ExaTron.jl implements a trust-region Newton solver for batched nonlinear programming on GPUs. Problems in the batch are solved in parallel by employing multiple thread blocks on GPUs. Our basic algorithm to solve each problem on GPUs is an extension of the algorithm by Lin and More and its code TRON.
This package also provides the implementation of adaptive ADMM for distributed ACOPF
introduced by Mhanna et al.
(2019), running fully on GPUs
without data transfer to the CPU, where ExaTron.jl
is used to solve many small
nonlinear nonconvex problems, each of which represents a branch subproblem of
the ADMM. So far, it relies on ExaTron.jl as a bound-constrained QP solver.
Argos.jl extends ExaPF.jl by implementing the optimization routines required to solve the optimal power flow (OPF) problems.
A power flow solver running the Newton steps entirely on the GPU. This includes the evaluation of the Jacobian using automatic differentiation, the optimization solver (Newton), the preconditioner (Block-Jacobi), and the linear solver (BICGSTAB).
ExaData is a collection of power grid network data we use in our project. It contains a script to create a Julia artifact such that our codes can use this data transparently.
MadNLP is a nonlinear programming (NLP) solver, purely implemented in Julia. MadNLP implements a filter line-search algorithm, as that used in Ipopt. MadNLP was initially developed at University of Madison.
PIPS is a suite of parallel optimization solvers mainly for stochastic optimization problems written in C++. Our most used solver is PIPS-NLP which implements the interior-point method similar to Ipopt. It uses sparse algebra kernels and the Schur complement to decompose the optimization problems. It is one of our solvers for security-constrained optimal powerflow.