Skip to content

harp-lab/CHiARA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

"""# Fugaku Experiments Folder

📂 Folder Structure

CHIARA/
├── allgather/
│   ├── all_gather_radix_batch.cpp
│   └── main.cpp
├── allreduce/
│   ├── all_reduce_radix_batch.cpp
│   └── main.cpp
├── reduce-scatter/
│   ├── reduce_scatter_radix_batch.cpp
│   └── main.cpp
└── README.md

Each main.cpp follows a consistent structure and benchmarking flow:

  1. Initializes MPI and parses runtime parameters.
  2. Iterates over different message sizes (count = base << i).
  3. Benchmarks radix- and batch-parameterized algorithm variants.
  4. Records results to a CSV file (results<num_nodes>.csv).

⚙️ Compilation

All programs can be compiled using mpic++:

mpic++ -O3 -std=c++17 -o allgather main.cpp all_gather_radix_batch.cpp
mpic++ -O3 -std=c++17 -o allreduce main.cpp all_reduce_radix_batch.cpp
mpic++ -O3 -std=c++17 -o reduce_scatter main.cpp reduce_scatter_radix_batch.cpp

🚀 Usage

Each executable accepts the same set of parameters:

mpirun -np <nprocs> ./program <n_iter> [--overwrite] [b=<value>] [base=<value>] [num_nodes=<value>] [radix_increment=<value>]

Arguments

Parameter Description Default
<n_iter> Number of iterations (required)
--overwrite Overwrites existing CSV file false
b=<value> Batch size parameter (upper limit for radix loop) 16
base=<value> Base message size multiplier 1
num_nodes=<value> Number of nodes in the system (used for CSV naming) 1
radix_increment=<value> Step size for increasing radix r 1

Example:

mpirun -np 16 ./reduce_scatter 8 --overwrite b=32 base=4 num_nodes=4 radix_increment=2

🧠 Output

Each run produces a CSV file named:

results<num_nodes>.csv

The CSV contains one row per experiment configuration:

algorithm_name k b nprocs send_count time is_correct
reduce_scatter_radix_batch 4 16 32 4096 1.23e-05 1
reduce_scatter_standard 32 4096 2.45e-05 1
  • time is the measured execution latency in seconds.
  • is_correct indicates whether the result was validated against the MPI reference collective.

🧩 Implementation Notes

  • Each collective (AllGather, AllReduce, ReduceScatter) defines:
    • A parameterized radix/batch variant (*_radix_batch.cpp)
    • A standard MPI baseline for comparison.
  • The test harness in main.cpp automatically sweeps message sizes and radix values.
  • Designed for scaling studies on HPC clusters (e.g., Fugaku, Polaris, Aurora).

📜 Example Run

# Example: Run AllReduce experiment on 8 processes
mpirun -np 8 ./allreduce 6 --overwrite b=16 base=2 num_nodes=8 radix_increment=2

Output:

Parsed parameters:
  n_iter          = 6 
  overwrite       = true
  b               = 16
  base            = 2
  num_nodes       = 8
  radix_increment = 2

The resulting file results8.csv will contain performance data for all tested configurations.

"""

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages