{"id":25927987,"url":"https://github.com/exanauts/exaadmm.jl","last_synced_at":"2026-04-06T04:07:08.515Z","repository":{"id":37241084,"uuid":"412625681","full_name":"exanauts/ExaAdmm.jl","owner":"exanauts","description":"Julia implementation of ADMM solver on multiple GPUs","archived":false,"fork":false,"pushed_at":"2024-04-14T00:36:01.000Z","size":1056,"stargazers_count":15,"open_issues_count":11,"forks_count":1,"subscribers_count":7,"default_branch":"main","last_synced_at":"2024-04-14T15:20:16.314Z","etag":null,"topics":["admm","gpu-computing","julia"],"latest_commit_sha":null,"homepage":"","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exanauts.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-10-01T21:49:40.000Z","updated_at":"2024-04-21T01:39:57.064Z","dependencies_parsed_at":"2024-02-04T01:29:18.858Z","dependency_job_id":"d12feee0-d3f4-44b7-95e2-2ab1c288fb84","html_url":"https://github.com/exanauts/ExaAdmm.jl","commit_stats":{"total_commits":66,"total_committers":7,"mean_commits":9.428571428571429,"dds":0.7121212121212122,"last_synced_commit":"c92a909974c4c661a8742510436c51f87600136b"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exanauts%2FExaAdmm.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exanauts%2FExaAdmm.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exanauts%2FExaAdmm.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exanauts%2FExaAdmm.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exanauts","download_url":"https://codeload.github.com/exanauts/ExaAdmm.jl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241739426,"owners_count":20012103,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admm","gpu-computing","julia"],"created_at":"2025-03-03T21:11:22.563Z","updated_at":"2026-04-06T04:07:03.478Z","avatar_url":"https://github.com/exanauts.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ExaAdmm.jl\n[![][build-stable-img]][build-url] [![][docs-stable-img]][docs-stable-url] [![DOI](https://zenodo.org/badge/412625681.svg)](https://zenodo.org/badge/latestdoi/412625681)\n\nExaAdmm.jl implements the two-level alternating direction method of multipliers for solving the component-based decomposition of alternating current optimal power flow problems on GPUs.\n\n## How to install\n\nThe package can be installed in the Julia REPL with the command below:\n\n```julia\n] add ExaAdmm\n```\n\nRunning the algorithms on the GPU requires either NVIDIA GPUs with [`CUDA.jl`](https://github.com/JuliaGPU/CUDA.jl) or [`KernelAbstractions.jl`](https://github.com/JuliaGPU/KernelAbstractions.jl) (KA) with the respective device support (e.g., [`AMDGPU.jl`](https://github.com/JuliaGPU/AMDGPU.jl) and `ROCKernels.jl`). Currently, only the ACOPF problem is supported using KA.\n\n## How to run\n\nCurrently, `ExaAdmm.jl` supports electrical grid files in the MATLAB format. You can download them from [here](https://github.com/MATPOWER/matpower).\nBelow shows an example of solving `case1354pegase.m` using `ExaAdmm.jl` on an NVIDIA GPU\n\n```julia\nusing ExaAdmm\n\nenv, mod = solve_acopf(\n    \"case1354pegase.m\";\n    rho_pq=1e1,\n    rho_va=1e3,\n    outer_iterlim=20,\n    inner_iterlim=20,\n    scale=1e-4,\n    tight_factor=0.99,\n    use_gpu=true,\n    verbose=1\n);\n```\nand the same example on an AMD GPU:\n```julia\nusing ExaAdmm\nusing AMDGPU\n\nenv, mod = solve_acopf(\n    \"case1354pegase.m\";\n    rho_pq=1e1,\n    rho_va=1e3,\n    outer_iterlim=20,\n    inner_iterlim=20,\n    scale=1e-4,\n    tight_factor=0.99,\n    use_gpu=true,\n    ka_device = ROCBackend(),\n    verbose=1\n)\n```\nThe following table shows parameter values we used for solving pegase and ACTIVSg data.\n\nData        | rho_pq | rho_va | scale | obj_scale\n----------- | ------ | ------ | ----- | ---------\n1354pegase  | 1e1    | 1e3    | 1e-4  | 1.0\n2869pegase  | 1e1    | 1e3    | 1e-4  | 1.0\n9241pegase  | 5e1    | 5e3    | 1e-4  | 1.0\n13659pegase | 5e1    | 5e3    | 1e-4  | 1.0\nACTIVSg25k  | 3e3    | 3e4    | 1e-5  | 1.0\nACTIVSg70k  | 3e4    | 3e5    | 1e-5  | 2.0\n\nWe have used the same `tight_factor=0.99`, `outer_iterlim=20`, and `inner_iterlim=1000` for all of the above data.\n\n## Publications\n\n- Youngdae Kim and Kibaek Kim. \"Accelerated Computation and Tracking of AC Optimal Power Flow Solutions using GPUs\" arXiv preprint arXiv:2110.06879, 2021\n- Youngdae Kim, François Pacaud, Kibaek Kim, and Mihai Anitescu. \"Leveraging GPU batching for scalable nonlinear programming through massive lagrangian decomposition\" arXiv preprint arXiv:2106.14995, 2021\n\n## Acknowledgments\n\nThis research was supported by the Exascale ComputingProject (17-SC-20-SC),  a collaborative effort of the U.S. Department of Energy Office of Science and the National Nuclear Security Administration.\nThis material is based upon work supported by the U.S. Department of Energy, Office of Science, under contract number DE-AC02-06CH11357.\n\n[docs-stable-img]: https://img.shields.io/badge/docs-stable-blue.svg\n[docs-stable-url]: https://exanauts.github.io/ExaAdmm.jl/\n[build-url]: https://github.com/exanauts/ExaAdmm.jl/actions/workflows/ci.yml\n[build-stable-img]: https://github.com/exanauts/ExaAdmm.jl/actions/workflows/ci.yml/badge.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexanauts%2Fexaadmm.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexanauts%2Fexaadmm.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexanauts%2Fexaadmm.jl/lists"}