This package provides a transformation backend for InfiniteOpt
such that InfiniteOpt models are efficiently transformed into ExaModels
via automated direct transcription. The underlying ExaModels models leverage recurrent algebraic structure to
facilitate accelerated solution on CPUs and GPUs. Moreover, InfiniteOpt provides an intuitive interface that
automates transcription and drastically reduced model creation time relative to solving JuMP models via
ExaModels' Optimizer
interface.
InfiniteExaModels is nearly ready for official release, but still needs some polishing touches first. In the meantime,
you can try it out by installing the developmental versions of InfiniteExaModels and InfiniteOpt
(Julia v1.9
or newer is required):
using Pkg
Pkg.add(url = "https://github.com/infiniteopt/InfiniteExaModels.jl", rev = "main")
Pkg.add(url = "https://github.com/infiniteopt/InfiniteOpt.jl", rev = "master")
InfiniteExaModels primarily provides ExaTranscriptionBackend
which can be passed to an InfiniteModel
along
with a solver that is compliant with JuliaSmoothOptimizers standards.
Typical CPU workflows will use Ipopt:
using InfiniteOpt, InfiniteExaModels, NLPModelsIpopt
model = InfiniteModel(ExaTranscriptionBackend(IpoptSolver))
Typical GPU workflows will use MadNLP, CUDA, and CUDss (a compatible Nvidia GPU is required):
using InfiniteOpt, InfiniteExaModels, MadNLP, CUDA # be sure to install CUDSS first as well
model = InfiniteModel(ExaTranscriptionBackend(MadNLPSolver, backend = CUDABackend()))
If this is useful for your work please consider citing it:
@incollection{pulsipher2024scalable,
title={Scalable Modeling of Infinite-Dimensional Nonlinear Programs with InfiniteExaModels.jl},
author={Pulsipher, Joshua L and Shin, Sungho},
booktitle={Computer Aided Chemical Engineering},
volume={53},
pages={3373--3378},
year={2024},
publisher={Elsevier}
}