Skip to content

build: Support x86_64 when using docker compose - #1280

Open
zeroepoch wants to merge 1 commit into
NVIDIA:mainfrom
zeroepoch:zeroepoch-x86-docker-compose
Open

zeroepoch wants to merge 1 commit into
NVIDIA:mainfrom
zeroepoch:zeroepoch-x86-docker-compose

Conversation

@zeroepoch

@zeroepoch zeroepoch commented Sep 12, 2026

Copy link
Copy Markdown

You can use a command such as the following,

docker compose build --build-arg ARCH=$(uname -m)

to build the CI container for x86_64 (or aarch64).

  • The default CPU architecture remains aarch64 so CI doesn't break.
  • Prefix mpirun with HWLOC_COMPONENTS=-gl to avoid a hang when graphics
    are present on the GPU.

Background

The current docker compose workflow doesn't support anything but aarch64 due to hardcoding some paths. Make the CPU arch a build argument to support x86_64 as well.

Exit Criteria

docker compose build --build-arg ARCH=$(uname -m) finishes successfully on a Linux x86 host (Fedora 44 + rootless podman) with an RTX 5080 GPU.

Implementation

N/A: Just a build improvement.

Change categories

  • Model or runtime behavior
  • Public API
  • ABI
  • Bundle or artifact format
  • Dependencies
  • Documentation only
  • CI or developer tooling

Validation

Commands and Results

docker compose build --build-arg ARCH=$(uname -m)

Hardware, Environment, and Revisions

  • AMD Ryzen 9 5900X
  • NVIDIA GeForce RTX 5080
  • Fedora 44
  • Podman

Not Run / Remaining Gaps

N/A: Just a build improvement.

Contributor Self-Review

  • I have completed a self-review of this change.

Notes For Future Readers

N/A: Just a build improvement.

Risk level

This is a change only to the CI/developer Docker build, so it shouldn't have any product impact. The default value for the variable being added is the same as before so it should be a transparent change if the user doesn't exercise the variable.

  • Low
  • Medium
  • High

@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: d55c3d30-8499-4ec3-8226-c7e643fd897e

📥 Commits

Reviewing files that changed from the base of the PR and between 714f1fc and ce50efa.

📒 Files selected for processing (2)
  • Dockerfile
  • docker-compose.yml

Included review availability: Your plan provides up to 12 included reviews per hour; 11 remain after this review.


📝 Summary

Summary

The CI container now accepts a configurable ARCH build argument. The default remains aarch64. The TensorRT include path and Compose dev build use this value.

MPI validation now sets HWLOC_COMPONENTS=-gl before mpirun to avoid GPU graphics-related hangs.

Architecture impact

HUMAN REVIEW REQUIRED

  • Family-owned files: None. The changes are in shared CI build surfaces.
  • Changed shared surfaces: Dockerfile architecture configuration, TensorRT header discovery, and the docker-compose.yml dev build.
  • Dependency direction: Compose passes ARCH to the Dockerfile. The Dockerfile maps it to the TensorRT include directory.
  • Affected consumers: CI builds and developers who build the dev service for architectures other than aarch64.
  • Unresolved blast-radius questions: Confirm that each supported architecture provides the expected TensorRT headers and compatible package artifacts. Confirm that disabling HWLOC graphics components is valid for every MPI validation environment.

Walkthrough

The container build now accepts an ARCH argument, uses it for the TensorRT include path, and passes it from Docker Compose. MPI validation disables HWLOC GPU components before invoking mpirun.

Changes

Container build configuration

Layer / File(s) Summary
Architecture argument propagation
Dockerfile, docker-compose.yml
The Dockerfile defines ARCH with an aarch64 default and uses it for TRT_INC_DIR. The development service passes the same build argument.
MPI validation settings
Dockerfile
The MPI validation command sets HWLOC_COMPONENTS=-gl before running mpirun.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Feature

Merge Risk: ⚪ Minimal · up to ce50e

The architecture argument propagation and MPI environment change do not leave an actionable merge risk in the reviewed configuration.

🚥 Pre-merge checks | ✅ 9
✅ Passed checks (9 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Family Ownership Boundary ✅ Passed PASS. The changed lines are infrastructure-only: Dockerfile:6 adds the generic ARCH argument, Dockerfile:86 selects the TensorRT include path by architecture, Dockerfile:97 sets the generic MP…
Shared Semantic Neutrality ✅ Passed PASS. The pull request changes only Dockerfile and docker-compose build plumbing. ARCH selects the host ABI include path (/usr/include/$ARCH-linux-gnu) and keeps the existing aarch64 default. `H…
Benchmark Validation Integrity ✅ Passed PASS: The pull request does not change a benchmark, performance comparison, metric, gate, workload, or report path. The Dockerfile changes only the build-time include path and scopes `HWLOC_COMPONENTS…
Shared Change Blast Radius ✅ Passed The change is shared CI and developer tooling, not a model-family implementation. The description states the model-agnostic need: support x86_64 and retain the aarch64 default. It identifies the affec…
Title check ✅ Passed The title clearly and concisely describes the main change: adding x86_64 support to the Docker Compose build.
Description check ✅ Passed The description covers the background, exit criteria, implementation, change category, validation command, environment, self-review, risk level, and future notes. It is mostly complete, but it does no…

Comment @coderabbitai help to get the list of available commands.

@zeroepoch
zeroepoch force-pushed the zeroepoch-x86-docker-compose branch from ce50efa to 6031386 Compare September 12, 2026 08:53
You can use a command such as the following,

```docker compose build --build-arg ARCH=$(uname -m)```

to build the CI container for x86_64 (or aarch64).

- The default CPU architecture remains `aarch64` so CI doesn't break.
- Prefix `mpirun` with `HWLOC_COMPONENTS=-gl` to avoid a hang when graphics
  are present on the GPU.

Signed-off-by: Eric Work <work.eric@gmail.com>
@zeroepoch
zeroepoch force-pushed the zeroepoch-x86-docker-compose branch from 6031386 to 892c1b2 Compare September 12, 2026 08:55
@yifeif-nv

Copy link
Copy Markdown
Collaborator

Hey Eric, please add a short explanation under the risk level.

There is also another failure, which is a gap in our CI: we need to add the docker-compose.yml to shared files in tools/test_impact.py and we should be good here

@zeroepoch

Copy link
Copy Markdown
Author

Hey Eric, please add a short explanation under the risk level.

Added

There is also another failure, which is a gap in our CI: we need to add the docker-compose.yml to shared files in tools/test_impact.py and we should be good here

I'll take a look at this and update the PR.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants