This repository provides a relocatable Lmod module tree for AFAR compiler + ROCm drops on Frontier. The tree is designed to be copied into a site modulepath with only a root path update and regeneration.
- Add the modulepath:
module use /path/to/afar_modules/modulefiles - Load a compatible programming environment:
module load cpe/25.09module load PrgEnv-amd - Load MPI and targets:
module load cray-mpich/9.0.1module load craype-x86-trentomodule load craype-accel-amd-gfx90a - Load an AFAR drop:
module load afar-prgenv/22.2.0-8873 - Verify wrapper behavior:
ftn --versioncc --version - Verify MPICH flavor selection:
echo "$CRAY_MPICH_VERSION"echo "$AFAR_MPICH_FLAVOR"pkg-config --cflags mpichf90
- afar_modules/docs/user-guide.md: day-to-day usage, build examples, and runtime checks.
- afar_modules/docs/pkgconfig.md:
pkg-configprimer,.pcformat, and AFAR shims. - afar_modules/docs/architecture.md: how the AFAR modules, wrappers, and pkg-config glue fit together.
- afar_modules/docs/mpich.md: Cray MPICH 8.x vs 9.x integration, mpichf90.pc layout, and validation.
- afar_modules/docs/wrappers.md: ftn/cc/CC wrapper behavior, offload arch injection, and overrides.
- afar_modules/docs/module-generation.md: generating modulefiles, adding new AFAR drops, and config inputs.
- afar_modules/docs/troubleshooting.md: common issues and diagnostics.
- afar_modules/docs/testing.md: local test harness and repro layout.
- afar_modules/docs/admin-handoff.md: site admin checklist for deployment and updates.
- afar_modules/docs/documentation-plan.md: documentation maintenance plan and best practices.
- paper/afar-prgenv.pdf: AFAR module paper (PDF).
assets/ # README images and overview graphics
afar_modules/ # AFAR module tree (modulefiles, wrappers, pkg-config)
bin/ # compiler wrapper scripts (ftn/cc/CC)
config/ # AFAR root + version mapping + Cray MPICH libdir
docs/ # detailed documentation
modulefiles/ # generated Lmod modulefiles
pkgconfig/ # generated pkg-config files
scripts/ # generator scripts
logs/ # test logs (untracked)
paper/ # paper sources and PDF
repro/ # repro cases for the test harness
scripts/ # test harness and helper scripts
.modules # known-good module sequence (workspace)
- Add new drops and regenerate: afar_modules/docs/module-generation.md
- Run the test harness (
scripts/run_afar_tests.sh --keep-going); logs live inlogs/and are untracked. - Keep MPICH 8.x/9.x mapping current: afar_modules/docs/mpich.md
- Verify wrapper behavior after changes: afar_modules/docs/wrappers.md
- Update admin-facing steps after PE/ROCm changes: afar_modules/docs/admin-handoff.md
- Refresh examples and tests: afar_modules/docs/troubleshooting.md
- Review pkg-config shims when library modules change: afar_modules/docs/pkgconfig.md
- Use
.modulesin this workspace for the known-good module sequence. - If PE/MPICH or AFAR versions change, update
.modulesto keep the sequence current. - Regenerate modulefiles after AFAR drop or MPICH path changes:
afar_modules/scripts/generate_afar_modules.sh
@misc{AfarPrgenv2025,
author = {Hernandez, Oscar and Elwasif, Wael},
title = {Afar-prgenv: A configurable programming environment for AMD AFAR drops on Cray HPE systems},
year = {2025},
note = {Internal tool used at OLCF Frontier}
}