Build AMD GPU operator images for ppc64le - #565
Conversation
Signed-off-by: Amulyam24 <amulmek1@in.ibm.com>
|
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:
Thanks |
Hi @yansun1996, This PR has been raised in a effort to support heterogenous computing with AMD GPUs for IBM Power(ppc64le).
Deployed the GPU operator on a single node K8s cluster on a machine with 2 AMD MI210 GPUS
Host OS: Linux ppc64le
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! |
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>
…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>
…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>
…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>
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