AMReX is a software framework that supports the development of block-structured adaptive mesh refinement applications. It is written in C++17 (with available Python and Fortran bindings) and runs on machines from laptops to supercomputers, including those with NVIDIA, AMD, and Intel GPUs. AMReX includes distributed containers for hierarchical mesh and particle data, support for complex embedded boundaries, geometric multigrid solvers for parabolic and elliptic systems, and tools for parallel communication, domain decomposition, and load balancing. AMReX forms the basis for the spatial and temporal discretizations of a large number of application codes, spanning scientific domains such as astrophysics, cosmology, combustion research, accelerator design, microelectronics, oceanic and atmospheric modeling, epidemiology, and more.
3. Statement on Alignment with High Performance Software Foundation's Mission
AMReX has been committed to a fully open, community-based development model since its inception in 2017. It has a distributed core development team and over 172 contributors from a range of institutions worldwide, including government labs, universities, and private companies. AMReX is widely used in the community of application developers who use block-structured and particle-mesh algorithms and is actively seeking broader adoption within the HPC community. AMReX aims to be part of a broader numerical software ecosystem and maintains interfaces with other packages such as PETSc, HYPRE, SUNDIALS, heFFTe, and more.
7. Sponsor from the High Performance Software Foundation's Technical Advisory Committee: Axel Huebl, Todd Gamblin
8. What is the project's solution for source control?
Git / GitHub
9. What is the project's solution for issue tracking?
Github
10. Please list all external dependencies and their license
The only required dependency is a C++17-compatible compiler. Optional dependencies include:
MPI (e.g. OpenMPI [BSD])
CUDA, HIP, SYCL (various licenses)
SUNDIALS [3-clause BSD]
HYPRE [MIT or Apache]
PETSc [2-clause BSD]
11. Please describe your release methodology and mechanics
Releases are made on a monthly schedule, usually on the first working day of the month. Releases are handled as GitHub tags, a new tag is created and named after the month and year, e.g. the current release is 24.09. Prior to every pull request, a suite of CI tests must pass that test compilation with a variety of compilers and options, as well as correctness for CPU execution. We also have a set of GPU (NVIDIA only) correctness tests than run nightly on our own servers.
12. Please list the names of the project's current committers
AMReX does not have a category called “committer” in its governance structure; it has a “Steering Committee”, “Technical Committee”, and “Contributors”. The “Technical Committee” corresponds to people with the ability to merge pull requests, those people are initially:
Ann Almgren (LBNL)
Marcus Day (NREL)
Candace Gilet (University of Michigan)
Kevin Gott (LBNL / NERSC)
Axel Huebl (LBNL)
Andrew Myers (LBNL)
Andy Nonaka (LBNL)
Jean Sexton (LBNL)
Weiqun Zhang (LBNL)
Michael Zingale (Stony Brook University)
13. Please list the project's leadership team
The Steering Committee, which corresponds to those with admin access to the GitHub repo, currently consists of:
Ann Almgren (LBNL)
John Bell (chair, LBNL)
Andrew Myers (LBNL)
Weiqun Zhang (LBNL)
14. Please describe the project's decision-making process
The technical committee (TC) is the core governance body, where, under normal operations, most ideas are discussed and decisions are made. These decisions are usually made at developer meetings. Individual TC members can approve and merge code changes. TC members are expected to seek approval of another maintainer for their own changes, except under exigent circumstances. TC members lead and weigh in on technical discussions and, if needed, can call for a vote of the TC for a technical decision. TC members can merge/close PRs and issues, and moderate (including blocking or muting) bad actors.
The steering committee (SC) is responsible for providing overall direction and guidance, but for the most part allows normal development decisions to be made by the TC. The SC can veto decisions made by the TC, but only does so in extreme circumstances. Moreover, a veto can be overridden by a 2/3 vote of the TC.
The TC can also nominate “Contributors”, who have the ability to triage and review pull requests, but who cannot merge changes themselves.
15. What is the maturity level of your project?
We expect to join at the “Established” stage. Currently, we do not meet the requirement that no more than 50% of our leadership team come from the same institution for “Core” membership.
16. Please list the project's official communication channels
Issues and discussions take place on Github.
AMReX also has a Slack where users and developers can have more fast-paced discussions, either in the general channel or in topic-specific channels such as “gpu”, “linear solvers”, “python”, etc. Users can be added to the slack channel(s) by emailing a member of the steering committee.
17. Please list the project's social media accounts
N/A
18. Please describe any existing financial sponsorships
AMReX developers are funded by their respective institutions. Currently, there are several AMReX developers whose efforts are supported by projects funded by the US Department of Energy’s Office of Science. This support requires regular renewal, however, AMReX is currently used in many DOE-supported projects, so it is unlikely that this support will completely collapse in the near future.
19. Please describe the project's infrastructure needs or requests
We are very interested in support for CI, particularly access to GPU resources. Supporting our slack channel is very useful as well, as it is a major means of communication for our developers. We are also interested in having a user meeting at some point in the future.
1. Name of Project: AMReX
2. Project Description
AMReX is a software framework that supports the development of block-structured adaptive mesh refinement applications. It is written in C++17 (with available Python and Fortran bindings) and runs on machines from laptops to supercomputers, including those with NVIDIA, AMD, and Intel GPUs. AMReX includes distributed containers for hierarchical mesh and particle data, support for complex embedded boundaries, geometric multigrid solvers for parabolic and elliptic systems, and tools for parallel communication, domain decomposition, and load balancing. AMReX forms the basis for the spatial and temporal discretizations of a large number of application codes, spanning scientific domains such as astrophysics, cosmology, combustion research, accelerator design, microelectronics, oceanic and atmospheric modeling, epidemiology, and more.
3. Statement on Alignment with High Performance Software Foundation's Mission
AMReX has been committed to a fully open, community-based development model since its inception in 2017. It has a distributed core development team and over 172 contributors from a range of institutions worldwide, including government labs, universities, and private companies. AMReX is widely used in the community of application developers who use block-structured and particle-mesh algorithms and is actively seeking broader adoption within the HPC community. AMReX aims to be part of a broader numerical software ecosystem and maintains interfaces with other packages such as PETSc, HYPRE, SUNDIALS, heFFTe, and more.
4. Project Website (please provide a link)
AMReX webpage AMReX Github
5. Code of Conduct (please provide a link)
Code of Conduct
6. Governance Practices (please provide a link)
Project Governance
7. Sponsor from the High Performance Software Foundation's Technical Advisory Committee: Axel Huebl, Todd Gamblin
8. What is the project's solution for source control? Git / GitHub
9. What is the project's solution for issue tracking? Github
10. Please list all external dependencies and their license The only required dependency is a C++17-compatible compiler. Optional dependencies include: MPI (e.g. OpenMPI [BSD]) CUDA, HIP, SYCL (various licenses) SUNDIALS [3-clause BSD] HYPRE [MIT or Apache] PETSc [2-clause BSD]
11. Please describe your release methodology and mechanics Releases are made on a monthly schedule, usually on the first working day of the month. Releases are handled as GitHub tags, a new tag is created and named after the month and year, e.g. the current release is 24.09. Prior to every pull request, a suite of CI tests must pass that test compilation with a variety of compilers and options, as well as correctness for CPU execution. We also have a set of GPU (NVIDIA only) correctness tests than run nightly on our own servers.
12. Please list the names of the project's current committers AMReX does not have a category called “committer” in its governance structure; it has a “Steering Committee”, “Technical Committee”, and “Contributors”. The “Technical Committee” corresponds to people with the ability to merge pull requests, those people are initially:
Ann Almgren (LBNL) Marcus Day (NREL) Candace Gilet (University of Michigan) Kevin Gott (LBNL / NERSC) Axel Huebl (LBNL) Andrew Myers (LBNL) Andy Nonaka (LBNL) Jean Sexton (LBNL) Weiqun Zhang (LBNL) Michael Zingale (Stony Brook University)
13. Please list the project's leadership team The Steering Committee, which corresponds to those with admin access to the GitHub repo, currently consists of:
Ann Almgren (LBNL) John Bell (chair, LBNL) Andrew Myers (LBNL) Weiqun Zhang (LBNL)
14. Please describe the project's decision-making process The technical committee (TC) is the core governance body, where, under normal operations, most ideas are discussed and decisions are made. These decisions are usually made at developer meetings. Individual TC members can approve and merge code changes. TC members are expected to seek approval of another maintainer for their own changes, except under exigent circumstances. TC members lead and weigh in on technical discussions and, if needed, can call for a vote of the TC for a technical decision. TC members can merge/close PRs and issues, and moderate (including blocking or muting) bad actors.
The steering committee (SC) is responsible for providing overall direction and guidance, but for the most part allows normal development decisions to be made by the TC. The SC can veto decisions made by the TC, but only does so in extreme circumstances. Moreover, a veto can be overridden by a 2/3 vote of the TC.
The TC can also nominate “Contributors”, who have the ability to triage and review pull requests, but who cannot merge changes themselves.
15. What is the maturity level of your project? We expect to join at the “Established” stage. Currently, we do not meet the requirement that no more than 50% of our leadership team come from the same institution for “Core” membership.
16. Please list the project's official communication channels Issues and discussions take place on Github. AMReX also has a Slack where users and developers can have more fast-paced discussions, either in the general channel or in topic-specific channels such as “gpu”, “linear solvers”, “python”, etc. Users can be added to the slack channel(s) by emailing a member of the steering committee.
17. Please list the project's social media accounts N/A
18. Please describe any existing financial sponsorships AMReX developers are funded by their respective institutions. Currently, there are several AMReX developers whose efforts are supported by projects funded by the US Department of Energy’s Office of Science. This support requires regular renewal, however, AMReX is currently used in many DOE-supported projects, so it is unlikely that this support will completely collapse in the near future.
19. Please describe the project's infrastructure needs or requests We are very interested in support for CI, particularly access to GPU resources. Supporting our slack channel is very useful as well, as it is a major means of communication for our developers. We are also interested in having a user meeting at some point in the future.