backends #4
This file contains 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: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
include: | |
- build: 'noavx' | |
defines: '-DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DSD_BUILD_SHARED_LIBS=ON' | |
- build: 'avx' | |
defines: '-DGGML_AVX2=OFF -DSD_BUILD_SHARED_LIBS=ON' | |
- build: 'avx2' | |
defines: '-DGGML_AVX2=ON -DSD_BUILD_SHARED_LIBS=ON' | |
- build: 'avx512' | |
defines: '-DGGML_AVX512=ON -DSD_BUILD_SHARED_LIBS=ON' | |
- build: 'cuda11' | |
defines: '-DSD_CUBLAS=ON -DSD_BUILD_SHARED_LIBS=ON' | |
- build: 'cuda12' | |
defines: '-DSD_CUBLAS=ON -DSD_BUILD_SHARED_LIBS=ON' | |
- build: 'rocm5' | |
defines: '-G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DSD_HIPBLAS=ON -DCMAKE_BUILD_TYPE=Release -DAMDGPU_TARGETS="gfx1100;gfx1102;gfx1030" -DSD_BUILD_SHARED_LIBS=ON' | |
steps: | |
- name: Checkout | |
id: checkout | |
uses: actions/[email protected] | |
with: | |
repository: 'leejet/stable-diffusion.cpp' | |
ref: '${{ github.event.inputs.commit }}' | |
submodules: recursive | |
- name: Install cuda-toolkit | |
id: cuda-toolkit-11 | |
if: ${{ matrix.build == 'cuda11' }} | |
uses: Jimver/[email protected] | |
with: | |
cuda: '11.7.1' | |
method: network | |
sub-packages: '["nvcc", "cudart", "cublas", "cublas_dev", "thrust", "visual_studio_integration"]' | |
- name: Install cuda-toolkit | |
id: cuda-toolkit-12 | |
if: ${{ matrix.build == 'cuda12' }} | |
uses: Jimver/[email protected] | |
with: | |
cuda: '12.2.0' | |
method: network | |
sub-packages: '["nvcc", "cudart", "cublas", "cublas_dev", "thrust", "visual_studio_integration"]' | |
- name: Install rocm-toolkit | |
id: rocm-toolkit | |
if: ${{ matrix.build == 'rocm5' }} | |
uses: Cyberhan123/[email protected] | |
with: | |
rocm: '5.5.0' | |
- name: Install Ninja | |
id: install-ninja | |
if: ${{ matrix.build == 'rocm5' }} | |
uses: urkle/action-get-ninja@v1 | |
with: | |
version: 1.11.1 | |
- name: Build | |
id: cmake_build | |
run: | | |
mkdir build | |
cd build | |
cmake .. ${{ matrix.defines }} | |
cmake --build . --config Release | |
- name: Upload artifact | |
id: upload_artifact | |
if: ${{ matrix.build != 'rocm5' }} | |
uses: actions/[email protected] | |
with: | |
name: windows-${{ matrix.build }} | |
path: .\build\bin\Release\stable-diffusion.dll | |
- name: Upload artifact Rocm | |
id: upload_artifact_rocm | |
if: ${{ matrix.build == 'rocm5' }} | |
uses: actions/[email protected] | |
with: | |
name: windows-${{ matrix.build }} | |
path: .\build\bin\stable-diffusion.dll | |
linux: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
include: | |
- build: 'noavx' | |
defines: '-DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DSD_BUILD_SHARED_LIBS=ON' | |
- build: 'avx' | |
defines: '-DGGML_AVX2=OFF -DSD_BUILD_SHARED_LIBS=ON' | |
- build: 'avx2' | |
defines: '-DGGML_AVX2=ON -DSD_BUILD_SHARED_LIBS=ON' | |
- build: 'avx512' | |
defines: '-DGGML_AVX512=ON -DSD_BUILD_SHARED_LIBS=ON' | |
- build: 'cuda11' | |
defines: '-DSD_CUBLAS=ON -DSD_BUILD_SHARED_LIBS=ON' | |
- build: 'cuda12' | |
defines: '-DSD_CUBLAS=ON -DSD_BUILD_SHARED_LIBS=ON' | |
steps: | |
- name: Checkout | |
id: checkout | |
uses: actions/[email protected] | |
with: | |
repository: 'leejet/stable-diffusion.cpp' | |
ref: '${{ github.event.inputs.commit }}' | |
submodules: recursive | |
- name: Install cuda-toolkit | |
id: cuda-toolkit-11 | |
if: ${{ matrix.build == 'cuda11' }} | |
uses: Jimver/[email protected] | |
with: | |
cuda: '11.7.1' | |
method: network | |
- name: Install cuda-toolkit | |
id: cuda-toolkit-12 | |
if: ${{ matrix.build == 'cuda12' }} | |
uses: Jimver/[email protected] | |
with: | |
cuda: '12.2.0' | |
method: network | |
- 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/[email protected] | |
with: | |
name: linux-${{ matrix.build }} | |
path: ./build/bin/libstable-diffusion.so | |
linux-hip: | |
runs-on: ubuntu-22.04 | |
container: rocm/dev-ubuntu-22.04:6.0.2 | |
steps: | |
- name: Dependencies | |
id: depends | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y build-essential git cmake rocblas-dev hipblas-dev | |
hipconfig | |
- name: Clone | |
id: checkout | |
uses: actions/checkout@v3 | |
with: | |
repository: 'leejet/stable-diffusion.cpp' | |
ref: '${{ github.event.inputs.commit }}' | |
submodules: recursive | |
- name: Build | |
id: cmake_build | |
run: | | |
mkdir build | |
cd build | |
cmake .. -DCMAKE_C_COMPILER=hipcc -DCMAKE_CXX_COMPILER=hipcc -DSD_HIPBLAS=ON -DCMAKE_BUILD_TYPE=Release -DAMDGPU_TARGETS="gfx1100;gfx1102;gfx1030" -DSD_BUILD_SHARED_LIBS=ON | |
cmake --build . --config Release | |
- name: Upload artifact Rocm | |
id: upload_artifact_rocm | |
uses: actions/[email protected] | |
with: | |
name: linux-rocm6 | |
path: ./build/bin/libstable-diffusion.so | |
osx: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
include: | |
- build: 'noavx' | |
defines: '-DCMAKE_OSX_ARCHITECTURES="x86_64" -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DSD_BUILD_SHARED_LIBS=ON' | |
- build: 'avx' | |
defines: '-DCMAKE_OSX_ARCHITECTURES="x86_64" -DGGML_AVX2=OFF -DSD_BUILD_SHARED_LIBS=ON' | |
- build: 'avx2' | |
defines: '-DCMAKE_OSX_ARCHITECTURES="x86_64" -DGGML_AVX2=ON -DSD_BUILD_SHARED_LIBS=ON' | |
- build: 'avx512' | |
defines: '-DCMAKE_OSX_ARCHITECTURES="x86_64" -DGGML_AVX512=ON -DSD_BUILD_SHARED_LIBS=ON' | |
steps: | |
- name: Checkout | |
id: checkout | |
uses: actions/[email protected] | |
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/[email protected] | |
with: | |
name: osx-${{ matrix.build }} | |
path: ./build/bin/libstable-diffusion.dylib | |
release: | |
runs-on: ubuntu-latest | |
needs: | |
- windows | |
- linux | |
- linux-hip | |
- osx | |
steps: | |
- name: Checkout | |
id: checkout | |
uses: actions/[email protected] | |
- name: Download artifacts | |
id: download_artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: Backends | |
- name: Display structure of downloaded files | |
run: ls -R | |
- name: Setup nuget | |
id: setup_nuget | |
uses: NuGet/[email protected] | |
- name: Pack | |
id: pack | |
run: | | |
nuget pack ./Backends/StableDiffusion.NET.Backend.Cpu.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 }} | |
- name: Upload artifacts | |
id: upload_artifacts | |
uses: actions/[email protected] | |
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 |