
* add esrgan upscaler * add sd_tiling * support metal backend * add clip_skip --------- Co-authored-by: leejet <leejet714@gmail.com>
73 lines
2.2 KiB
CMake
73 lines
2.2 KiB
CMake
cmake_minimum_required(VERSION 3.12)
|
|
project("stable-diffusion")
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
if (NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
|
|
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
|
|
endif()
|
|
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
|
|
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
|
set(SD_STANDALONE ON)
|
|
else()
|
|
set(SD_STANDALONE OFF)
|
|
endif()
|
|
|
|
#
|
|
# Option list
|
|
#
|
|
|
|
# general
|
|
#option(SD_BUILD_TESTS "sd: build tests" ${SD_STANDALONE})
|
|
option(SD_BUILD_EXAMPLES "sd: build examples" ${SD_STANDALONE})
|
|
option(SD_CUBLAS "sd: cuda backend" OFF)
|
|
option(SD_METAL "sd: metal backend" OFF)
|
|
option(SD_FLASH_ATTN "sd: use flash attention for x4 less memory usage" OFF)
|
|
option(SD_FAST_SOFTMAX "sd: x1.5 faster softmax, indeterministic (sometimes, same seed don't generate same image), cuda only" OFF)
|
|
option(BUILD_SHARED_LIBS "sd: build shared libs" OFF)
|
|
#option(SD_BUILD_SERVER "sd: build server example" ON)
|
|
|
|
if(SD_CUBLAS)
|
|
message("Use CUBLAS as backend stable-diffusion")
|
|
set(GGML_CUBLAS ON)
|
|
add_definitions(-DSD_USE_CUBLAS)
|
|
if(SD_FAST_SOFTMAX)
|
|
set(GGML_CUDA_FAST_SOFTMAX ON)
|
|
endif()
|
|
endif()
|
|
|
|
if(SD_METAL)
|
|
message("Use Metal as backend stable-diffusion")
|
|
set(GGML_METAL ON)
|
|
add_definitions(-DSD_USE_METAL)
|
|
endif()
|
|
|
|
if(SD_FLASH_ATTN)
|
|
message("Use Flash Attention for memory optimization")
|
|
add_definitions(-DSD_USE_FLASH_ATTENTION)
|
|
endif()
|
|
|
|
|
|
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
|
|
# deps
|
|
add_subdirectory(ggml)
|
|
|
|
add_subdirectory(thirdparty)
|
|
|
|
set(SD_LIB stable-diffusion)
|
|
|
|
add_library(${SD_LIB} stable-diffusion.h stable-diffusion.cpp model.h model.cpp util.h util.cpp)
|
|
target_link_libraries(${SD_LIB} PUBLIC ggml zip)
|
|
target_include_directories(${SD_LIB} PUBLIC . thirdparty)
|
|
target_compile_features(${SD_LIB} PUBLIC cxx_std_11)
|
|
|
|
|
|
if (SD_BUILD_EXAMPLES)
|
|
add_subdirectory(examples)
|
|
endif()
|
|
|