From 8b2cc6a0cc09275b4fe056ff9331d2ceac1b95cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Belli?= Date: Sun, 19 Oct 2025 23:11:43 +0200 Subject: [PATCH 1/5] feat: rocm-7alpha --- .github/workflows/build_and_publish.yml | 2 +- .github/workflows/prune-old-toolboxes.yml | 2 +- toolboxes/Dockerfile.rocm-7alpha | 124 ++++++++++++++++++++ toolboxes/Dockerfile.rocm-7alpha-rocwmma | 131 ++++++++++++++++++++++ 4 files changed, 257 insertions(+), 2 deletions(-) create mode 100644 toolboxes/Dockerfile.rocm-7alpha create mode 100644 toolboxes/Dockerfile.rocm-7alpha-rocwmma diff --git a/.github/workflows/build_and_publish.yml b/.github/workflows/build_and_publish.yml index cb8e380..7c789fa 100644 --- a/.github/workflows/build_and_publish.yml +++ b/.github/workflows/build_and_publish.yml @@ -28,7 +28,7 @@ jobs: IN='${{ inputs.backends }}' if [[ "$IN" == "all" || -z "$IN" ]]; then - JSON='["rocm-6.4.4","rocm-6.4.4-rocwmma","rocm-7rc","rocm-7rc-rocwmma","vulkan-amdvlk","vulkan-radv"]' + JSON='["rocm-6.4.4","rocm-6.4.4-rocwmma","rocm-7alpha","rocm-7alpha-rocwmma","rocm-7rc","rocm-7rc-rocwmma","vulkan-amdvlk","vulkan-radv"]' else # Remove spaces and build JSON array from comma list IN_CLEAN=$(echo "$IN" | tr -d '[:space:]') diff --git a/.github/workflows/prune-old-toolboxes.yml b/.github/workflows/prune-old-toolboxes.yml index e3d0b33..43d71dd 100644 --- a/.github/workflows/prune-old-toolboxes.yml +++ b/.github/workflows/prune-old-toolboxes.yml @@ -44,7 +44,7 @@ jobs: run: | IN='${{ github.event.inputs.backends }}' if [[ "$IN" == "all" || -z "$IN" ]]; then - JSON='["rocm-6.4.2","rocm-6.4.2-rocwmma","rocm-6.4.3","rocm-6.4.3-rocwmma","rocm-6.4.4-rocwmma","rocm-7beta","rocm-7rc","rocm-7rc-rocwmma","rocm-7rc-rocwmma-fa_all_quants","vulkan-amdvlk","vulkan-radv"]' + JSON='["rocm-6.4.2","rocm-6.4.2-rocwmma","rocm-6.4.3","rocm-6.4.3-rocwmma","rocm-6.4.4-rocwmma","rocm-7beta","rocm-7alpha","rocm-7alpha-rocwmma","rocm-7rc","rocm-7rc-rocwmma","rocm-7rc-rocwmma-fa_all_quants","vulkan-amdvlk","vulkan-radv"]' else IN_CLEAN=$(echo "$IN" | tr -d '[:space:]') JSON='["'${IN_CLEAN//,/\",\"}'"]' diff --git a/toolboxes/Dockerfile.rocm-7alpha b/toolboxes/Dockerfile.rocm-7alpha new file mode 100644 index 0000000..b6bd81e --- /dev/null +++ b/toolboxes/Dockerfile.rocm-7alpha @@ -0,0 +1,124 @@ +# build +FROM registry.fedoraproject.org/fedora:rawhide AS builder + +RUN dnf -y --nodocs --setopt=install_weak_deps=False install \ + make gcc cmake lld clang clang-devel compiler-rt libcurl-devel \ + radeontop git vim patch curl ninja-build tar xz aria2c \ + && dnf clean all && rm -rf /var/cache/dnf/* + +# find & fetch the latest Linux 7.x.x tarball (gfx1151) +WORKDIR /tmp +ARG ROCM_MAJOR_VER=7 +ARG GFX=gfx1151 +RUN set -euo pipefail; \ + BASE="https://therock-nightly-tarball.s3.amazonaws.com"; \ + PREFIX="therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}"; \ + KEY="$(curl -s "${BASE}?list-type=2&prefix=${PREFIX}" \ + | tr '<' '\n' \ + | grep -o "therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}\..*\.tar\.gz" \ + | sort -V | tail -n1)"; \ + echo "Latest tarball: ${KEY}"; \ + aria2c -x 16 -s 16 -j 16 --file-allocation=none "${BASE}/${KEY}" -o therock.tar.gz +RUN mkdir -p /opt/rocm-7.0 \ + && tar xzf therock.tar.gz -C /opt/rocm-7.0 --strip-components=1 + +ENV ROCM_PATH=/opt/rocm-7.0 \ + HIP_PLATFORM=amd \ + HIP_PATH=/opt/rocm-7.0 \ + HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin \ + HIP_INCLUDE_PATH=/opt/rocm-7.0/include \ + HIP_LIB_PATH=/opt/rocm-7.0/lib \ + HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode \ + PATH=/opt/rocm-7.0/bin:/opt/rocm-7.0/llvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ + LD_LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64:/opt/rocm-7.0/llvm/lib \ + LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64 \ + CPATH=/opt/rocm-7.0/include \ + PKG_CONFIG_PATH=/opt/rocm-7.0/lib/pkgconfig + +RUN printf '%s\n' \ + 'export ROCM_PATH=/opt/rocm-7.0' \ + 'export HIP_PLATFORM=amd' \ + 'export HIP_PATH=/opt/rocm-7.0' \ + 'export HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin' \ + 'export HIP_INCLUDE_PATH=/opt/rocm-7.0/include' \ + 'export HIP_LIB_PATH=/opt/rocm-7.0/lib' \ + 'export HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode' \ + 'export PATH="$ROCM_PATH/bin:$HIP_CLANG_PATH:$PATH"' \ + 'export LD_LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64:$ROCM_PATH/llvm/lib"' \ + 'export LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64"' \ + 'export CPATH="$HIP_INCLUDE_PATH"' \ + 'export PKG_CONFIG_PATH="$ROCM_PATH/lib/pkgconfig"' \ + 'export ROCBLAS_USE_HIPBLASLT=1' \ + > /etc/profile.d/rocm.sh \ + && chmod +x /etc/profile.d/rocm.sh \ + && echo 'source /etc/profile.d/rocm.sh' >> /etc/bashrc + +WORKDIR /opt/llama.cpp +RUN git clone --recursive https://github.com/ggerganov/llama.cpp.git . \ + && git clean -xdf \ + && git submodule update --recursive + +RUN cmake -S . -B build \ + -DGGML_HIP=ON \ + -DAMDGPU_TARGETS=gfx1151 \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLAMA_HIP_UMA=ON \ + && cmake --build build --config Release -- -j$(nproc) \ + && cmake --install build --config Release + +# keep bin; drop headers/docs/static libs; drop source tree +RUN find /opt/rocm-7.0 -type f -name '*.a' -delete \ + && rm -rf /opt/rocm-7.0/include /opt/rocm-7.0/share \ + /opt/rocm-7.0/llvm/include /opt/rocm-7.0/llvm/share \ + && rm -rf /opt/llama.cpp + +# runtime +FROM registry.fedoraproject.org/fedora-minimal:rawhide + +RUN microdnf -y --nodocs --setopt=install_weak_deps=0 install \ + bash ca-certificates libatomic libstdc++ libgcc radeontop vim \ + && microdnf clean all && rm -rf /var/cache/dnf/* + +COPY --from=builder /opt/rocm-7.0 /opt/rocm-7.0 +COPY --from=builder /usr/local/ /usr/local/ + +COPY gguf-vram-estimator.py /usr/local/bin/ +RUN chmod +x /usr/local/bin/gguf-vram-estimator.py + +ENV ROCM_PATH=/opt/rocm-7.0 \ + HIP_PLATFORM=amd \ + HIP_PATH=/opt/rocm-7.0 \ + HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin \ + HIP_INCLUDE_PATH=/opt/rocm-7.0/include \ + HIP_LIB_PATH=/opt/rocm-7.0/lib \ + HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode \ + PATH=/opt/rocm-7.0/bin:/opt/rocm-7.0/llvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ + LD_LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64:/opt/rocm-7.0/llvm/lib \ + LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64 \ + CPATH=/opt/rocm-7.0/include \ + PKG_CONFIG_PATH=/opt/rocm-7.0/lib/pkgconfig + +RUN printf '%s\n' \ + 'export ROCM_PATH=/opt/rocm-7.0' \ + 'export HIP_PLATFORM=amd' \ + 'export HIP_PATH=/opt/rocm-7.0' \ + 'export HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin' \ + 'export HIP_INCLUDE_PATH=/opt/rocm-7.0/include' \ + 'export HIP_LIB_PATH=/opt/rocm-7.0/lib' \ + 'export HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode' \ + 'export PATH="$ROCM_PATH/bin:$HIP_CLANG_PATH:$PATH"' \ + 'export LD_LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64:$ROCM_PATH/llvm/lib"' \ + 'export LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64"' \ + 'export CPATH="$HIP_INCLUDE_PATH"' \ + 'export PKG_CONFIG_PATH="$ROCM_PATH/lib/pkgconfig"' \ + 'export ROCBLAS_USE_HIPBLASLT=1' \ + > /etc/profile.d/rocm.sh \ + && chmod +x /etc/profile.d/rocm.sh \ + && echo 'source /etc/profile.d/rocm.sh' >> /etc/bashrc + +# make /usr/local libs visible without touching env +RUN echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf \ + && echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf \ + && ldconfig + +CMD ["/bin/bash"] diff --git a/toolboxes/Dockerfile.rocm-7alpha-rocwmma b/toolboxes/Dockerfile.rocm-7alpha-rocwmma new file mode 100644 index 0000000..f99c8d6 --- /dev/null +++ b/toolboxes/Dockerfile.rocm-7alpha-rocwmma @@ -0,0 +1,131 @@ +# build +FROM registry.fedoraproject.org/fedora:rawhide AS builder + +RUN dnf -y --nodocs --setopt=install_weak_deps=False install \ + make gcc cmake lld clang clang-devel compiler-rt libcurl-devel \ + radeontop git vim patch curl ninja-build tar xz aria2c \ + && dnf clean all && rm -rf /var/cache/dnf/* + +# find & fetch the latest Linux 7.x.x tarball (gfx1151) +WORKDIR /tmp +ARG ROCM_MAJOR_VER=7 +ARG GFX=gfx1151 +RUN set -euo pipefail; \ + BASE="https://therock-nightly-tarball.s3.amazonaws.com"; \ + PREFIX="therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}"; \ + KEY="$(curl -s "${BASE}?list-type=2&prefix=${PREFIX}" \ + | tr '<' '\n' \ + | grep -o "therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}\..*\.tar\.gz" \ + | sort -V | tail -n1)"; \ + echo "Latest tarball: ${KEY}"; \ + aria2c -x 16 -s 16 -j 16 --file-allocation=none "${BASE}/${KEY}" -o therock.tar.gz +RUN mkdir -p /opt/rocm-7.0 \ + && tar xzf therock.tar.gz -C /opt/rocm-7.0 --strip-components=1 + +ENV ROCM_PATH=/opt/rocm-7.0 \ + HIP_PLATFORM=amd \ + HIP_PATH=/opt/rocm-7.0 \ + HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin \ + HIP_INCLUDE_PATH=/opt/rocm-7.0/include \ + HIP_LIB_PATH=/opt/rocm-7.0/lib \ + HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode \ + PATH=/opt/rocm-7.0/bin:/opt/rocm-7.0/llvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ + LD_LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64:/opt/rocm-7.0/llvm/lib \ + LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64 \ + CPATH=/opt/rocm-7.0/include \ + PKG_CONFIG_PATH=/opt/rocm-7.0/lib/pkgconfig + +RUN printf '%s\n' \ + 'export ROCM_PATH=/opt/rocm-7.0' \ + 'export HIP_PLATFORM=amd' \ + 'export HIP_PATH=/opt/rocm-7.0' \ + 'export HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin' \ + 'export HIP_INCLUDE_PATH=/opt/rocm-7.0/include' \ + 'export HIP_LIB_PATH=/opt/rocm-7.0/lib' \ + 'export HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode' \ + 'export PATH="$ROCM_PATH/bin:$HIP_CLANG_PATH:$PATH"' \ + 'export LD_LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64:$ROCM_PATH/llvm/lib"' \ + 'export LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64"' \ + 'export CPATH="$HIP_INCLUDE_PATH"' \ + 'export PKG_CONFIG_PATH="$ROCM_PATH/lib/pkgconfig"' \ + 'export ROCBLAS_USE_HIPBLASLT=1' \ + > /etc/profile.d/rocm.sh \ + && chmod +x /etc/profile.d/rocm.sh \ + && echo 'source /etc/profile.d/rocm.sh' >> /etc/bashrc + +WORKDIR /opt +COPY ./build-rocwmma.sh . +RUN chmod +x build-rocwmma.sh && ./build-rocwmma.sh + +WORKDIR /opt/llama.cpp +RUN git clone --recursive https://github.com/ggerganov/llama.cpp.git . \ + && git clean -xdf \ + && git submodule update --recursive +COPY ./apply-rocwmma-fix.sh /opt/apply-rocwmma-fix.sh +RUN chmod +x /opt/apply-rocwmma-fix.sh && /opt/apply-rocwmma-fix.sh /opt/llama.cpp + +RUN cmake -S . -B build \ + -DGGML_HIP=ON \ + -DAMDGPU_TARGETS=gfx1151 \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLAMA_HIP_UMA=ON \ + -DGGML_HIP_ROCWMMA_FATTN=ON \ + && cmake --build build --config Release -- -j$(nproc) \ + && cmake --install build --config Release + +# keep bin; drop headers/docs/static libs; drop source tree +RUN find /opt/rocm-7.0 -type f -name '*.a' -delete \ + && rm -rf /opt/rocm-7.0/include /opt/rocm-7.0/share \ + /opt/rocm-7.0/llvm/include /opt/rocm-7.0/llvm/share \ + && rm -rf /opt/llama.cpp + +# runtime +FROM registry.fedoraproject.org/fedora-minimal:rawhide + +RUN microdnf -y --nodocs --setopt=install_weak_deps=0 install \ + bash ca-certificates libatomic libstdc++ libgcc radeontop vim \ + && microdnf clean all && rm -rf /var/cache/dnf/* + +COPY --from=builder /opt/rocm-7.0 /opt/rocm-7.0 +COPY --from=builder /usr/local/ /usr/local/ + +COPY gguf-vram-estimator.py /usr/local/bin/ +RUN chmod +x /usr/local/bin/gguf-vram-estimator.py + +ENV ROCM_PATH=/opt/rocm-7.0 \ + HIP_PLATFORM=amd \ + HIP_PATH=/opt/rocm-7.0 \ + HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin \ + HIP_INCLUDE_PATH=/opt/rocm-7.0/include \ + HIP_LIB_PATH=/opt/rocm-7.0/lib \ + HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode \ + PATH=/opt/rocm-7.0/bin:/opt/rocm-7.0/llvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ + LD_LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64:/opt/rocm-7.0/llvm/lib \ + LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64 \ + CPATH=/opt/rocm-7.0/include \ + PKG_CONFIG_PATH=/opt/rocm-7.0/lib/pkgconfig + +RUN printf '%s\n' \ + 'export ROCM_PATH=/opt/rocm-7.0' \ + 'export HIP_PLATFORM=amd' \ + 'export HIP_PATH=/opt/rocm-7.0' \ + 'export HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin' \ + 'export HIP_INCLUDE_PATH=/opt/rocm-7.0/include' \ + 'export HIP_LIB_PATH=/opt/rocm-7.0/lib' \ + 'export HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode' \ + 'export PATH="$ROCM_PATH/bin:$HIP_CLANG_PATH:$PATH"' \ + 'export LD_LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64:$ROCM_PATH/llvm/lib"' \ + 'export LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64"' \ + 'export CPATH="$HIP_INCLUDE_PATH"' \ + 'export PKG_CONFIG_PATH="$ROCM_PATH/lib/pkgconfig"' \ + 'export ROCBLAS_USE_HIPBLASLT=1' \ + > /etc/profile.d/rocm.sh \ + && chmod +x /etc/profile.d/rocm.sh \ + && echo 'source /etc/profile.d/rocm.sh' >> /etc/bashrc + +# make /usr/local libs visible without touching env +RUN echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf \ + && echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf \ + && ldconfig + +CMD ["/bin/bash"] From 12fcfc54bac52076aac6593c761335779f579b1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Belli?= Date: Wed, 29 Oct 2025 09:10:42 +0100 Subject: [PATCH 2/5] feat: rocm-7alpha-rocwmma-improved --- .../Dockerfile.rocm-7alpha-rocwmma-improved | 137 ++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved diff --git a/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved b/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved new file mode 100644 index 0000000..49bd48d --- /dev/null +++ b/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved @@ -0,0 +1,137 @@ +# build +FROM registry.fedoraproject.org/fedora:rawhide AS builder + +RUN dnf -y --nodocs --setopt=install_weak_deps=False install \ + make gcc cmake lld clang clang-devel compiler-rt libcurl-devel \ + radeontop git vim patch curl ninja-build tar xz aria2c \ + && dnf clean all && rm -rf /var/cache/dnf/* + +# find & fetch the latest Linux 7.x.x tarball (gfx1151) +WORKDIR /tmp +ARG ROCM_MAJOR_VER=7 +ARG GFX=gfx1151 +RUN set -euo pipefail; \ + BASE="https://therock-nightly-tarball.s3.amazonaws.com"; \ + PREFIX="therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}"; \ + KEY="$(curl -s "${BASE}?list-type=2&prefix=${PREFIX}" \ + | tr '<' '\n' \ + | grep -o "therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}\..*\.tar\.gz" \ + | sort -V | tail -n1)"; \ + echo "Latest tarball: ${KEY}"; \ + aria2c -x 16 -s 16 -j 16 --file-allocation=none "${BASE}/${KEY}" -o therock.tar.gz +RUN mkdir -p /opt/rocm-7.0 \ + && tar xzf therock.tar.gz -C /opt/rocm-7.0 --strip-components=1 + +ENV ROCM_PATH=/opt/rocm-7.0 \ + HIP_PLATFORM=amd \ + HIP_PATH=/opt/rocm-7.0 \ + HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin \ + HIP_INCLUDE_PATH=/opt/rocm-7.0/include \ + HIP_LIB_PATH=/opt/rocm-7.0/lib \ + HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode \ + PATH=/opt/rocm-7.0/bin:/opt/rocm-7.0/llvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ + LD_LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64:/opt/rocm-7.0/llvm/lib \ + LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64 \ + CPATH=/opt/rocm-7.0/include \ + PKG_CONFIG_PATH=/opt/rocm-7.0/lib/pkgconfig + +RUN printf '%s\n' \ + 'export ROCM_PATH=/opt/rocm-7.0' \ + 'export HIP_PLATFORM=amd' \ + 'export HIP_PATH=/opt/rocm-7.0' \ + 'export HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin' \ + 'export HIP_INCLUDE_PATH=/opt/rocm-7.0/include' \ + 'export HIP_LIB_PATH=/opt/rocm-7.0/lib' \ + 'export HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode' \ + 'export PATH="$ROCM_PATH/bin:$HIP_CLANG_PATH:$PATH"' \ + 'export LD_LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64:$ROCM_PATH/llvm/lib"' \ + 'export LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64"' \ + 'export CPATH="$HIP_INCLUDE_PATH"' \ + 'export PKG_CONFIG_PATH="$ROCM_PATH/lib/pkgconfig"' \ + 'export ROCBLAS_USE_HIPBLASLT=1' \ + > /etc/profile.d/rocm.sh \ + && chmod +x /etc/profile.d/rocm.sh \ + && echo 'source /etc/profile.d/rocm.sh' >> /etc/bashrc + +WORKDIR /opt +COPY ./build-rocwmma.sh . +RUN chmod +x build-rocwmma.sh && ./build-rocwmma.sh + +WORKDIR /opt/llama.cpp +RUN git clone --recursive https://github.com/ggerganov/llama.cpp.git . \ + && git clean -xdf \ + && git submodule update --recursive +COPY ./apply-rocwmma-fix.sh /opt/apply-rocwmma-fix.sh +RUN chmod +x /opt/apply-rocwmma-fix.sh && /opt/apply-rocwmma-fix.sh /opt/llama.cpp + +# Download and apply the PR 16827 patch +RUN aria2c -x 16 -s 16 -j 16 --file-allocation=none \ + "https://github.com/ggml-org/llama.cpp/pull/16827.patch?full_index=1" \ + -o 16827.patch +RUN git apply 16827.patch + +RUN cmake -S . -B build \ + -DGGML_HIP=ON \ + -DAMDGPU_TARGETS=gfx1151 \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLAMA_HIP_UMA=ON \ + -DGGML_HIP_ROCWMMA_FATTN=ON \ + && cmake --build build --config Release -- -j$(nproc) \ + && cmake --install build --config Release + +# keep bin; drop headers/docs/static libs; drop source tree +RUN find /opt/rocm-7.0 -type f -name '*.a' -delete \ + && rm -rf /opt/rocm-7.0/include /opt/rocm-7.0/share \ + /opt/rocm-7.0/llvm/include /opt/rocm-7.0/llvm/share \ + && rm -rf /opt/llama.cpp + +# runtime +FROM registry.fedoraproject.org/fedora-minimal:rawhide + +RUN microdnf -y --nodocs --setopt=install_weak_deps=0 install \ + bash ca-certificates libatomic libstdc++ libgcc radeontop vim \ + && microdnf clean all && rm -rf /var/cache/dnf/* + +COPY --from=builder /opt/rocm-7.0 /opt/rocm-7.0 +COPY --from=builder /usr/local/ /usr/local/ + +COPY gguf-vram-estimator.py /usr/local/bin/ +RUN chmod +x /usr/local/bin/gguf-vram-estimator.py + +ENV ROCM_PATH=/opt/rocm-7.0 \ + HIP_PLATFORM=amd \ + HIP_PATH=/opt/rocm-7.0 \ + HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin \ + HIP_INCLUDE_PATH=/opt/rocm-7.0/include \ + HIP_LIB_PATH=/opt/rocm-7.0/lib \ + HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode \ + PATH=/opt/rocm-7.0/bin:/opt/rocm-7.0/llvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ + LD_LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64:/opt/rocm-7.0/llvm/lib \ + LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64 \ + CPATH=/opt/rocm-7.0/include \ + PKG_CONFIG_PATH=/opt/rocm-7.0/lib/pkgconfig + +RUN printf '%s\n' \ + 'export ROCM_PATH=/opt/rocm-7.0' \ + 'export HIP_PLATFORM=amd' \ + 'export HIP_PATH=/opt/rocm-7.0' \ + 'export HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin' \ + 'export HIP_INCLUDE_PATH=/opt/rocm-7.0/include' \ + 'export HIP_LIB_PATH=/opt/rocm-7.0/lib' \ + 'export HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode' \ + 'export PATH="$ROCM_PATH/bin:$HIP_CLANG_PATH:$PATH"' \ + 'export LD_LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64:$ROCM_PATH/llvm/lib"' \ + 'export LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64"' \ + 'export CPATH="$HIP_INCLUDE_PATH"' \ + 'export PKG_CONFIG_PATH="$ROCM_PATH/lib/pkgconfig"' \ + 'export ROCBLAS_USE_HIPBLASLT=1' \ + > /etc/profile.d/rocm.sh \ + && chmod +x /etc/profile.d/rocm.sh \ + && echo 'source /etc/profile.d/rocm.sh' >> /etc/bashrc + +# make /usr/local libs visible without touching env +RUN echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf \ + && echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf \ + && ldconfig + +CMD ["/bin/bash"] From 2e9ea4da70cb93ce61aad1c0e1cc3359c9c57e33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Belli?= Date: Wed, 29 Oct 2025 11:25:15 +0100 Subject: [PATCH 3/5] fix: use rocm-wmma-tune directly --- toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved b/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved index 49bd48d..9f0b64e 100644 --- a/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved +++ b/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved @@ -58,18 +58,12 @@ COPY ./build-rocwmma.sh . RUN chmod +x build-rocwmma.sh && ./build-rocwmma.sh WORKDIR /opt/llama.cpp -RUN git clone --recursive https://github.com/ggerganov/llama.cpp.git . \ +RUN git clone --recursive -b rocm-wmma-tune https://github.com/lhl/llama.cpp.git . \ && git clean -xdf \ && git submodule update --recursive COPY ./apply-rocwmma-fix.sh /opt/apply-rocwmma-fix.sh RUN chmod +x /opt/apply-rocwmma-fix.sh && /opt/apply-rocwmma-fix.sh /opt/llama.cpp -# Download and apply the PR 16827 patch -RUN aria2c -x 16 -s 16 -j 16 --file-allocation=none \ - "https://github.com/ggml-org/llama.cpp/pull/16827.patch?full_index=1" \ - -o 16827.patch -RUN git apply 16827.patch - RUN cmake -S . -B build \ -DGGML_HIP=ON \ -DAMDGPU_TARGETS=gfx1151 \ From dd3ef613269a08926a21275e26c4ce2dd5350a5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Belli?= Date: Sun, 9 Nov 2025 16:00:51 +0100 Subject: [PATCH 4/5] feat: align Dockerfile.rocm-7alpha-rocwmma to latest Dockerfile.rocm-7rc-rocwmma --- toolboxes/Dockerfile.rocm-7alpha-rocwmma | 9 ++------- toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved | 9 ++------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/toolboxes/Dockerfile.rocm-7alpha-rocwmma b/toolboxes/Dockerfile.rocm-7alpha-rocwmma index f99c8d6..3f3a795 100644 --- a/toolboxes/Dockerfile.rocm-7alpha-rocwmma +++ b/toolboxes/Dockerfile.rocm-7alpha-rocwmma @@ -68,17 +68,11 @@ RUN cmake -S . -B build \ -DGGML_HIP=ON \ -DAMDGPU_TARGETS=gfx1151 \ -DCMAKE_BUILD_TYPE=Release \ - -DLLAMA_HIP_UMA=ON \ + -DGGML_RPC=ON \ -DGGML_HIP_ROCWMMA_FATTN=ON \ && cmake --build build --config Release -- -j$(nproc) \ && cmake --install build --config Release -# keep bin; drop headers/docs/static libs; drop source tree -RUN find /opt/rocm-7.0 -type f -name '*.a' -delete \ - && rm -rf /opt/rocm-7.0/include /opt/rocm-7.0/share \ - /opt/rocm-7.0/llvm/include /opt/rocm-7.0/llvm/share \ - && rm -rf /opt/llama.cpp - # runtime FROM registry.fedoraproject.org/fedora-minimal:rawhide @@ -88,6 +82,7 @@ RUN microdnf -y --nodocs --setopt=install_weak_deps=0 install \ COPY --from=builder /opt/rocm-7.0 /opt/rocm-7.0 COPY --from=builder /usr/local/ /usr/local/ +COPY --from=builder /opt/llama.cpp/build/bin/rpc-* /usr/local/bin/ COPY gguf-vram-estimator.py /usr/local/bin/ RUN chmod +x /usr/local/bin/gguf-vram-estimator.py diff --git a/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved b/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved index 9f0b64e..bc57b30 100644 --- a/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved +++ b/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved @@ -68,17 +68,11 @@ RUN cmake -S . -B build \ -DGGML_HIP=ON \ -DAMDGPU_TARGETS=gfx1151 \ -DCMAKE_BUILD_TYPE=Release \ - -DLLAMA_HIP_UMA=ON \ + -DGGML_RPC=ON \ -DGGML_HIP_ROCWMMA_FATTN=ON \ && cmake --build build --config Release -- -j$(nproc) \ && cmake --install build --config Release -# keep bin; drop headers/docs/static libs; drop source tree -RUN find /opt/rocm-7.0 -type f -name '*.a' -delete \ - && rm -rf /opt/rocm-7.0/include /opt/rocm-7.0/share \ - /opt/rocm-7.0/llvm/include /opt/rocm-7.0/llvm/share \ - && rm -rf /opt/llama.cpp - # runtime FROM registry.fedoraproject.org/fedora-minimal:rawhide @@ -88,6 +82,7 @@ RUN microdnf -y --nodocs --setopt=install_weak_deps=0 install \ COPY --from=builder /opt/rocm-7.0 /opt/rocm-7.0 COPY --from=builder /usr/local/ /usr/local/ +COPY --from=builder /opt/llama.cpp/build/bin/rpc-* /usr/local/bin/ COPY gguf-vram-estimator.py /usr/local/bin/ RUN chmod +x /usr/local/bin/gguf-vram-estimator.py From 5e973c69d9c9ab13b65d7e0e138b4657783258ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Belli?= Date: Sun, 9 Nov 2025 16:05:48 +0100 Subject: [PATCH 5/5] feat: use hjc4869 llama.cpp port for Dockerfile.rocm-7alpha-rocwmma-improved --- toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved b/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved index bc57b30..b34dbf2 100644 --- a/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved +++ b/toolboxes/Dockerfile.rocm-7alpha-rocwmma-improved @@ -58,7 +58,7 @@ COPY ./build-rocwmma.sh . RUN chmod +x build-rocwmma.sh && ./build-rocwmma.sh WORKDIR /opt/llama.cpp -RUN git clone --recursive -b rocm-wmma-tune https://github.com/lhl/llama.cpp.git . \ +RUN git clone --recursive https://github.com/hjc4869/llama.cpp.git . \ && git clean -xdf \ && git submodule update --recursive COPY ./apply-rocwmma-fix.sh /opt/apply-rocwmma-fix.sh