From a1576994a7767139dda1405196838a799a8b1086 Mon Sep 17 00:00:00 2001 From: Darth Affe Date: Mon, 25 Mar 2024 00:36:36 +0100 Subject: [PATCH] Added build-scripts --- .github/workflows/backends.yml | 277 +++++++++++++++++++++++++++++++++ .github/workflows/release.yml | 57 +++++++ 2 files changed, 334 insertions(+) create mode 100644 .github/workflows/backends.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/backends.yml b/.github/workflows/backends.yml new file mode 100644 index 0000000..1f506e9 --- /dev/null +++ b/.github/workflows/backends.yml @@ -0,0 +1,277 @@ +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/checkout@v4.1.2 + 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/cuda-toolkit@v0.2.14 + 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/cuda-toolkit@v0.2.14 + 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/rocm-toolkit@v0.1.0 + 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/upload-artifact@v4.3.1 + 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/upload-artifact@v4.3.1 + 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/checkout@v4.1.2 + 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/cuda-toolkit@v0.2.14 + with: + cuda: '11.7.1' + method: network + + - name: Install cuda-toolkit + id: cuda-toolkit-12 + if: ${{ matrix.build == 'cuda12' }} + uses: Jimver/cuda-toolkit@v0.2.14 + 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/upload-artifact@v4.3.1 + 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/upload-artifact@v4.3.1 + 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/checkout@v4.1.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.3.1 + 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/checkout@v4.1.2 + + - 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/setup-nuget@v2.0.0 + + - 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/upload-artifact@v4.3.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 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..0323b21 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,57 @@ +name: Release + +on: + workflow_dispatch: + inputs: + version: + description: 'version' + required: true + type: string + +jobs: + build: + runs-on: windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install .NET Core + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + + - name: Restore dependencies + run: dotnet restore + + - name: Build + run: dotnet build --no-restore --configuration Release /p:Version=${{ github.event.inputs.version }} + + - name: Test + run: dotnet test --no-build --verbosity normal --configuration Release + + - name: Upload Nuget Build Artifact + uses: actions/upload-artifact@v4.3.1 + with: + name: StableDiffusion.NET-Nuget + path: StableDiffusion.NET\bin\Release\*.nupkg + if-no-files-found: error + + - name: List files + run: tree + + - name: Release + uses: softprops/action-gh-release@v2.0.4 + with: + tag_name: ${{ github.event.inputs.version }} + generate_release_notes: true + files: StableDiffusion.NET/bin/Release/net8.0/StableDiffusion.NET.dll + + - 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 + dotnet nuget push **\*.snupkg --skip-duplicate --api-key ${{ secrets.NUGET_TOKEN }} --source https://api.nuget.org/v3/index.json + \ No newline at end of file