Skip to content

Commit 6ce1b44

Browse files
committed
feat: rocm-7alpha-rocwmma-improved
1 parent 013aff5 commit 6ce1b44

1 file changed

Lines changed: 135 additions & 0 deletions

File tree

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
# build
2+
FROM registry.fedoraproject.org/fedora:rawhide AS builder
3+
4+
RUN dnf -y --nodocs --setopt=install_weak_deps=False install \
5+
make gcc cmake lld clang clang-devel compiler-rt libcurl-devel \
6+
radeontop git vim patch curl ninja-build tar xz aria2c \
7+
&& dnf clean all && rm -rf /var/cache/dnf/*
8+
9+
# find & fetch the latest Linux 7.x.x tarball (gfx1151)
10+
WORKDIR /tmp
11+
ARG ROCM_MAJOR_VER=7
12+
ARG GFX=gfx1151
13+
RUN set -euo pipefail; \
14+
BASE="https://therock-nightly-tarball.s3.amazonaws.com"; \
15+
PREFIX="therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}"; \
16+
KEY="$(curl -s "${BASE}?list-type=2&prefix=${PREFIX}" \
17+
| tr '<' '\n' \
18+
| grep -o "therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}\..*\.tar\.gz" \
19+
| sort -V | tail -n1)"; \
20+
echo "Latest tarball: ${KEY}"; \
21+
aria2c -x 16 -s 16 -j 16 --file-allocation=none "${BASE}/${KEY}" -o therock.tar.gz
22+
RUN mkdir -p /opt/rocm-7.0 \
23+
&& tar xzf therock.tar.gz -C /opt/rocm-7.0 --strip-components=1
24+
25+
ENV ROCM_PATH=/opt/rocm-7.0 \
26+
HIP_PLATFORM=amd \
27+
HIP_PATH=/opt/rocm-7.0 \
28+
HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin \
29+
HIP_INCLUDE_PATH=/opt/rocm-7.0/include \
30+
HIP_LIB_PATH=/opt/rocm-7.0/lib \
31+
HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode \
32+
PATH=/opt/rocm-7.0/bin:/opt/rocm-7.0/llvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
33+
LD_LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64:/opt/rocm-7.0/llvm/lib \
34+
LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64 \
35+
CPATH=/opt/rocm-7.0/include \
36+
PKG_CONFIG_PATH=/opt/rocm-7.0/lib/pkgconfig
37+
38+
RUN printf '%s\n' \
39+
'export ROCM_PATH=/opt/rocm-7.0' \
40+
'export HIP_PLATFORM=amd' \
41+
'export HIP_PATH=/opt/rocm-7.0' \
42+
'export HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin' \
43+
'export HIP_INCLUDE_PATH=/opt/rocm-7.0/include' \
44+
'export HIP_LIB_PATH=/opt/rocm-7.0/lib' \
45+
'export HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode' \
46+
'export PATH="$ROCM_PATH/bin:$HIP_CLANG_PATH:$PATH"' \
47+
'export LD_LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64:$ROCM_PATH/llvm/lib"' \
48+
'export LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64"' \
49+
'export CPATH="$HIP_INCLUDE_PATH"' \
50+
'export PKG_CONFIG_PATH="$ROCM_PATH/lib/pkgconfig"' \
51+
'export ROCBLAS_USE_HIPBLASLT=1' \
52+
> /etc/profile.d/rocm.sh \
53+
&& chmod +x /etc/profile.d/rocm.sh \
54+
&& echo 'source /etc/profile.d/rocm.sh' >> /etc/bashrc
55+
56+
WORKDIR /opt
57+
COPY ./build-rocwmma.sh .
58+
RUN chmod +x build-rocwmma.sh && ./build-rocwmma.sh
59+
60+
WORKDIR /opt/llama.cpp
61+
RUN git clone --recursive https://github.com/ggerganov/llama.cpp.git . \
62+
&& git clean -xdf \
63+
&& git submodule update --recursive
64+
65+
# Download and apply the PR 16827 patch
66+
RUN aria2c -x 16 -s 16 -j 16 --file-allocation=none \
67+
"https://github.com/ggml-org/llama.cpp/pull/16827.patch?full_index=1" \
68+
-o 16827.patch
69+
RUN git apply 16827.patch
70+
71+
RUN cmake -S . -B build \
72+
-DGGML_HIP=ON \
73+
-DAMDGPU_TARGETS=gfx1151 \
74+
-DCMAKE_BUILD_TYPE=Release \
75+
-DLLAMA_HIP_UMA=ON \
76+
-DGGML_HIP_ROCWMMA_FATTN=ON \
77+
&& cmake --build build --config Release -- -j$(nproc) \
78+
&& cmake --install build --config Release
79+
80+
# keep bin; drop headers/docs/static libs; drop source tree
81+
RUN find /opt/rocm-7.0 -type f -name '*.a' -delete \
82+
&& rm -rf /opt/rocm-7.0/include /opt/rocm-7.0/share \
83+
/opt/rocm-7.0/llvm/include /opt/rocm-7.0/llvm/share \
84+
&& rm -rf /opt/llama.cpp
85+
86+
# runtime
87+
FROM registry.fedoraproject.org/fedora-minimal:rawhide
88+
89+
RUN microdnf -y --nodocs --setopt=install_weak_deps=0 install \
90+
bash ca-certificates libatomic libstdc++ libgcc radeontop vim \
91+
&& microdnf clean all && rm -rf /var/cache/dnf/*
92+
93+
COPY --from=builder /opt/rocm-7.0 /opt/rocm-7.0
94+
COPY --from=builder /usr/local/ /usr/local/
95+
96+
COPY gguf-vram-estimator.py /usr/local/bin/
97+
RUN chmod +x /usr/local/bin/gguf-vram-estimator.py
98+
99+
ENV ROCM_PATH=/opt/rocm-7.0 \
100+
HIP_PLATFORM=amd \
101+
HIP_PATH=/opt/rocm-7.0 \
102+
HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin \
103+
HIP_INCLUDE_PATH=/opt/rocm-7.0/include \
104+
HIP_LIB_PATH=/opt/rocm-7.0/lib \
105+
HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode \
106+
PATH=/opt/rocm-7.0/bin:/opt/rocm-7.0/llvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
107+
LD_LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64:/opt/rocm-7.0/llvm/lib \
108+
LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64 \
109+
CPATH=/opt/rocm-7.0/include \
110+
PKG_CONFIG_PATH=/opt/rocm-7.0/lib/pkgconfig
111+
112+
RUN printf '%s\n' \
113+
'export ROCM_PATH=/opt/rocm-7.0' \
114+
'export HIP_PLATFORM=amd' \
115+
'export HIP_PATH=/opt/rocm-7.0' \
116+
'export HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin' \
117+
'export HIP_INCLUDE_PATH=/opt/rocm-7.0/include' \
118+
'export HIP_LIB_PATH=/opt/rocm-7.0/lib' \
119+
'export HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode' \
120+
'export PATH="$ROCM_PATH/bin:$HIP_CLANG_PATH:$PATH"' \
121+
'export LD_LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64:$ROCM_PATH/llvm/lib"' \
122+
'export LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64"' \
123+
'export CPATH="$HIP_INCLUDE_PATH"' \
124+
'export PKG_CONFIG_PATH="$ROCM_PATH/lib/pkgconfig"' \
125+
'export ROCBLAS_USE_HIPBLASLT=1' \
126+
> /etc/profile.d/rocm.sh \
127+
&& chmod +x /etc/profile.d/rocm.sh \
128+
&& echo 'source /etc/profile.d/rocm.sh' >> /etc/bashrc
129+
130+
# make /usr/local libs visible without touching env
131+
RUN echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf \
132+
&& echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf \
133+
&& ldconfig
134+
135+
CMD ["/bin/bash"]

0 commit comments

Comments
 (0)