mirror of
https://github.com/ggml-org/whisper.cpp.git
synced 2025-09-15 13:28:35 +08:00
* vulkan: Add bfloat16 support This adds bfloat16 matrix multiply support based on VK_KHR_shader_bfloat16. The extension is required for coopmat multiply support, but matrix-vector multiply trivially promotes bf16 to fp32 and doesn't require the extension. The copy/get_rows shaders also don't require the extension. It's probably possible to fall back to non-coopmat and promote to fp32 when the extension isn't supported, but this change doesn't do that. The coopmat support also requires a glslc that supports the extension, which currently requires a custom build. * vulkan: Support bf16 tensors without the bf16 extension or coopmat support Compile a variant of the scalar mul_mm shader that will promote the bf16 values to float, and use that when either the bf16 extension or the coopmat extensions aren't available. * vulkan: bfloat16 fixes (really works without bfloat16 support now) * vulkan: fix spirv-val failure and reenable -O
23 lines
794 B
CMake
23 lines
794 B
CMake
cmake_minimum_required(VERSION 3.19)
|
|
project("vulkan-shaders-gen" C CXX)
|
|
|
|
find_package (Threads REQUIRED)
|
|
|
|
if (GGML_VULKAN_COOPMAT_GLSLC_SUPPORT)
|
|
add_compile_definitions(GGML_VULKAN_COOPMAT_GLSLC_SUPPORT)
|
|
endif()
|
|
if (GGML_VULKAN_COOPMAT2_GLSLC_SUPPORT)
|
|
add_compile_definitions(GGML_VULKAN_COOPMAT2_GLSLC_SUPPORT)
|
|
endif()
|
|
if (GGML_VULKAN_INTEGER_DOT_GLSLC_SUPPORT)
|
|
add_compile_definitions(GGML_VULKAN_INTEGER_DOT_GLSLC_SUPPORT)
|
|
endif()
|
|
if (GGML_VULKAN_BFLOAT16_GLSLC_SUPPORT)
|
|
add_compile_definitions(GGML_VULKAN_BFLOAT16_GLSLC_SUPPORT)
|
|
endif()
|
|
set(TARGET vulkan-shaders-gen)
|
|
add_executable(${TARGET} vulkan-shaders-gen.cpp)
|
|
install(TARGETS ${TARGET} RUNTIME)
|
|
target_compile_features(${TARGET} PRIVATE cxx_std_17)
|
|
target_link_libraries(vulkan-shaders-gen PUBLIC Threads::Threads)
|