mirror of
https://github.com/leejet/stable-diffusion.cpp.git
synced 2026-06-09 15:56:39 +00:00
ci: switch over ROCm builds to artifacts both for stable and preview releases (#1281)
This commit is contained in:
parent
38b14adb67
commit
839f6a94d2
126
.github/workflows/build.yml
vendored
126
.github/workflows/build.yml
vendored
@ -553,16 +553,22 @@ jobs:
|
|||||||
sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-rocm-x64.zip
|
sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-rocm-x64.zip
|
||||||
|
|
||||||
ubuntu-latest-rocm:
|
ubuntu-latest-rocm:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
container: rocm/dev-ubuntu-24.04:7.2
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
ROCM_VERSION: "7.2"
|
|
||||||
UBUNTU_VERSION: "24.04"
|
UBUNTU_VERSION: "24.04"
|
||||||
GPU_TARGETS: "gfx1151;gfx1150;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201"
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- ROCM_VERSION: "7.2.1"
|
||||||
|
gpu_targets: "gfx908;gfx90a;gfx942;gfx1030;gfx1031;gfx1032;gfx1100;gfx1101;gfx1102;gfx1151;gfx1150;gfx1200;gfx1201"
|
||||||
|
build: 'x64'
|
||||||
|
- ROCM_VERSION: "7.12.0"
|
||||||
|
gpu_targets: "gfx906;gfx908;gfx90a;gfx942;gfx950;gfx1100;gfx1101;gfx1102;gfx1150;gfx1151;gfx1200;gfx1201"
|
||||||
|
build: x64
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- run: apt-get update && apt-get install -y git
|
|
||||||
- name: Clone
|
- name: Clone
|
||||||
id: checkout
|
id: checkout
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
@ -579,6 +585,38 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
version: 10.15.1
|
version: 10.15.1
|
||||||
|
|
||||||
|
- name: ccache
|
||||||
|
uses: ggml-org/ccache-action@v1.2.16
|
||||||
|
with:
|
||||||
|
key: ubuntu-rocm-cmake-${{ matrix.ROCM_VERSION }}-${{ matrix.build }}
|
||||||
|
evict-old-files: 1d
|
||||||
|
|
||||||
|
- name: Dependencies
|
||||||
|
id: depends
|
||||||
|
run: |
|
||||||
|
sudo apt install -y build-essential cmake wget zip ninja-build
|
||||||
|
|
||||||
|
- name: Setup Legacy ROCm
|
||||||
|
if: matrix.ROCM_VERSION == '7.2.1'
|
||||||
|
id: legacy_env
|
||||||
|
run: |
|
||||||
|
sudo mkdir --parents --mode=0755 /etc/apt/keyrings
|
||||||
|
wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | \
|
||||||
|
gpg --dearmor | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null
|
||||||
|
|
||||||
|
sudo tee /etc/apt/sources.list.d/rocm.list << EOF
|
||||||
|
deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/${{ matrix.ROCM_VERSION }} noble main
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sudo tee /etc/apt/preferences.d/rocm-pin-600 << EOF
|
||||||
|
Package: *
|
||||||
|
Pin: release o=repo.radeon.com
|
||||||
|
Pin-Priority: 600
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sudo apt update
|
||||||
|
sudo apt-get install -y libssl-dev rocm-hip-sdk
|
||||||
|
|
||||||
- name: Free disk space
|
- name: Free disk space
|
||||||
run: |
|
run: |
|
||||||
# Remove preinstalled SDKs and caches not needed for this job
|
# Remove preinstalled SDKs and caches not needed for this job
|
||||||
@ -592,51 +630,17 @@ jobs:
|
|||||||
sudo rm -rf /var/lib/apt/lists/* || true
|
sudo rm -rf /var/lib/apt/lists/* || true
|
||||||
sudo apt clean
|
sudo apt clean
|
||||||
|
|
||||||
- name: Dependencies
|
- name: Setup TheRock
|
||||||
id: depends
|
if: matrix.ROCM_VERSION != '7.2.1'
|
||||||
|
id: therock_env
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
wget https://repo.amd.com/rocm/tarball/therock-dist-linux-gfx1151-${{ matrix.ROCM_VERSION }}.tar.gz
|
||||||
sudo apt install -y \
|
mkdir install
|
||||||
cmake \
|
tar -xf *.tar.gz -C install
|
||||||
hip-dev \
|
export ROCM_PATH=$(pwd)/install
|
||||||
hipblas-dev \
|
echo ROCM_PATH=$ROCM_PATH >> $GITHUB_ENV
|
||||||
ninja-build \
|
echo PATH=$PATH:$ROCM_PATH/bin >> $GITHUB_ENV
|
||||||
rocm-dev \
|
echo LD_LIBRARY_PATH=$ROCM_PATH/lib:$ROCM_PATH/llvm/lib:$ROCM_PATH/lib/rocprofiler-systems >> $GITHUB_ENV
|
||||||
zip
|
|
||||||
# Clean apt caches to recover disk space
|
|
||||||
sudo apt clean
|
|
||||||
sudo rm -rf /var/lib/apt/lists/* || true
|
|
||||||
|
|
||||||
- name: Setup ROCm Environment
|
|
||||||
run: |
|
|
||||||
# Add ROCm to PATH for current session
|
|
||||||
echo "/opt/rocm/bin" >> $GITHUB_PATH
|
|
||||||
|
|
||||||
# Build regex pattern from ${{ env.GPU_TARGETS }} (match target as substring)
|
|
||||||
TARGET_REGEX="($(printf '%s' "${{ env.GPU_TARGETS }}" | sed 's/;/|/g'))"
|
|
||||||
|
|
||||||
# Remove library files for architectures we're not building for to save disk space
|
|
||||||
echo "Cleaning up unneeded architecture files..."
|
|
||||||
cd /opt/rocm/lib/rocblas/library
|
|
||||||
# Keep only our target architectures
|
|
||||||
for file in *; do
|
|
||||||
if printf '%s' "$file" | grep -q 'gfx'; then
|
|
||||||
if ! printf '%s' "$file" | grep -Eq "$TARGET_REGEX"; then
|
|
||||||
echo "Removing $file" &&
|
|
||||||
sudo rm -f "$file";
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
cd /opt/rocm/lib/hipblaslt/library
|
|
||||||
for file in *; do
|
|
||||||
if printf '%s' "$file" | grep -q 'gfx'; then
|
|
||||||
if ! printf '%s' "$file" | grep -Eq "$TARGET_REGEX"; then
|
|
||||||
echo "Removing $file" &&
|
|
||||||
sudo rm -f "$file";
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
id: cmake_build
|
id: cmake_build
|
||||||
@ -644,12 +648,12 @@ jobs:
|
|||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -G Ninja \
|
cmake .. -G Ninja \
|
||||||
-DCMAKE_CXX_COMPILER=amdclang++ \
|
-DCMAKE_HIP_COMPILER="$(hipconfig -l)/clang" \
|
||||||
-DCMAKE_C_COMPILER=amdclang \
|
-DCMAKE_HIP_FLAGS="-mllvm --amdgpu-unroll-threshold-local=600" \
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
-DSD_HIPBLAS=ON \
|
-DSD_HIPBLAS=ON \
|
||||||
-DGPU_TARGETS="${{ env.GPU_TARGETS }}" \
|
-DHIP_PLATFORM=amd \
|
||||||
-DAMDGPU_TARGETS="${{ env.GPU_TARGETS }}" \
|
-DGPU_TARGETS="${{ matrix.gpu_targets }}" \
|
||||||
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
|
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
|
||||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
||||||
-DSD_BUILD_SHARED_LIBS=ON
|
-DSD_BUILD_SHARED_LIBS=ON
|
||||||
@ -668,16 +672,6 @@ jobs:
|
|||||||
cp ggml/LICENSE ./build/bin/ggml.txt
|
cp ggml/LICENSE ./build/bin/ggml.txt
|
||||||
cp LICENSE ./build/bin/stable-diffusion.cpp.txt
|
cp LICENSE ./build/bin/stable-diffusion.cpp.txt
|
||||||
|
|
||||||
# Move ROCm runtime libraries (to avoid double space consumption)
|
|
||||||
sudo mv /opt/rocm/lib/librocsparse.so* ./build/bin/
|
|
||||||
sudo mv /opt/rocm/lib/libhsa-runtime64.so* ./build/bin/
|
|
||||||
sudo mv /opt/rocm/lib/libamdhip64.so* ./build/bin/
|
|
||||||
sudo mv /opt/rocm/lib/libhipblas.so* ./build/bin/
|
|
||||||
sudo mv /opt/rocm/lib/libhipblaslt.so* ./build/bin/
|
|
||||||
sudo mv /opt/rocm/lib/librocblas.so* ./build/bin/
|
|
||||||
sudo mv /opt/rocm/lib/rocblas/ ./build/bin/
|
|
||||||
sudo mv /opt/rocm/lib/hipblaslt/ ./build/bin/
|
|
||||||
|
|
||||||
- name: Fetch system info
|
- name: Fetch system info
|
||||||
id: system-info
|
id: system-info
|
||||||
run: |
|
run: |
|
||||||
@ -692,15 +686,15 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cp ggml/LICENSE ./build/bin/ggml.txt
|
cp ggml/LICENSE ./build/bin/ggml.txt
|
||||||
cp LICENSE ./build/bin/stable-diffusion.cpp.txt
|
cp LICENSE ./build/bin/stable-diffusion.cpp.txt
|
||||||
zip -y -r sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-${{ steps.system-info.outputs.OS_TYPE }}-Ubuntu-${{ env.UBUNTU_VERSION }}-${{ steps.system-info.outputs.CPU_ARCH }}-rocm.zip ./build/bin
|
zip -y -r sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-${{ steps.system-info.outputs.OS_TYPE }}-Ubuntu-${{ env.UBUNTU_VERSION }}-${{ steps.system-info.outputs.CPU_ARCH }}-rocm-${{ matrix.ROCM_VERSION }}.zip ./build/bin
|
||||||
|
|
||||||
- name: Upload artifacts
|
- name: Upload artifacts
|
||||||
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-${{ steps.system-info.outputs.OS_TYPE }}-Ubuntu-${{ env.UBUNTU_VERSION }}-${{ steps.system-info.outputs.CPU_ARCH }}-rocm.zip
|
name: sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-${{ steps.system-info.outputs.OS_TYPE }}-Ubuntu-${{ env.UBUNTU_VERSION }}-${{ steps.system-info.outputs.CPU_ARCH }}-rocm-${{ matrix.ROCM_VERSION }}.zip
|
||||||
path: |
|
path: |
|
||||||
sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-${{ steps.system-info.outputs.OS_TYPE }}-Ubuntu-${{ env.UBUNTU_VERSION }}-${{ steps.system-info.outputs.CPU_ARCH }}-rocm.zip
|
sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-${{ steps.system-info.outputs.OS_TYPE }}-Ubuntu-${{ env.UBUNTU_VERSION }}-${{ steps.system-info.outputs.CPU_ARCH }}-rocm-${{ matrix.ROCM_VERSION }}.zip
|
||||||
|
|
||||||
release:
|
release:
|
||||||
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user