Skip to content

Commit

Permalink
Merge pull request #2 from DarthAffe/NugetPreparations
Browse files Browse the repository at this point in the history
Nugets
  • Loading branch information
DarthAffe committed Mar 24, 2024
2 parents 11e9c3d + d91132f commit 50cca14
Show file tree
Hide file tree
Showing 41 changed files with 3,215 additions and 3 deletions.
277 changes: 277 additions & 0 deletions .github/workflows/backends.yml
Original file line number Diff line number Diff line change
@@ -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
57 changes: 57 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -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
42 changes: 42 additions & 0 deletions ImageCreationUI/ActionCommand.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
using System.Windows.Input;

namespace ImageCreationUI;

public class ActionCommand(Action command, Func<bool>? canExecute = null) : ICommand
{
#region Events

public event EventHandler? CanExecuteChanged;

#endregion

#region Methods

public bool CanExecute(object? parameter) => canExecute?.Invoke() ?? true;

public void Execute(object? parameter) => command.Invoke();

public void RaiseCanExecuteChanged() => CanExecuteChanged?.Invoke(this, EventArgs.Empty);

#endregion
}

public class ActionCommand<T>(Action<T> command, Func<T, bool>? canExecute = null) : ICommand
where T : class
{
#region Events

public event EventHandler? CanExecuteChanged;

#endregion

#region Methods

public bool CanExecute(object? parameter) => canExecute?.Invoke((T)parameter!) ?? true;

public void Execute(object? parameter) => command.Invoke((T)parameter!);

public void RaiseCanExecuteChanged() => CanExecuteChanged?.Invoke(this, EventArgs.Empty);

#endregion
}
4 changes: 4 additions & 0 deletions ImageCreationUI/App.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<Application x:Class="ImageCreationUI.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml" />

0 comments on commit 50cca14

Please sign in to comment.