Skip to content

AMDFlang compiler for MFC#1116

Merged
sbryngelson merged 24 commits intoMFlowCode:masterfrom
anandrdbz:master
Feb 1, 2026
Merged

AMDFlang compiler for MFC#1116
sbryngelson merged 24 commits intoMFlowCode:masterfrom
anandrdbz:master

Conversation

@anandrdbz
Copy link
Copy Markdown
Contributor

@anandrdbz anandrdbz commented Jan 29, 2026

User description

Description

This PR enables the use of the amdflang compiler for MFC on OLCF Frontier. Load modules using . ./mfc.sh load -c famd -m g.
Primary changes include replacing automatic arrays with static private arrays in GPU kernels.
With case-optimization turned on, a conditional statement with a parameter followed by a GPU kernel can sometimes lead to a catastrophic error when the condition is false. This is guarded using a 'dummy' variable for now until it gets patched.

Fixes #(issue) [optional]

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Something else

Scope

  • This PR comprises a set of related changes with a common goal

If you cannot check the above box, please split your PR into multiple PRs that each have a common goal.

How Has This Been Tested?

Please describe the tests that you ran to verify your changes.
Provide instructions so we can reproduce.
Please also list any relevant details for your test configuration

  • Test A
  • Test B

Test Configuration:

  • What computers and compilers did you use to test this:

Checklist

  • I have added comments for the new code

They run to completion and demonstrate "interesting physics."

  • I ran ./mfc.sh format before committing my code
  • New and existing tests pass locally with my changes, including with GPU capability enabled (both NVIDIA hardware with NVHPC compilers and AMD hardware with CRAY compilers) and disabled
  • This PR does not introduce any repeated code (it follows the DRY principle)

If your code changes any code source files (anything in src/simulation)

To make sure the code is performing as expected on GPU devices, I have:

  • Checked that the code compiles using NVHPC compilers
  • Checked that the code compiles using CRAY compilers

Summary by CodeRabbit

  • New Features

    • Full end-to-end support for AMD Frontier: build/submit/benchmark tooling, runtime template and module integration.
  • Chores

    • CI matrix and log-archiving extended to include Frontier AMD; toolchain/module support updated for AMD/Cray targets.
  • Behavior Changes

    • MUSCL defaults updated; new logical flag (default false) enables alternate execution/test paths.

✏️ Tip: You can customize this high-level summary in your review settings.


CodeAnt-AI Description

Enable building and running with the AMDFlang/amdflang toolchain and avoid AMD-specific compiler failures

What Changed

  • Adds conditional support to compile for AMD (USING_AMD): uses fixed-size, static arrays in GPU-executed routines and switches to AMD-safe molecular weight lookup so GPU kernels no longer rely on automatic/variable-size arrays
  • Inserts a temporary "dummy" guard so certain conditional branches are always safe to compile on AMD compilers, preventing a known catastrophic codegen bug when case-optimization removes a kernel
  • Wraps many dimensional and physics-dependent computations with compile-time guards so code paths and loops compile correctly for AMD targets (includes viscous flux, HLLD/HLLC fluxes, reconstruction, bubble models, and viscous/stress routines)
  • Adds CI and toolchain files and build/test scripts for Frontier/AMD to enable AMD-specific builds and verification

Impact

✅ Can build and run on OLCF Frontier with amdflang
✅ Fewer AMD compiler crashes during compilation
✅ More consistent GPU kernel behavior on AMD targets

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Review effort 4/5 size:XXL This PR changes 1000+ lines, ignoring generated files

Development

Successfully merging this pull request may close these issues.

2 participants