Skip to content

[Draft] Hotfix: Add env variables to overcome A3 highgpu failure#5291

Closed
SwarnaBharathiMantena wants to merge 3 commits into
GoogleCloudPlatform:release-candidatefrom
SwarnaBharathiMantena:swarnabm/fix_a3_highgpu_slurm_build_failure
Closed

[Draft] Hotfix: Add env variables to overcome A3 highgpu failure#5291
SwarnaBharathiMantena wants to merge 3 commits into
GoogleCloudPlatform:release-candidatefrom
SwarnaBharathiMantena:swarnabm/fix_a3_highgpu_slurm_build_failure

Conversation

@SwarnaBharathiMantena

Copy link
Copy Markdown
Contributor

The NCCL test failure with WEXITSTATUS 3 was caused by a missing environment variable in the Slurm Prolog/Epilog wrapper scripts.

Root Cause Analysis

  1. TCPX Initialization: NCCL tests on A3 HighGPU nodes require the rxdm (Receive Data Path Manager) script to create Unix Domain
    Sockets in /run/tcpx-${SLURM_JOB_ID}. These sockets are then mounted into the Enroot container.
  2. Multiplexer Failure: The rxdm script is executed via a multiplexer script (slurm_mux). This multiplexer depends on the
    SLURM_SCRIPT_CONTEXT environment variable to determine which scripts to run (e.g., prolog_slurmd or epilog_slurmd).
  3. Missing Context: The wrapper scripts external_prolog.sh and external_epilog.sh were calling slurm_mux without setting
    SLURM_SCRIPT_CONTEXT. Consequently, slurm_mux skipped all scripts, including rxdm.
  4. Container Startup Failure: Because rxdm did not run, the /run/tcpx-${SLURM_JOB_ID} directory was never created on the compute
    nodes. When srun attempted to start the container, the mount operation failed because the source directory did not exist,
    leading to exit code 3.

Fixes Applied
Updated the following files in the schedmd-slurm-gcp-v6-controller module:

  • community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/files/external_prolog.sh: Now exports
    SLURM_SCRIPT_CONTEXT="prolog_slurmd".
  • community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/files/external_epilog.sh: Now exports
    SLURM_SCRIPT_CONTEXT="epilog_slurmd".

These changes ensure that custom prologs and epilogs (including TCPX setup) are correctly identified and executed by the multiplexer.

@SwarnaBharathiMantena SwarnaBharathiMantena added the release-bugfix Added to release notes under the "Bug fixes" heading. label Feb 26, 2026
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @SwarnaBharathiMantena, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request resolves a critical issue causing NCCL test failures on A3 HighGPU nodes by ensuring that Slurm's external prolog and epilog wrapper scripts correctly set the SLURM_SCRIPT_CONTEXT environment variable. This rectifies a problem where the slurm_mux multiplexer was skipping essential setup scripts, such as rxdm for TCPX initialization, leading to container startup failures due to missing directories. The changes guarantee proper execution of custom Slurm hooks, resolving the underlying cause of the test failures.

Highlights

  • Environment Variable Export: The SLURM_SCRIPT_CONTEXT environment variable is now explicitly exported in external_prolog.sh and external_epilog.sh scripts. This ensures that the slurm_mux multiplexer correctly identifies and executes custom prolog and epilog scripts, including the rxdm script required for TCPX initialization.
  • NCCL Test Failure Resolution: This change directly addresses the NCCL test failure with WEXITSTATUS 3 on A3 HighGPU nodes, which was caused by the rxdm script not running due to the missing environment variable, leading to container startup failures.
Changelog
  • community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/files/external_epilog.sh
    • Added export SLURM_SCRIPT_CONTEXT="epilog_slurmd" to ensure the correct context is set for the epilog script.
  • community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/files/external_prolog.sh
    • Added export SLURM_SCRIPT_CONTEXT="prolog_slurmd" to ensure the correct context is set for the prolog script.
Activity
  • No human activity has been recorded on this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request addresses a critical issue with NCCL test failures on A4 HighGPU nodes by ensuring the SLURM_SCRIPT_CONTEXT environment variable is set correctly in the prolog and epilog wrapper scripts. The fix is direct and well-explained in the description. My review includes a couple of suggestions to add comments to the code, which will improve long-term maintainability by explaining the purpose of this variable directly in the scripts, in line with the project's style guide. The provided rule regarding variable configurability does not apply to these comments, as they focus on documenting hardcoded values rather than making them configurable.

@SwarnaBharathiMantena
SwarnaBharathiMantena force-pushed the swarnabm/fix_a3_highgpu_slurm_build_failure branch from d574070 to 8a32650 Compare February 26, 2026 09:15
@SwarnaBharathiMantena

Copy link
Copy Markdown
Contributor Author

Did not fix the issue. Debugging futher.

@SwarnaBharathiMantena SwarnaBharathiMantena changed the title [Draft] Hotfix: Add env variables to overcome A4 highgpu failure [Draft] Hotfix: Add env variables to overcome A3 highgpu failure Feb 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-bugfix Added to release notes under the "Bug fixes" heading.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant