# build stage FROM registry.fedoraproject.org/fedora:rawhide AS builder # rocm 6.4.4 repo RUN <<'EOF' tee /etc/yum.repos.d/rocm.repo < /opt/llama.cpp/ggml/src/ggml-cuda/hip_shfl_fix.h <<'EOF' #ifndef HIP_SHFL_FIX_H #define HIP_SHFL_FIX_H #ifdef __HIP_PLATFORM_AMD__ #ifndef __shfl_sync #define __shfl_sync(mask,var,srcLane,width) __shfl((var),(srcLane),(width)) #endif #ifndef __shfl_up_sync #define __shfl_up_sync(mask,var,delta,width) __shfl_up((var),(delta),(width)) #endif #ifndef __shfl_xor_sync #define __shfl_xor_sync(mask,var,laneMask,width) __shfl_xor((var),(laneMask),(width)) #endif #endif #endif EOF && f=/opt/llama.cpp/ggml/src/ggml-cuda/mma.cuh \ && grep -q 'hip_shfl_fix.h' "$f" || sed -i '1i #include "hip_shfl_fix.h"' "$f" \ && cmake -S . -B build \ -DGGML_HIP=ON \ -DAMDGPU_TARGETS=gfx1151 \ -DCMAKE_BUILD_TYPE=Release \ -DLLAMA_HIP_UMA=ON \ -DGGML_HIP_ROCWMMA_FATTN=ON \ -DROCM_PATH=/opt/rocm \ -DHIP_PATH=/opt/rocm \ -DHIP_PLATFORM=amd \ -DCMAKE_HIP_FLAGS="--rocm-path=/opt/rocm" \ && cmake --build build --config Release -- -j"$(nproc)" \ && cmake --install build --config Release # libs RUN find /opt/llama.cpp/build -type f -name 'lib*.so*' -exec cp {} /usr/lib64/ \; \ && ldconfig # helper COPY gguf-vram-estimator.py /usr/local/bin/gguf-vram-estimator.py RUN chmod +x /usr/local/bin/gguf-vram-estimator.py # runtime stage FROM registry.fedoraproject.org/fedora-minimal:rawhide # rocm 6.4.3 repo RUN <<'EOF' tee /etc/yum.repos.d/rocm.repo < /etc/ld.so.conf.d/local.conf \ && echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf \ && ldconfig \ && cp -n /usr/local/lib/libllama*.so* /usr/lib64/ 2>/dev/null || true \ && ldconfig # helper COPY gguf-vram-estimator.py /usr/local/bin/gguf-vram-estimator.py RUN chmod +x /usr/local/bin/gguf-vram-estimator.py # profile RUN printf '%s\n' \ '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 # shell CMD ["/bin/bash"]