Skip to content

Build AMD GPU operator images for ppc64le - #565

Closed
Amulyam24 wants to merge 1 commit into
ROCm:mainfrom
Amulyam24:ppc64le
Closed

Build AMD GPU operator images for ppc64le#565
Amulyam24 wants to merge 1 commit into
ROCm:mainfrom
Amulyam24:ppc64le

Conversation

@Amulyam24

@Amulyam24 Amulyam24 commented Jun 3, 2026

Copy link
Copy Markdown

Motivation

This PR aims to expand the arch support for the operator images

Technical Details

Added multi-arch support with Docker buildx

Test Plan

Tested the image along with the device plugin and KKM on a ppc64le test cluster

Test Result

Works as expected. Verified by running a sample vLLM pod on 1 AMD GPU

Submission Checklist

Signed-off-by: Amulyam24 <amulmek1@in.ibm.com>
@yansun1996

Copy link
Copy Markdown
Member

Hi @Amulyam24 thanks for raising the PR, could you please share more details about why you want to expand the image build to ppc64le ?

for example:

  1. how's the cluster look like ? based on which k8s version or k8s variant ?
  2. what is the host OS , kernel, amdgpu, ROCm version ?
  3. how large is the cluster you are going to use ?

Thanks

@Amulyam24

Copy link
Copy Markdown
Author

Hi @Amulyam24 thanks for raising the PR, could you please share more details about why you want to expand the image build to ppc64le ?

Hi @yansun1996, This PR has been raised in a effort to support heterogenous computing with AMD GPUs for IBM Power(ppc64le).
More context: ROCm/TheRock#5518

  1. how's the cluster look like ? based on which k8s version or k8s variant ?

Deployed the GPU operator on a single node K8s cluster on a machine with 2 AMD MI210 GPUS
K8s version: 1.34.8

  1. what is the host OS , kernel, amdgpu, ROCm version ?

Host OS: Linux ppc64le
Kernel: Patched with amd64 support
ROCm Version: 7.12.0

  1. how large is the cluster you are going to use ?

For trials, we have used a single node k8s cluster but there are use cases where it would be on larger clusters.

Let me know if you have further questions, Thanks!

@yansun1996

Copy link
Copy Markdown
Member

This work has been consolidated (with the arm64 changes from #549) into a unified, configurable-arch controller manager image build in #623. Your ppc64le commit was cherry-picked there with authorship preserved.

@yansun1996 yansun1996 mentioned this pull request Aug 4, 2026
1 task
yansun1996 added a commit to yansun1996/gpu-operator-rocm that referenced this pull request Aug 4, 2026
Reconcile the arm64 (ROCm#549) and ppc64le (ROCm#565) multi-arch approaches into
one configurable build for the controller manager image. The Dockerfile
now cross-compiles a single manager binary driven by TARGETARCH (default
amd64) with TARGETOS (default linux), instead of building both amd64 and
arm64 binaries unconditionally.

- Makefile `manager` target builds one binary honoring GOOS/GOARCH.
- `docker-build` builds a single arch selected by ARCH (default amd64),
  passing TARGETARCH/TARGETOS as build args.
- `docker-build-multiarch` retains the buildx multi-platform push path.
- Dockerfile ARGs default to amd64/linux so a plain `docker build`
  produces an amd64 image with no extra flags.

Co-Authored-By: Claude <noreply@anthropic.com>
@yansun1996 yansun1996 closed this Aug 4, 2026
yansun1996 added a commit to yansun1996/gpu-operator-rocm that referenced this pull request Aug 4, 2026
…gurable

Unify the arm64 (ROCm#549) and ppc64le (ROCm#565) multi-arch work into a single
configurable build for both the controller manager and utils container
images.

docker-build and docker-build-utils now run
`docker buildx build --platform "$(PLATFORM)"` with PLATFORM defaulting to
linux/amd64 (unchanged default behavior). Set PLATFORM to a single platform
(e.g. linux/arm64) or a comma-separated list (linux/amd64,linux/arm64) for a
multi-arch build. buildx auto-populates TARGETOS/TARGETARCH per platform,
which drive the Go cross-compile, the kubectl download, and the utils
container's oc/kubectl client download.

The Dockerfile and utils Dockerfile TARGETARCH/TARGETOS ARGs intentionally
carry no default: a default suppresses buildx's per-platform value and would
pin every build to that arch.

bundle build is left as upstream (amd64, no changes). Adds a developer-guide
section documenting the PLATFORM builds and the QEMU/buildx prerequisites for
cross-arch builds.

Co-Authored-By: Claude <noreply@anthropic.com>
yansun1996 added a commit to yansun1996/gpu-operator-rocm that referenced this pull request Aug 4, 2026
…gurable

Unify the arm64 (ROCm#549) and ppc64le (ROCm#565) multi-arch work into a single
configurable build for both the controller manager and utils container
images.

docker-build and docker-build-utils run `$(CONTAINER_ENGINE) buildx build
--platform "$(PLATFORM)" $(BUILDX_OUTPUT)`, defaulting to
PLATFORM=linux/amd64 and BUILDX_OUTPUT=--load (single amd64 image loaded
locally, unchanged default). Set PLATFORM to a single platform
(linux/arm64) or a comma-separated list; for a multi-arch list set
BUILDX_OUTPUT=--push (a multi-platform result cannot be --load-ed into the
local store). Works with docker buildx and podman 4.0+.

buildx auto-populates TARGETOS/TARGETARCH per platform, which drive the Go
cross-compile, the kubectl download, and the utils container's oc/kubectl
client download. Dockerfile.build gains qemu-user-static + libc6-arm64-cross
for cross-arch runtime stages.

bundle build is left as upstream (amd64, no changes). Adds a developer-guide
section documenting PLATFORM/BUILDX_OUTPUT and the QEMU prerequisite.

Co-Authored-By: Claude <noreply@anthropic.com>
yansun1996 added a commit to yansun1996/gpu-operator-rocm that referenced this pull request Aug 4, 2026
…gurable

Unify the arm64 (ROCm#549) and ppc64le (ROCm#565) multi-arch work into a single
configurable build for both the controller manager and utils container
images.

docker-build and docker-build-utils run `$(CONTAINER_ENGINE) buildx build
--platform "$(PLATFORM)"`, defaulting to PLATFORM=linux/amd64. A
single-platform build auto-loads into the local image store. Set PLATFORM to
a single platform (linux/arm64) or a comma-separated list; a multi-platform
list must be pushed via a direct `buildx --push`. Works with docker buildx
and podman 4.0+.

buildx auto-populates TARGETOS/TARGETARCH per platform, driving the Go
cross-compile, the kubectl download, and the utils container's oc/kubectl
client download. Dockerfile.build gains qemu-user-static + libc6-arm64-cross
for cross-arch runtime stages.

bundle build is left as upstream (amd64). Adds a developer-guide section.

Co-Authored-By: Claude <noreply@anthropic.com>
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