Skip to content

An efficient backend for InfiniteOpt that accelerates NLPs on CPU and GPU.

Notifications You must be signed in to change notification settings

infiniteopt/InfiniteExaModels.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

InfiniteExaModels.jl

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.

Abstract

Installation

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")

Usage

InfiniteExaModels primarily provides ExaTranscriptionBackend which can be passed to an InfiniteModel along with a solver that is compliant with JuliaSmoothOptimizers standards.

CPU Usage

Typical CPU workflows will use Ipopt:

using InfiniteOpt, InfiniteExaModels, NLPModelsIpopt

model = InfiniteModel(ExaTranscriptionBackend(IpoptSolver))

GPU Usage

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()))

Citation

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}
}

About

An efficient backend for InfiniteOpt that accelerates NLPs on CPU and GPU.

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages