This repo is used to develop, test and evaluate new load balancing algorithms and strategies, specifically for the framework, AMReX.
It includes varieties and variations of load balancing algorithms, codes to test and compare algorithms on different weights and weight distributions, Jupyter notebooks and other tools to evaluate and explore the load balancing state of AMReX codes and code to collect and print load balancing metrics and weights from AMReX applications.
amrex_LB
│
└─── notebooks <- jupyter-notebooks to plot all the obtained outputs
│
└───output <- this directory stores all the outputs (run_100 and run_250
│ are no of times we ran the optimized algorithms.)
│
└───result <- this directory stores all the analysis plots
│
└───src
│ │
│ └───bruteForce <- bruteforce experimentation
│ │
│ │
│ └───optimized_algorithm <- existing and developed dynamic load balancing algorithms
|
└───LICENSE
└───README.md
- Operating System: macOS, Linux, or similar Unix-based systems
- Compiler: GCC (version 9.0 or later) or Clang supporting C++17 or later.
- Build Tools: make utility for building the code.
- Shell: Bash for running shell scripts.
- AMReX : A software framework for building parallel AMR applications.
- CMake: Version 3.15 or later for configuring the build system.
- MPI: OpenMPI for parallel execution (if required).
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
-
First clone the repository to your local machine:
git clone https://github.com/kngott/amrex_LB.git cd ACM_PEARC_2025_Paper_Artifact
-
Install and Build AMReX from the step here:
https://amrex-codes.github.io/amrex/docs_html/BuildingAMReX_Chapter.html
Clone this repository to the working directory
git clone https://github.com/AMReX-Codes/amrex.git
This repository includes all
amrex
functionalities required to run our test-cases. So modify theGNUmakefile
accordingly. Change theAMREX_HOME
path to the correct path of clonedamrex
repository.AMREX_HOME ?= ../../../amrex
-
Navigate to the
bruteForce
directoryCC bruteForce.cpp -o bf -fopenmp
-
Navigate to the
optimized_algorithms
directorycd /path/to/amrex_LB/src/optimized_algorithms/
-
Configure the Makefile:
Ensure your
Make.package
file includes the correct paths toAMReX
headers and libraries also all files headers and sources. -
Compile the Code:
make -j
This will generate the executable
main3d.gnu.x86-milan.TPROF.ex
-
Navigate to the Repository Root:
Change the
inputs
as per your requirement. You can change themean
,standard_deviation
,no_of_runs
,domain_size
,max_grid_size
. -
Run the experiment file
./experiment.sh
-
Direct Execution
./main3d.gnu.x86-milan.TPROF.ex inputs nnodes=2 domain="(256,256,256)" max_grid_size= "(128,128,128)" > output/2_4_output_worst.txt
-
Running a bash file through jobs on perlmutter
sbatch run.sh
This repo uses the same license as the AMReX repo.
Kevin Gott
Md Kamal Chowdhury
Amitash Nanda
Hannah Ross
Plus, the BoxLib and AMReX authors of the original load balancing algorithms.
- AMReX Team
- Perlmutter Supercomputer
- Lawrence Berkeley National Laboratory
- National Energy Research Scientific Computing Center
- University of California San Diego (Boolean Lab)
- The University of Alabama