diff --git a/.github/workflows/backends.yml b/.github/workflows/backends.yml index 4fc2134..137e193 100644 --- a/.github/workflows/backends.yml +++ b/.github/workflows/backends.yml @@ -13,12 +13,9 @@ on: type: string jobs: - windows: + windows-cpu: runs-on: windows-latest - env: - VULKAN_VERSION: 1.3.261.1 - strategy: matrix: include: @@ -30,98 +27,149 @@ jobs: 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' - - build: 'cuda12' - defines: '-DSD_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="61;89" -DSD_BUILD_SHARED_LIBS=ON' - - build: 'vulkan' - defines: "-DSD_VULKAN=ON -DSD_BUILD_SHARED_LIBS=ON" steps: - name: Checkout id: checkout - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.2.2 with: repository: 'leejet/stable-diffusion.cpp' ref: '${{ github.event.inputs.commit }}' submodules: recursive - - name: Install cuda-toolkit - id: cuda-toolkit-12 - if: ${{ matrix.build == 'cuda12' }} - uses: Jimver/cuda-toolkit@v0.2.19 + - 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: - cuda: '12.6.2' - method: network - sub-packages: '["nvcc", "cudart", "cublas", "cublas_dev", "thrust", "visual_studio_integration"]' + name: windows-${{ matrix.build }} + path: .\build\bin\Release\stable-diffusion.dll - - name: Install Vulkan SDK - id: get_vulkan - if: ${{ matrix.build == 'vulkan' }} + 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: | - curl.exe -o $env:RUNNER_TEMP/VulkanSDK-Installer.exe -L "https://sdk.lunarg.com/sdk/download/${env:VULKAN_VERSION}/windows/VulkanSDK-${env:VULKAN_VERSION}-Installer.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" + 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 - cmake .. ${{ matrix.defines }} + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + 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.3.1 + uses: actions/upload-artifact@v4.6.1 with: - name: windows-${{ matrix.build }} + name: windows-cuda12 path: .\build\bin\Release\stable-diffusion.dll - windows-2019: + windows-cuda11: runs-on: windows-2019 - - strategy: - matrix: - include: - - build: 'cuda11' - defines: '-DSD_CUDA=ON -DSD_BUILD_SHARED_LIBS=ON -DCMAKE_CUDA_ARCHITECTURES="61" -DCMAKE_CUDA_FLAGS="-allow-unsupported-compiler"' steps: - name: Checkout id: checkout - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.2.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.16 - with: - cuda: '11.8.0' - method: network - sub-packages: '["nvcc", "cudart", "cublas", "cublas_dev", "thrust", "visual_studio_integration"]' - use-github-cache: false - use-local-cache: false + - name: Install Cuda Toolkit 11.8 + id: cuda-11 + run: | + mkdir -p "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.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-11.8.89-archive.zip" + curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvcc/windows-x86_64/cuda_nvcc-windows-x86_64-11.8.89-archive.zip" + curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-11.8.89-archive.zip" + curl -O "https://developer.download.nvidia.com/compute/cuda/redist/libcublas/windows-x86_64/libcublas-windows-x86_64-11.8.1.74-archive.zip" + curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvtx/windows-x86_64/cuda_nvtx-windows-x86_64-11.8.86-archive.zip" + curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_profiler_api/windows-x86_64/cuda_profiler_api-windows-x86_64-11.8.86-archive.zip" + curl -O "https://developer.download.nvidia.com/compute/cuda/redist/visual_studio_integration/windows-x86_64/visual_studio_integration-windows-x86_64-11.8.86-archive.zip" + curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvprof/windows-x86_64/cuda_nvprof-windows-x86_64-11.8.87-archive.zip" + curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_cccl/windows-x86_64/cuda_cccl-windows-x86_64-11.8.89-archive.zip" + unzip '*.zip' -d "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" + xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\cuda_cudart-windows-x86_64-11.8.89-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" /E /I /H /Y + xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\cuda_nvcc-windows-x86_64-11.8.89-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" /E /I /H /Y + xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\cuda_nvrtc-windows-x86_64-11.8.89-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" /E /I /H /Y + xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\libcublas-windows-x86_64-11.8.1.74-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" /E /I /H /Y + xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\cuda_nvtx-windows-x86_64-11.8.86-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" /E /I /H /Y + xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\cuda_profiler_api-windows-x86_64-11.8.86-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" /E /I /H /Y + xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\visual_studio_integration-windows-x86_64-11.8.86-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" /E /I /H /Y + xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\cuda_nvprof-windows-x86_64-11.8.87-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" /E /I /H /Y + xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\cuda_cccl-windows-x86_64-11.8.89-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" /E /I /H /Y + xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\visual_studio_integration\MSBuildExtensions\*" "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160\BuildCustomizations" /E /I /H /Y + echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\libnvvp" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 + echo "CUDA_PATH_V11_8=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 - name: Build id: cmake_build + shell: cmd run: | mkdir build cd build - cmake .. ${{ matrix.defines }} + call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + cmake .. -DSD_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="61;75;86;89" -DSD_BUILD_SHARED_LIBS=ON -DCMAKE_CUDA_FLAGS="-allow-unsupported-compiler" cmake --build . --config Release - name: Upload artifact id: upload_artifact - if: ${{ matrix.build != 'rocm5' }} - uses: actions/upload-artifact@v4.3.1 + uses: actions/upload-artifact@v4.6.1 with: - name: windows-${{ matrix.build }} + name: windows-cuda11 path: .\build\bin\Release\stable-diffusion.dll - + windows-sycl: runs-on: windows-latest @@ -137,7 +185,7 @@ jobs: steps: - name: Checkout id: checkout - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.2.2 with: repository: 'leejet/stable-diffusion.cpp' ref: '${{ github.event.inputs.commit }}' @@ -145,7 +193,7 @@ jobs: - name: Checkout Install Script id: checkoutInstallScript - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.2.2 with: path: scripts sparse-checkout: | @@ -163,7 +211,7 @@ jobs: - name: Upload artifact id: upload_artifact - uses: actions/upload-artifact@v4.3.1 + uses: actions/upload-artifact@v4.6.1 with: name: windows-sycl path: .\build\bin\stable-diffusion.dll @@ -188,7 +236,7 @@ jobs: - name: Checkout id: checkout - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.2.2 with: repository: 'leejet/stable-diffusion.cpp' ref: '${{ github.event.inputs.commit }}' @@ -206,13 +254,52 @@ jobs: - name: Upload artifact id: upload_artifact - uses: actions/upload-artifact@v4.3.1 + uses: actions/upload-artifact@v4.6.1 with: name: windows-rocm6 path: .\build\bin\stable-diffusion.dll - linux: + windows-vulkan: + runs-on: windows-latest + + env: + VULKAN_VERSION: 1.3.261.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-${env:VULKAN_VERSION}-Installer.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: @@ -224,45 +311,115 @@ jobs: 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' - - build: 'cuda11' - defines: '-DSD_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="61" -DSD_BUILD_SHARED_LIBS=ON' - - build: 'cuda12' - defines: '-DSD_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="61;89" -DSD_BUILD_SHARED_LIBS=ON' - - build: 'sycl' - defines: '-DSD_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DSD_BUILD_SHARED_LIBS=ON' steps: - name: Checkout id: checkout - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.2.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 + + - 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: - cuda: '11.7.1' - method: network - use-github-cache: false - use-local-cache: false - - - name: Install cuda-toolkit - id: cuda-toolkit-12 - if: ${{ matrix.build == 'cuda12' }} - uses: Jimver/cuda-toolkit@v0.2.14 + name: linux-${{ matrix.build }} + 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: - cuda: '12.2.0' - method: network - use-github-cache: false - use-local-cache: false - + 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-cuda11: + runs-on: ubuntu-latest + container: nvidia/cuda:11.8.0-devel-ubuntu22.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" -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-cuda11 + 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 - if: ${{ matrix.build == 'sycl' }} shell: bash run: | cd /tmp @@ -273,32 +430,22 @@ jobs: sudo apt update sudo apt install intel-oneapi-compiler-dpcpp-cpp intel-oneapi-mkl-devel - - name: Build - id: cmake_build_sycl - if: ${{ matrix.build == 'sycl' }} - run: | - source /opt/intel/oneapi/setvars.sh - mkdir build - cd build - cmake .. ${{ matrix.defines }} - cmake --build . --config Release - - name: Build id: cmake_build - if: ${{ matrix.build != 'sycl' }} run: | + source /opt/intel/oneapi/setvars.sh mkdir build cd build - cmake .. ${{ matrix.defines }} + 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.3.1 + uses: actions/upload-artifact@v4.6.1 with: - name: linux-${{ matrix.build }} + name: linux-sycl path: ./build/bin/libstable-diffusion.so - + linux-hip: runs-on: ubuntu-22.04 container: rocm/dev-ubuntu-22.04:6.0.2 @@ -313,7 +460,7 @@ jobs: - name: Clone id: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4.2.2 with: repository: 'leejet/stable-diffusion.cpp' ref: '${{ github.event.inputs.commit }}' @@ -329,12 +476,12 @@ jobs: - name: Upload artifact Rocm id: upload_artifact_rocm - uses: actions/upload-artifact@v4.3.1 + uses: actions/upload-artifact@v4.6.1 with: name: linux-rocm6 path: ./build/bin/libstable-diffusion.so - - osx: + + osx-cpu: runs-on: macos-latest strategy: @@ -352,7 +499,7 @@ jobs: steps: - name: Checkout id: checkout - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.2.2 with: repository: 'leejet/stable-diffusion.cpp' ref: '${{ github.event.inputs.commit }}' @@ -368,30 +515,36 @@ jobs: - name: Upload artifact id: upload_artifact - uses: actions/upload-artifact@v4.3.1 + uses: actions/upload-artifact@v4.6.1 with: name: osx-${{ matrix.build }} path: ./build/bin/libstable-diffusion.dylib - + release: - runs-on: ubuntu-latest + runs-on: windows-latest needs: - - windows - - windows-hip + - windows-cpu + - windows-cuda12 + - windows-cuda11 - windows-sycl - - linux + - windows-hip + - windows-vulkan + - linux-cpu + - linux-cuda12 + - linux-cuda11 + - linux-sycl - linux-hip - - osx + - osx-cpu steps: - name: Checkout id: checkout - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.2.2 - name: Download artifacts id: download_artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v4.1.9 with: path: Backends @@ -400,7 +553,7 @@ jobs: - name: Setup nuget id: setup_nuget - uses: NuGet/setup-nuget@v2.0.0 + uses: NuGet/setup-nuget@v2.0.1 - name: Pack id: pack @@ -417,11 +570,11 @@ jobs: - name: Upload artifacts id: upload_artifacts - uses: actions/upload-artifact@v4.3.1 + 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 + run: dotnet nuget push **\*.nupkg --skip-duplicate --api-key ${{ secrets.NUGET_TOKEN }} --source https://api.nuget.org/v3/index.json \ No newline at end of file diff --git a/Examples/ImageCreationUI/ImageCreationUI.csproj b/Examples/ImageCreationUI/ImageCreationUI.csproj index 06d9e3d..d1afed9 100644 --- a/Examples/ImageCreationUI/ImageCreationUI.csproj +++ b/Examples/ImageCreationUI/ImageCreationUI.csproj @@ -11,9 +11,9 @@ - - - + + + diff --git a/StableDiffusion.NET/Enums/Quantization.cs b/StableDiffusion.NET/Enums/Quantization.cs index 2658c63..57ea7fa 100644 --- a/StableDiffusion.NET/Enums/Quantization.cs +++ b/StableDiffusion.NET/Enums/Quantization.cs @@ -34,11 +34,14 @@ public enum Quantization F64 = 28, IQ1_M = 29, BF16 = 30, - Q4_0_4_4 = 31, - Q4_0_4_8 = 32, - Q4_0_8_8 = 33, + //Q4_0_4_4 = 31, support has been removed from gguf files + //Q4_0_4_8 = 32, + //Q4_0_8_8 = 33, TQ1_0 = 34, TQ2_0 = 35, + // SD_TYPE_IQ4_NL_4_4 = 36, + // SD_TYPE_IQ4_NL_4_8 = 37, + // SD_TYPE_IQ4_NL_8_8 = 38, - Unspecified + Unspecified = 39 } \ No newline at end of file diff --git a/StableDiffusion.NET/Enums/Sampler.cs b/StableDiffusion.NET/Enums/Sampler.cs index 84440fa..a221d55 100644 --- a/StableDiffusion.NET/Enums/Sampler.cs +++ b/StableDiffusion.NET/Enums/Sampler.cs @@ -11,5 +11,7 @@ public enum Sampler DPMPP2Mv2, IPNDM, IPNDM_V, - LCM + LCM, + DDIM_Trailing, + TCD } \ No newline at end of file diff --git a/StableDiffusion.NET/Models/DiffusionModel.cs b/StableDiffusion.NET/Models/DiffusionModel.cs index 12b11b9..385e2a6 100644 --- a/StableDiffusion.NET/Models/DiffusionModel.cs +++ b/StableDiffusion.NET/Models/DiffusionModel.cs @@ -113,6 +113,7 @@ public IImage TextToImage(string prompt, DiffusionParameter? parameter parameter.ClipSkip, parameter.CfgScale, parameter.Guidance, + parameter.Eta, parameter.Width, parameter.Height, parameter.SampleMethod, @@ -148,6 +149,7 @@ public IImage TextToImage(string prompt, DiffusionParameter? parameter parameter.ClipSkip, parameter.CfgScale, parameter.Guidance, + parameter.Eta, parameter.Width, parameter.Height, parameter.SampleMethod, @@ -175,6 +177,7 @@ public IImage TextToImage(string prompt, DiffusionParameter? parameter parameter.ClipSkip, parameter.CfgScale, parameter.Guidance, + parameter.Eta, parameter.Width, parameter.Height, parameter.SampleMethod, diff --git a/StableDiffusion.NET/Models/Parameter/DiffusionParameter.cs b/StableDiffusion.NET/Models/Parameter/DiffusionParameter.cs index 03d819b..2c5e703 100644 --- a/StableDiffusion.NET/Models/Parameter/DiffusionParameter.cs +++ b/StableDiffusion.NET/Models/Parameter/DiffusionParameter.cs @@ -90,5 +90,10 @@ public sealed class DiffusionParameter /// public float Guidance { get; set; } = 3.5f; + /// + /// eta in DDIM, only for DDIM and TCD (default: 0) + /// + public float Eta { get; set; } = 0f; + #endregion } \ No newline at end of file diff --git a/StableDiffusion.NET/Native/Native.cs b/StableDiffusion.NET/Native/Native.cs index 6042aee..0da04d2 100644 --- a/StableDiffusion.NET/Native/Native.cs +++ b/StableDiffusion.NET/Native/Native.cs @@ -82,6 +82,7 @@ internal struct sd_image_t int clip_skip, float cfg_scale, float guidance, + float eta, int width, int height, sample_method_t sample_method, diff --git a/build.bat b/build.bat deleted file mode 100644 index d384de9..0000000 --- a/build.bat +++ /dev/null @@ -1,48 +0,0 @@ -if not exist stable-diffusion.cpp ( - git clone --recursive https://github.com/leejet/stable-diffusion.cpp -) - -cd stable-diffusion.cpp -git fetch -git checkout 73c2176648898b3a223c581ed138e5593f8fded5 -git submodule init -git submodule update - -if not exist build ( - mkdir build -) - -cd build - -Rem ---------------------------------------------------------------------------- -rem Pick one of the builds below. - -rem # cuda12 # -cmake .. -DSD_CUBLAS=ON -DSD_BUILD_SHARED_LIBS=ON -DSD_BUILD_EXAMPLES=OFF - -rem # rocm5.5 # -rem cmake .. -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 -DSD_BUILD_EXAMPLES=OFF - -rem # avx512 # -rem cmake .. -DGGML_AVX512=ON -DSD_BUILD_SHARED_LIBS=ON -DSD_BUILD_EXAMPLES=OFF - -rem # avx2 # -rem cmake .. -DGGML_AVX2=ON -DSD_BUILD_SHARED_LIBS=ON -DSD_BUILD_EXAMPLES=OFF - -rem # avx # -rem cmake .. -DGGML_AVX2=OFF -DSD_BUILD_SHARED_LIBS=ON -DSD_BUILD_EXAMPLES=OFF - -rem # noavx # -rem cmake .. -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DSD_BUILD_SHARED_LIBS=ON -DSD_BUILD_EXAMPLES=OFF - -Rem ---------------------------------------------------------------------------- - -cmake --build . --config Release - -cd ..\.. - -dotnet publish -c Release -o bin - -copy .\stable-diffusion.cpp\build\bin\Release\*.dll .\bin\ - -pause