ExaModels
An algebraic modeling and automatic differentiation tool in Julia Language, specialized for SIMD abstraction of nonlinear programs.
Science Score: 54.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: arxiv.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.1%) to scientific vocabulary
Keywords
Repository
An algebraic modeling and automatic differentiation tool in Julia Language, specialized for SIMD abstraction of nonlinear programs.
Basic Info
Statistics
- Stars: 62
- Watchers: 3
- Forks: 8
- Open Issues: 6
- Releases: 10
Topics
Metadata Files
README.md
An algebraic modeling and automatic differentiation tool in Julia Language, specialized for SIMD abstraction of nonlinear programs.
| License | Documentation | Build Status | Coverage | Citation |
|:-----------------:|:----------------:|:----------------:|:----------------:|:----------------:|
| |
|
|
|
|
Overview
ExaModels.jl employs what we call SIMD abstraction for nonlinear programs (NLPs), which allows for the preservation of the parallelizable structure within the model equations, facilitating efficient, parallel reverse-mode automatic differentiation on the GPU accelerators.
ExaModels.jl is different from other algebraic modeling tools, such as JuMP or AMPL, in the following ways: - Modeling Interface: ExaModels.jl requires users to specify model equations within a restricted environment, ensuring that the model equations are always executable in a SIMD fashion. This structured approach enables ExaModels.jl to maintain the SIMD-compatible format of the model equations, facilitating parallel evaluations of both the model functions and their derivatives. This unique feature distinguishes ExaModels.jl from other algebraic modeling tools. - Performance: ExaModels.jl compiles (via Julia's compiler) derivative evaluation codes tailored to each computation pattern. Through reverse-mode automatic differentiation using these tailored codes, ExaModels.jl achieves significantly faster derivative evaluation speeds, even when using CPU. - Portability: ExaModels.jl goes beyond traditional boundaries of algebraic modeling systems by enabling derivative evaluation on GPU accelerators. Implementation of GPU kernels is accomplished using the portable programming paradigm offered by KernelAbstractions.jl. With ExaModels.jl, you can run your code on various devices, including multi-threaded CPUs, NVIDIA GPUs, AMD GPUs, and Intel GPUs. Note that Apple's Metal is currently not supported due to its lack of support for double-precision arithmetic.
Highlight
The performance comparison of ExaModels with other algebraic modeling systems for evaluating different NLP functions (obj, con, grad, jac, and hess) are shown below. Note that Hessian computations are the typical bottlenecks.
Supporting ExaModels.jl
- Please report issues and feature requests via the GitHub issue tracker.
- Questions are welcome at GitHub discussion forum.
Owner
- Name: Exanauts
- Login: exanauts
- Kind: organization
- Website: https://exanauts.github.io/
- Repositories: 19
- Profile: https://github.com/exanauts
An eclectic collection of ECP ExaSGD project codes
Citation (CITATION.bib)
@article{shin2024accelerating,
title={Accelerating optimal power flow with {GPU}s: {SIMD} abstraction of nonlinear programs and condensed-space interior-point methods},
author={Shin, Sungho and Anitescu, Mihai and Pacaud, Fran{\c{c}}ois},
journal={Electric Power Systems Research},
volume={236},
pages={110651},
year={2024},
publisher={Elsevier}
}
GitHub Events
Total
- Create event: 38
- Commit comment event: 16
- Release event: 6
- Issues event: 26
- Watch event: 12
- Delete event: 12
- Issue comment event: 65
- Push event: 222
- Pull request review comment event: 53
- Pull request review event: 51
- Pull request event: 80
- Fork event: 3
Last Year
- Create event: 38
- Commit comment event: 16
- Release event: 6
- Issues event: 26
- Watch event: 12
- Delete event: 12
- Issue comment event: 65
- Push event: 222
- Pull request review comment event: 53
- Pull request review event: 51
- Pull request event: 80
- Fork event: 3
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 27
- Total pull requests: 127
- Average time to close issues: 4 months
- Average time to close pull requests: 9 days
- Total issue authors: 15
- Total pull request authors: 8
- Average comments per issue: 2.33
- Average comments per pull request: 0.41
- Merged pull requests: 102
- Bot issues: 1
- Bot pull requests: 33
Past Year
- Issues: 11
- Pull requests: 43
- Average time to close issues: 15 days
- Average time to close pull requests: 7 days
- Issue authors: 10
- Pull request authors: 6
- Average comments per issue: 1.55
- Average comments per pull request: 0.44
- Merged pull requests: 23
- Bot issues: 1
- Bot pull requests: 17
Top Authors
Issue Authors
- sshin23 (6)
- amontoison (4)
- mlubin (3)
- jbcaillau (2)
- KSepetanc (2)
- frapac (2)
- tmigot (1)
- sharabhshukla (1)
- SanjayJohnson02 (1)
- binkob (1)
- joaquimg (1)
- pulsipher (1)
- jerryfung110 (1)
- JuliaTagBot (1)
Pull Request Authors
- sshin23 (102)
- github-actions[bot] (47)
- frapac (7)
- amontoison (5)
- klamike (3)
- michel2323 (2)
- jbcaillau (2)
- jerryfung110 (2)
- blegat (1)
- FHoltorf (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- julia 114 total
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 18
juliahub.com: ExaModels
An algebraic modeling and automatic differentiation tool in Julia Language, specialized for SIMD abstraction of nonlinear programs.
- Documentation: https://docs.juliahub.com/General/ExaModels/stable/
- License: MIT
-
Latest release: 0.9.1
published 7 months ago