From ffd211849ba8bf465cdb9e2dca273930a60ea546 Mon Sep 17 00:00:00 2001 From: Kawrakow Date: Thu, 7 Aug 2025 17:26:21 +0300 Subject: [PATCH] Vulkan: add cmake options to build without coopmat(2) support (#674) So I can test KHR coopmat and no coopmat. Co-authored-by: Iwan Kawrakow --- ggml/CMakeLists.txt | 4 ++++ ggml/src/CMakeLists.txt | 48 ++++++++++++++++++++++++----------------- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/ggml/CMakeLists.txt b/ggml/CMakeLists.txt index e63520f0..0276c171 100644 --- a/ggml/CMakeLists.txt +++ b/ggml/CMakeLists.txt @@ -147,6 +147,10 @@ option(GGML_VULKAN_MEMORY_DEBUG "ggml: enable Vulkan memory debug ou option(GGML_VULKAN_SHADER_DEBUG_INFO "ggml: enable Vulkan shader debug info" OFF) option(GGML_VULKAN_VALIDATE "ggml: enable Vulkan validation" OFF) option(GGML_VULKAN_RUN_TESTS "ggml: run Vulkan tests" OFF) +option(GGML_VULKAN_NO_COOPMAT "ggml: don't use Vulkan coopmat even if supported" OFF) +option(GGML_VULKAN_NO_COOPMAT2 "ggml: don't use Vulkan coopmat2 even if supported" OFF) +option(GGML_VULKAN_NO_BF16 "ggml: don't use Vulkan bf16 even if supported" OFF) +option(GGML_VULKAN_NO_INT_DOT "ggml: don't use Vulkan integer dot even if supported" OFF) option(GGML_KOMPUTE "ggml: use Kompute" OFF) option(GGML_METAL "ggml: use Metal" ${GGML_METAL_DEFAULT}) option(GGML_METAL_NDEBUG "ggml: disable Metal debugging" OFF) diff --git a/ggml/src/CMakeLists.txt b/ggml/src/CMakeLists.txt index 175f9c67..5924805b 100644 --- a/ggml/src/CMakeLists.txt +++ b/ggml/src/CMakeLists.txt @@ -695,29 +695,37 @@ if (GGML_VULKAN) set(VULKAN_SHADER_GEN_CMAKE_ARGS "") # Test all shader extensions - test_shader_extension_support( - "GL_KHR_cooperative_matrix" - "${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_coopmat_support.comp" - "GGML_VULKAN_COOPMAT_GLSLC_SUPPORT" - ) + if (NOT GGML_VULKAN_NO_COOPMAT) + test_shader_extension_support( + "GL_KHR_cooperative_matrix" + "${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_coopmat_support.comp" + "GGML_VULKAN_COOPMAT_GLSLC_SUPPORT" + ) + endif() - test_shader_extension_support( - "GL_NV_cooperative_matrix2" - "${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_coopmat2_support.comp" - "GGML_VULKAN_COOPMAT2_GLSLC_SUPPORT" - ) + if (NOT GGML_VULKAN_NO_COOPMAT2) + test_shader_extension_support( + "GL_NV_cooperative_matrix2" + "${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_coopmat2_support.comp" + "GGML_VULKAN_COOPMAT2_GLSLC_SUPPORT" + ) + endif() - test_shader_extension_support( - "GL_EXT_integer_dot_product" - "${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_integer_dot_support.comp" - "GGML_VULKAN_INTEGER_DOT_GLSLC_SUPPORT" - ) + if (NOT GGML_VULKAN_NO_INT_DOT) + test_shader_extension_support( + "GL_EXT_integer_dot_product" + "${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_integer_dot_support.comp" + "GGML_VULKAN_INTEGER_DOT_GLSLC_SUPPORT" + ) + endif() - test_shader_extension_support( - "GL_EXT_bfloat16" - "${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_bfloat16_support.comp" - "GGML_VULKAN_BFLOAT16_GLSLC_SUPPORT" - ) + if (NOT GGML_VULKAN_NO_BF16) + test_shader_extension_support( + "GL_EXT_bfloat16" + "${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_bfloat16_support.comp" + "GGML_VULKAN_BFLOAT16_GLSLC_SUPPORT" + ) + endif() # end vulkan test list(APPEND GGML_CDEF_PUBLIC GGML_USE_VULKAN)