|
@@ -23,32 +23,40 @@ if (Vulkan_FOUND)
|
|
|
../../include/ggml-vulkan.h
|
|
../../include/ggml-vulkan.h
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- # Compile a test shader to determine whether GL_KHR_cooperative_matrix is supported.
|
|
|
|
|
- # If it's not, there will be an error to stderr.
|
|
|
|
|
- # If it's supported, set a define to indicate that we should compile those shaders
|
|
|
|
|
- execute_process(COMMAND ${Vulkan_GLSLC_EXECUTABLE} -o - -fshader-stage=compute --target-env=vulkan1.3 "${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_coopmat_support.comp"
|
|
|
|
|
- OUTPUT_VARIABLE glslc_output
|
|
|
|
|
- ERROR_VARIABLE glslc_error)
|
|
|
|
|
-
|
|
|
|
|
- if (${glslc_error} MATCHES ".*extension not supported: GL_KHR_cooperative_matrix.*")
|
|
|
|
|
- message(STATUS "GL_KHR_cooperative_matrix not supported by glslc")
|
|
|
|
|
- else()
|
|
|
|
|
- message(STATUS "GL_KHR_cooperative_matrix supported by glslc")
|
|
|
|
|
- add_compile_definitions(GGML_VULKAN_COOPMAT_GLSLC_SUPPORT)
|
|
|
|
|
|
|
+ if(NOT DEFINED GGML_VULKAN_COOPMAT_GLSLC_SUPPORT)
|
|
|
|
|
+ # Compile a test shader to determine whether GL_KHR_cooperative_matrix is supported.
|
|
|
|
|
+ # If it's not, there will be an error to stderr.
|
|
|
|
|
+ # If it's supported, set a define to indicate that we should compile those shaders
|
|
|
|
|
+ execute_process(COMMAND ${Vulkan_GLSLC_EXECUTABLE} -o - -fshader-stage=compute --target-env=vulkan1.3 "${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_coopmat_support.comp"
|
|
|
|
|
+ OUTPUT_VARIABLE glslc_output
|
|
|
|
|
+ ERROR_VARIABLE glslc_error)
|
|
|
|
|
+
|
|
|
|
|
+ if (${glslc_error} MATCHES ".*extension not supported: GL_KHR_cooperative_matrix.*")
|
|
|
|
|
+ message(STATUS "GL_KHR_cooperative_matrix not supported by glslc")
|
|
|
|
|
+ set(GGML_VULKAN_COOPMAT_GLSLC_SUPPORT OFF CACHE INTERNAL "Whether coopmat is supported by glslc")
|
|
|
|
|
+ else()
|
|
|
|
|
+ message(STATUS "GL_KHR_cooperative_matrix supported by glslc")
|
|
|
|
|
+ add_compile_definitions(GGML_VULKAN_COOPMAT_GLSLC_SUPPORT)
|
|
|
|
|
+ set(GGML_VULKAN_COOPMAT_GLSLC_SUPPORT ON CACHE INTERNAL "Whether coopmat is supported by glslc")
|
|
|
|
|
+ endif()
|
|
|
endif()
|
|
endif()
|
|
|
|
|
|
|
|
- # Compile a test shader to determine whether GL_NV_cooperative_matrix2 is supported.
|
|
|
|
|
- # If it's not, there will be an error to stderr.
|
|
|
|
|
- # If it's supported, set a define to indicate that we should compile those shaders
|
|
|
|
|
- execute_process(COMMAND ${Vulkan_GLSLC_EXECUTABLE} -o - -fshader-stage=compute --target-env=vulkan1.3 "${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_coopmat2_support.comp"
|
|
|
|
|
- OUTPUT_VARIABLE glslc_output
|
|
|
|
|
- ERROR_VARIABLE glslc_error)
|
|
|
|
|
-
|
|
|
|
|
- if (${glslc_error} MATCHES ".*extension not supported: GL_NV_cooperative_matrix2.*")
|
|
|
|
|
- message(STATUS "GL_NV_cooperative_matrix2 not supported by glslc")
|
|
|
|
|
- else()
|
|
|
|
|
- message(STATUS "GL_NV_cooperative_matrix2 supported by glslc")
|
|
|
|
|
- add_compile_definitions(GGML_VULKAN_COOPMAT2_GLSLC_SUPPORT)
|
|
|
|
|
|
|
+ if(NOT DEFINED GGML_VULKAN_COOPMAT2_GLSLC_SUPPORT)
|
|
|
|
|
+ # Compile a test shader to determine whether GL_NV_cooperative_matrix2 is supported.
|
|
|
|
|
+ # If it's not, there will be an error to stderr.
|
|
|
|
|
+ # If it's supported, set a define to indicate that we should compile those shaders
|
|
|
|
|
+ execute_process(COMMAND ${Vulkan_GLSLC_EXECUTABLE} -o - -fshader-stage=compute --target-env=vulkan1.3 "${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_coopmat2_support.comp"
|
|
|
|
|
+ OUTPUT_VARIABLE glslc_output
|
|
|
|
|
+ ERROR_VARIABLE glslc_error)
|
|
|
|
|
+
|
|
|
|
|
+ if (${glslc_error} MATCHES ".*extension not supported: GL_NV_cooperative_matrix2.*")
|
|
|
|
|
+ message(STATUS "GL_NV_cooperative_matrix2 not supported by glslc")
|
|
|
|
|
+ set(GGML_VULKAN_COOPMAT2_GLSLC_SUPPORT OFF CACHE INTERNAL "Whether coopmat2 is supported by glslc")
|
|
|
|
|
+ else()
|
|
|
|
|
+ message(STATUS "GL_NV_cooperative_matrix2 supported by glslc")
|
|
|
|
|
+ add_compile_definitions(GGML_VULKAN_COOPMAT2_GLSLC_SUPPORT)
|
|
|
|
|
+ set(GGML_VULKAN_COOPMAT2_GLSLC_SUPPORT ON CACHE INTERNAL "Whether coopmat2 is supported by glslc")
|
|
|
|
|
+ endif()
|
|
|
endif()
|
|
endif()
|
|
|
|
|
|
|
|
target_link_libraries(ggml-vulkan PRIVATE Vulkan::Vulkan)
|
|
target_link_libraries(ggml-vulkan PRIVATE Vulkan::Vulkan)
|
|
@@ -119,6 +127,8 @@ if (Vulkan_FOUND)
|
|
|
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders
|
|
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders
|
|
|
CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${HOST_CMAKE_TOOLCHAIN_FILE}
|
|
CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${HOST_CMAKE_TOOLCHAIN_FILE}
|
|
|
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
|
|
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
|
|
|
|
|
+ -DGGML_VULKAN_COOPMAT_GLSLC_SUPPORT=${GGML_VULKAN_COOPMAT_GLSLC_SUPPORT}
|
|
|
|
|
+ -DGGML_VULKAN_COOPMAT2_GLSLC_SUPPORT=${GGML_VULKAN_COOPMAT2_GLSLC_SUPPORT}
|
|
|
BUILD_COMMAND ${CMAKE_COMMAND} --build .
|
|
BUILD_COMMAND ${CMAKE_COMMAND} --build .
|
|
|
INSTALL_COMMAND ${CMAKE_COMMAND} --install .
|
|
INSTALL_COMMAND ${CMAKE_COMMAND} --install .
|
|
|
INSTALL_DIR ${CMAKE_BINARY_DIR}
|
|
INSTALL_DIR ${CMAKE_BINARY_DIR}
|