Added linux-vulkan #133
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: backends | ||
| on: | ||
| workflow_dispatch: | ||
| inputs: | ||
| version: | ||
| description: 'version' | ||
| required: true | ||
| type: string | ||
| commit: | ||
| description: 'sd.cpp commit' | ||
| required: true | ||
| type: string | ||
| jobs: | ||
| windows-cpu: | ||
| runs-on: windows-latest | ||
| strategy: | ||
| matrix: | ||
| include: | ||
| - build: 'noavx' | ||
| defines: '-DGGML_NATIVE=OFF -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DSD_BUILD_SHARED_LIBS=ON' | ||
| - build: 'avx' | ||
| defines: '-DGGML_NATIVE=OFF -DGGML_AVX2=OFF -DSD_BUILD_SHARED_LIBS=ON' | ||
| - build: 'avx2' | ||
| defines: '-DGGML_NATIVE=OFF -DGGML_AVX2=ON -DSD_BUILD_SHARED_LIBS=ON' | ||
| - build: 'avx512' | ||
| defines: '-DGGML_NATIVE=OFF -DGGML_AVX512=ON -DSD_BUILD_SHARED_LIBS=ON' | ||
| steps: | ||
| - name: Checkout | ||
| id: checkout | ||
| uses: actions/checkout@v4.2.2 | ||
| with: | ||
| repository: 'leejet/stable-diffusion.cpp' | ||
| ref: '${{ github.event.inputs.commit }}' | ||
| submodules: recursive | ||
| - name: Build | ||
| id: cmake_build | ||
| run: | | ||
| mkdir build | ||
| cd build | ||
| cmake .. ${{ matrix.defines }} | ||
| cmake --build . --config Release | ||
| - name: Upload artifact | ||
| id: upload_artifact | ||
| uses: actions/upload-artifact@v4.6.1 | ||
| with: | ||
| name: windows-${{ matrix.build }} | ||
| path: .\build\bin\Release\stable-diffusion.dll | ||
| windows-cuda12: | ||
| runs-on: windows-latest | ||
| steps: | ||
| - name: Checkout | ||
| id: checkout | ||
| uses: actions/checkout@v4.2.2 | ||
| with: | ||
| repository: 'leejet/stable-diffusion.cpp' | ||
| ref: '${{ github.event.inputs.commit }}' | ||
| submodules: recursive | ||
| - name: Install Cuda Toolkit 12.8 | ||
| id: cuda-12 | ||
| run: | | ||
| mkdir -p "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8" | ||
| choco install unzip -y | ||
| curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_cudart/windows-x86_64/cuda_cudart-windows-x86_64-12.8.57-archive.zip" | ||
| curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvcc/windows-x86_64/cuda_nvcc-windows-x86_64-12.8.61-archive.zip" | ||
| curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-12.8.61-archive.zip" | ||
| curl -O "https://developer.download.nvidia.com/compute/cuda/redist/libcublas/windows-x86_64/libcublas-windows-x86_64-12.8.3.14-archive.zip" | ||
| curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvtx/windows-x86_64/cuda_nvtx-windows-x86_64-12.8.55-archive.zip" | ||
| curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_profiler_api/windows-x86_64/cuda_profiler_api-windows-x86_64-12.8.55-archive.zip" | ||
| curl -O "https://developer.download.nvidia.com/compute/cuda/redist/visual_studio_integration/windows-x86_64/visual_studio_integration-windows-x86_64-12.8.55-archive.zip" | ||
| curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvprof/windows-x86_64/cuda_nvprof-windows-x86_64-12.8.57-archive.zip" | ||
| curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_cccl/windows-x86_64/cuda_cccl-windows-x86_64-12.8.55-archive.zip" | ||
| unzip '*.zip' -d "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8" | ||
| xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\cuda_cudart-windows-x86_64-12.8.57-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8" /E /I /H /Y | ||
| xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\cuda_nvcc-windows-x86_64-12.8.61-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8" /E /I /H /Y | ||
| xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\cuda_nvrtc-windows-x86_64-12.8.61-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8" /E /I /H /Y | ||
| xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\libcublas-windows-x86_64-12.8.3.14-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8" /E /I /H /Y | ||
| xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\cuda_nvtx-windows-x86_64-12.8.55-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8" /E /I /H /Y | ||
| xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\cuda_profiler_api-windows-x86_64-12.8.55-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8" /E /I /H /Y | ||
| xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\visual_studio_integration-windows-x86_64-12.8.55-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8" /E /I /H /Y | ||
| xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\cuda_nvprof-windows-x86_64-12.8.57-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8" /E /I /H /Y | ||
| xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\cuda_cccl-windows-x86_64-12.8.55-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8" /E /I /H /Y | ||
| xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\visual_studio_integration\MSBuildExtensions\*" "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\BuildCustomizations" /E /I /H /Y | ||
| echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | ||
| echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\libnvvp" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | ||
| echo "CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 | ||
| echo "CUDA_PATH_V12_8=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 | ||
| - name: Build | ||
| id: cmake_build | ||
| shell: cmd | ||
| run: | | ||
| mkdir build | ||
| cd build | ||
| call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | ||
| cmake .. -DSD_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="61;70;75;80;86;89;90;100;120" -DCMAKE_CUDA_FLAGS='-Xcudafe \"--diag_suppress=177\" -Xcudafe \"--diag_suppress=550\"'" -DSD_BUILD_SHARED_LIBS=ON | ||
| cmake --build . --config Release | ||
| - name: Upload artifact | ||
| id: upload_artifact | ||
| uses: actions/upload-artifact@v4.6.1 | ||
| with: | ||
| name: windows-cuda12 | ||
| path: .\build\bin\Release\stable-diffusion.dll | ||
| windows-hip: | ||
| runs-on: windows-latest | ||
| env: | ||
| HIPSDK_INSTALLER_VERSION: "25.Q3" | ||
| GPU_TARGETS: "gfx1151;gfx1200;gfx1201;gfx1100;gfx1101;gfx1102;gfx1030;gfx1031;gfx1032" | ||
| steps: | ||
| - name: Checkout | ||
| id: checkout | ||
| uses: actions/checkout@v4.2.2 | ||
| with: | ||
| repository: 'leejet/stable-diffusion.cpp' | ||
| ref: '${{ github.event.inputs.commit }}' | ||
| submodules: recursive | ||
| - name: Cache ROCm Installation | ||
| id: cache-rocm | ||
| uses: actions/cache@v4 | ||
| with: | ||
| path: C:\Program Files\AMD\ROCm | ||
| key: rocm-${{ env.HIPSDK_INSTALLER_VERSION }}-${{ runner.os }} | ||
| - name: ccache | ||
| uses: ggml-org/ccache-action@v1.2.16 | ||
| with: | ||
| key: windows-latest-cmake-hip-${{ env.HIPSDK_INSTALLER_VERSION }}-x64 | ||
| evict-old-files: 1d | ||
| - name: Install ROCm | ||
| if: steps.cache-rocm.outputs.cache-hit != 'true' | ||
| run: | | ||
| $ErrorActionPreference = "Stop" | ||
| write-host "Downloading AMD HIP SDK Installer" | ||
| Invoke-WebRequest -Uri "https://download.amd.com/developer/eula/rocm-hub/AMD-Software-PRO-Edition-${{ env.HIPSDK_INSTALLER_VERSION }}-WinSvr2022-For-HIP.exe" -OutFile "${env:RUNNER_TEMP}\rocm-install.exe" | ||
| write-host "Installing AMD HIP SDK" | ||
| $proc = Start-Process "${env:RUNNER_TEMP}\rocm-install.exe" -ArgumentList '-install' -NoNewWindow -PassThru | ||
| $completed = $proc.WaitForExit(600000) | ||
| if (-not $completed) { | ||
| Write-Error "ROCm installation timed out after 10 minutes. Killing the process" | ||
| $proc.Kill() | ||
| exit 1 | ||
| } | ||
| if ($proc.ExitCode -ne 0) { | ||
| Write-Error "ROCm installation failed with exit code $($proc.ExitCode)" | ||
| exit 1 | ||
| } | ||
| write-host "Completed AMD HIP SDK installation" | ||
| - name: Verify ROCm | ||
| run: | | ||
| # Find and test ROCm installation | ||
| $clangPath = Get-ChildItem 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | Select-Object -First 1 | ||
| if (-not $clangPath) { | ||
| Write-Error "ROCm installation not found" | ||
| exit 1 | ||
| } | ||
| & $clangPath.FullName --version | ||
| # Set HIP_PATH environment variable for later steps | ||
| echo "HIP_PATH=$(Resolve-Path 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | split-path | split-path)" >> $env:GITHUB_ENV | ||
| - name: Build | ||
| run: | | ||
| mkdir build | ||
| cd build | ||
| $env:CMAKE_PREFIX_PATH="${env:HIP_PATH}" | ||
| cmake .. ` | ||
| -G "Unix Makefiles" ` | ||
| -DSD_HIPBLAS=ON ` | ||
| -DSD_BUILD_SHARED_LIBS=ON ` | ||
| -DGGML_NATIVE=OFF ` | ||
| -DCMAKE_C_COMPILER=clang ` | ||
| -DCMAKE_CXX_COMPILER=clang++ ` | ||
| -DCMAKE_BUILD_TYPE=Release ` | ||
| -DGPU_TARGETS="${{ env.GPU_TARGETS }}" | ||
| cmake --build . --config Release --parallel ${env:NUMBER_OF_PROCESSORS} | ||
| - name: Upload artifact | ||
| id: upload_artifact | ||
| uses: actions/upload-artifact@v4.6.1 | ||
| with: | ||
| name: windows-rocm6 | ||
| path: .\build\bin\stable-diffusion.dll | ||
| windows-vulkan: | ||
| runs-on: windows-latest | ||
| env: | ||
| VULKAN_VERSION: 1.4.328.1 | ||
| steps: | ||
| - name: Checkout | ||
| id: checkout | ||
| uses: actions/checkout@v4.2.2 | ||
| with: | ||
| repository: 'leejet/stable-diffusion.cpp' | ||
| ref: '${{ github.event.inputs.commit }}' | ||
| submodules: recursive | ||
| - name: Install Vulkan SDK | ||
| id: get_vulkan | ||
| run: | | ||
| curl.exe -o $env:RUNNER_TEMP/VulkanSDK-Installer.exe -L "https://sdk.lunarg.com/sdk/download/${env:VULKAN_VERSION}/windows/vulkansdk-windows-X64-${env:VULKAN_VERSION}.exe" | ||
| & "$env:RUNNER_TEMP\VulkanSDK-Installer.exe" --accept-licenses --default-answer --confirm-command install | ||
| Add-Content $env:GITHUB_ENV "VULKAN_SDK=C:\VulkanSDK\${env:VULKAN_VERSION}" | ||
| Add-Content $env:GITHUB_PATH "C:\VulkanSDK\${env:VULKAN_VERSION}\bin" | ||
| - name: Build | ||
| id: cmake_build | ||
| run: | | ||
| mkdir build | ||
| cd build | ||
| cmake .. -DSD_VULKAN=ON -DSD_BUILD_SHARED_LIBS=ON | ||
| cmake --build . --config Release | ||
| - name: Upload artifact | ||
| id: upload_artifact | ||
| uses: actions/upload-artifact@v4.6.1 | ||
| with: | ||
| name: windows-vulkan | ||
| path: .\build\bin\Release\stable-diffusion.dll | ||
| linux-cpu: | ||
| runs-on: ubuntu-latest | ||
| strategy: | ||
| matrix: | ||
| include: | ||
| - build: 'noavx' | ||
| defines: '-DGGML_NATIVE=OFF -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DSD_BUILD_SHARED_LIBS=ON' | ||
| - build: 'avx' | ||
| defines: '-DGGML_NATIVE=OFF -DGGML_AVX2=OFF -DSD_BUILD_SHARED_LIBS=ON' | ||
| - build: 'avx2' | ||
| defines: '-DGGML_NATIVE=OFF -DGGML_AVX2=ON -DSD_BUILD_SHARED_LIBS=ON' | ||
| - build: 'avx512' | ||
| defines: '-DGGML_NATIVE=OFF -DGGML_AVX512=ON -DSD_BUILD_SHARED_LIBS=ON' | ||
| steps: | ||
| - name: Checkout | ||
| id: checkout | ||
| uses: actions/checkout@v4.2.2 | ||
| with: | ||
| repository: 'leejet/stable-diffusion.cpp' | ||
| ref: '${{ github.event.inputs.commit }}' | ||
| submodules: recursive | ||
| - name: Dependencies | ||
| id: depends | ||
| run: | | ||
| sudo apt-get update | ||
| sudo apt-get install build-essential | ||
| - name: Build | ||
| id: cmake_build | ||
| run: | | ||
| mkdir build | ||
| cd build | ||
| cmake .. ${{ matrix.defines }} | ||
| cmake --build . --config Release | ||
| - name: Upload artifact | ||
| id: upload_artifact | ||
| uses: actions/upload-artifact@v4.6.1 | ||
| with: | ||
| name: linux-${{ matrix.build }} | ||
| path: ./build/bin/libstable-diffusion.so | ||
| linux-vulkan: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Checkout | ||
| id: checkout | ||
| uses: actions/checkout@v4.2.2 | ||
| with: | ||
| repository: 'leejet/stable-diffusion.cpp' | ||
| ref: '${{ github.event.inputs.commit }}' | ||
| submodules: recursive | ||
| - name: Dependencies | ||
| id: depends | ||
| run: | | ||
| sudo apt-get update | ||
| sudo apt-get install build-essential libvulkan-dev glslc | ||
| - name: Build | ||
| id: cmake_build | ||
| run: | | ||
| mkdir build | ||
| cd build | ||
| cmake .. -DSD_BUILD_SHARED_LIBS=ON -DSD_VULKAN=ON | ||
| cmake --build . --config Release | ||
| - name: Upload artifact | ||
| id: upload_artifact | ||
| uses: actions/upload-artifact@v4.6.1 | ||
| with: | ||
| name: linux-vulkan | ||
| path: ./build/bin/libstable-diffusion.so | ||
| linux-cuda12: | ||
| runs-on: ubuntu-latest | ||
| container: nvidia/cuda:12.8.0-devel-ubuntu24.04 | ||
| steps: | ||
| - name: Install dependencies | ||
| env: | ||
| DEBIAN_FRONTEND: noninteractive | ||
| run: | | ||
| apt update | ||
| apt install -y cmake build-essential ninja-build libgomp1 git | ||
| - name: Checkout | ||
| id: checkout | ||
| uses: actions/checkout@v4.2.2 | ||
| with: | ||
| repository: 'leejet/stable-diffusion.cpp' | ||
| ref: '${{ github.event.inputs.commit }}' | ||
| submodules: recursive | ||
| - name: Build | ||
| id: cmake_build | ||
| run: | | ||
| mkdir build | ||
| cd build | ||
| cmake .. -DSD_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="61;75;86;89;100" -DSD_BUILD_SHARED_LIBS=ON | ||
| cmake --build . --config Release | ||
| - name: Upload artifact | ||
| id: upload_artifact | ||
| uses: actions/upload-artifact@v4.6.1 | ||
| with: | ||
| name: linux-cuda12 | ||
| path: ./build/bin/libstable-diffusion.so | ||
| linux-sycl: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Checkout | ||
| id: checkout | ||
| uses: actions/checkout@v4.2.2 | ||
| with: | ||
| repository: 'leejet/stable-diffusion.cpp' | ||
| ref: '${{ github.event.inputs.commit }}' | ||
| submodules: recursive | ||
| - name: Install Sycl tools | ||
| id: installSyclCompiler | ||
| shell: bash | ||
| run: | | ||
| cd /tmp | ||
| wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | ||
| sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | ||
| rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | ||
| sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main" | ||
| sudo apt update | ||
| sudo apt install intel-oneapi-compiler-dpcpp-cpp intel-oneapi-mkl-devel | ||
| - name: Build | ||
| id: cmake_build | ||
| run: | | ||
| source /opt/intel/oneapi/setvars.sh | ||
| mkdir build | ||
| cd build | ||
| cmake .. -DSD_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DSD_BUILD_SHARED_LIBS=ON | ||
| cmake --build . --config Release | ||
| - name: Upload artifact | ||
| id: upload_artifact | ||
| uses: actions/upload-artifact@v4.6.1 | ||
| with: | ||
| name: linux-sycl | ||
| path: ./build/bin/libstable-diffusion.so | ||
| linux-hip: | ||
| runs-on: ubuntu-latest | ||
| container: rocm/dev-ubuntu-24.04:7.2 | ||
| env: | ||
| ROCM_VERSION: "7.2" | ||
| UBUNTU_VERSION: "24.04" | ||
| GPU_TARGETS: "gfx1151;gfx1150;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201" | ||
| steps: | ||
| - run: apt-get update && apt-get install -y git | ||
| - name: Clone | ||
| id: checkout | ||
| uses: actions/checkout@v6 | ||
| with: | ||
| submodules: recursive | ||
| - name: Free disk space | ||
| run: | | ||
| # Remove preinstalled SDKs and caches not needed for this job | ||
| sudo rm -rf /usr/share/dotnet || true | ||
| sudo rm -rf /usr/local/lib/android || true | ||
| sudo rm -rf /opt/ghc || true | ||
| sudo rm -rf /usr/local/.ghcup || true | ||
| sudo rm -rf /opt/hostedtoolcache || true | ||
| # Remove old package lists and caches | ||
| sudo rm -rf /var/lib/apt/lists/* || true | ||
| sudo apt clean | ||
| - name: Dependencies | ||
| id: depends | ||
| run: | | ||
| sudo apt-get update | ||
| sudo apt install -y \ | ||
| cmake \ | ||
| hip-dev \ | ||
| hipblas-dev \ | ||
| ninja-build \ | ||
| rocm-dev \ | ||
| 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 | ||
| id: cmake_build | ||
| run: | | ||
| mkdir build | ||
| cd build | ||
| cmake .. -G Ninja \ | ||
| -DCMAKE_CXX_COMPILER=amdclang++ \ | ||
| -DCMAKE_C_COMPILER=amdclang \ | ||
| -DCMAKE_BUILD_TYPE=Release \ | ||
| -DSD_HIPBLAS=ON \ | ||
| -DGPU_TARGETS="${{ env.GPU_TARGETS }}" \ | ||
| -DAMDGPU_TARGETS="${{ env.GPU_TARGETS }}" \ | ||
| -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ | ||
| -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ | ||
| -DSD_BUILD_SHARED_LIBS=ON | ||
| cmake --build . --config Release | ||
| - name: Upload artifact Rocm | ||
| id: upload_artifact_rocm | ||
| uses: actions/upload-artifact@v4.6.1 | ||
| with: | ||
| name: linux-rocm6 | ||
| path: ./build/bin/libstable-diffusion.so | ||
| osx-cpu: | ||
| runs-on: macos-latest | ||
| strategy: | ||
| matrix: | ||
| include: | ||
| - build: 'noavx' | ||
| defines: '-DGGML_NATIVE=OFF -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DSD_BUILD_SHARED_LIBS=ON' | ||
| - build: 'avx' | ||
| defines: '-DGGML_NATIVE=OFF -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DGGML_AVX2=OFF -DSD_BUILD_SHARED_LIBS=ON' | ||
| - build: 'avx2' | ||
| defines: '-DGGML_NATIVE=OFF -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DGGML_AVX2=ON -DSD_BUILD_SHARED_LIBS=ON' | ||
| - build: 'avx512' | ||
| defines: '-DGGML_NATIVE=OFF -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DGGML_AVX512=ON -DSD_BUILD_SHARED_LIBS=ON' | ||
| steps: | ||
| - name: Checkout | ||
| id: checkout | ||
| uses: actions/checkout@v4.2.2 | ||
| with: | ||
| repository: 'leejet/stable-diffusion.cpp' | ||
| ref: '${{ github.event.inputs.commit }}' | ||
| submodules: recursive | ||
| - name: Build | ||
| id: cmake_build | ||
| run: | | ||
| mkdir build | ||
| cd build | ||
| cmake .. ${{ matrix.defines }} | ||
| cmake --build . --config Release | ||
| - name: Upload artifact | ||
| id: upload_artifact | ||
| uses: actions/upload-artifact@v4.6.1 | ||
| with: | ||
| name: osx-${{ matrix.build }} | ||
| path: ./build/bin/libstable-diffusion.dylib | ||
| release: | ||
| runs-on: windows-latest | ||
| needs: | ||
| - windows-cpu | ||
| - windows-cuda12 | ||
| # - windows-sycl | ||
| - windows-hip | ||
| - windows-vulkan | ||
| - linux-cpu | ||
| - linux-wulkan | ||
| - linux-cuda12 | ||
| - linux-sycl | ||
| - linux-hip | ||
| - osx-cpu | ||
| steps: | ||
| - name: Checkout | ||
| id: checkout | ||
| uses: actions/checkout@v4.2.2 | ||
| - name: Download artifacts | ||
| id: download_artifacts | ||
| uses: actions/download-artifact@v4.1.9 | ||
| with: | ||
| path: Backends | ||
| - name: Display structure of downloaded files | ||
| run: ls -R | ||
| - name: Setup nuget | ||
| id: setup_nuget | ||
| uses: NuGet/setup-nuget@v2.0.1 | ||
| - name: Pack | ||
| id: pack | ||
| run: | | ||
| nuget pack ./Backends/StableDiffusion.NET.Backend.Cpu.nuspec -version ${{ github.event.inputs.version }} | ||
| nuget pack ./Backends/StableDiffusion.NET.Backend.Cuda12.Windows.nuspec -version ${{ github.event.inputs.version }} | ||
| nuget pack ./Backends/StableDiffusion.NET.Backend.Cuda12.Linux.nuspec -version ${{ github.event.inputs.version }} | ||
| nuget pack ./Backends/StableDiffusion.NET.Backend.Cuda.nuspec -version ${{ github.event.inputs.version }} | ||
| nuget pack ./Backends/StableDiffusion.NET.Backend.Rocm.nuspec -version ${{ github.event.inputs.version }} | ||
| nuget pack ./Backends/StableDiffusion.NET.Backend.Vulkan.nuspec -version ${{ github.event.inputs.version }} | ||
| - name: Upload artifacts | ||
| id: upload_artifacts | ||
| uses: actions/upload-artifact@v4.6.1 | ||
| with: | ||
| name: StableDiffusion.NET.Backend-Nugets | ||
| path: ./*.nupkg | ||
| - name: Nuget Push | ||
| id: nuget_push | ||
| run: dotnet nuget push **\*.nupkg --skip-duplicate --api-key ${{ secrets.NUGET_TOKEN }} --source https://api.nuget.org/v3/index.json | ||