Skip to content

Commit ed7d7b6

Browse files
committed
pre-compiled vulkan shaders
1 parent 1ad5a12 commit ed7d7b6

File tree

6 files changed

+746204
-29
lines changed

6 files changed

+746204
-29
lines changed

common/common.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,6 +1012,9 @@ struct llama_model_params common_model_params_to_llama(common_params & params) {
10121012
auto mparams = llama_model_default_params();
10131013

10141014
if (!params.devices.empty()) {
1015+
// add nullptr to the end just in case
1016+
params.devices.push_back(nullptr);
1017+
10151018
mparams.devices = params.devices.data();
10161019
}
10171020
if (params.n_gpu_layers != -1) {

ggml/src/ggml-vulkan/CMakeLists.txt

Lines changed: 44 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,31 @@
11
find_package(Vulkan COMPONENTS glslc REQUIRED)
22

33
if (Vulkan_FOUND)
4+
if(CMAKE_CROSSCOMPILING)
5+
if(DEFINED ENV{VULKAN_SDK})
6+
set(Vulkan_GLSLC_EXECUTABLE "$ENV{VULKAN_SDK}/Bin/glslc.exe")
7+
else()
8+
message(FATAL_ERROR "VULKAN_SDK environment variable not set")
9+
endif()
10+
endif()
11+
412
message(STATUS "Vulkan found")
513

614
ggml_add_backend_library(ggml-vulkan
715
ggml-vulkan.cpp
816
../../include/ggml-vulkan.h
917
)
1018

19+
# Add NDK Vulkan includes for Android
20+
if(ANDROID)
21+
target_include_directories(ggml-vulkan PRIVATE
22+
$ENV{VULKAN_SDK}/Include
23+
)
24+
target_compile_definitions(ggml-vulkan PRIVATE
25+
VK_USE_PLATFORM_ANDROID_KHR
26+
)
27+
endif()
28+
1129
# Compile a test shader to determine whether GL_NV_cooperative_matrix2 is supported.
1230
# If it's not, there will be an error to stderr.
1331
# If it's supported, set a define to indicate that we should compile those shaders
@@ -59,34 +77,37 @@ if (Vulkan_FOUND)
5977
add_compile_definitions(GGML_VULKAN_RUN_TESTS)
6078
endif()
6179

62-
add_subdirectory(vulkan-shaders)
80+
if(NOT CMAKE_CROSSCOMPILING)
81+
add_subdirectory(vulkan-shaders)
6382

64-
set (_ggml_vk_genshaders_cmd vulkan-shaders-gen)
65-
set (_ggml_vk_header ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.hpp)
66-
set (_ggml_vk_source ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.cpp)
67-
set (_ggml_vk_input_dir ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders)
68-
set (_ggml_vk_output_dir ${CMAKE_CURRENT_BINARY_DIR}/vulkan-shaders.spv)
83+
set (_ggml_vk_genshaders_cmd "${CMAKE_CURRENT_BINARY_DIR}/vulkan-shaders-gen.exe")
84+
set (_ggml_vk_header ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.hpp)
85+
set (_ggml_vk_source ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.cpp)
86+
set (_ggml_vk_input_dir ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders)
87+
set (_ggml_vk_output_dir ${CMAKE_CURRENT_BINARY_DIR}/vulkan-shaders.spv)
6988

70-
file(GLOB _ggml_vk_shader_deps "${_ggml_vk_input_dir}/*.comp")
89+
file(GLOB _ggml_vk_shader_deps "${_ggml_vk_input_dir}/*.comp")
7190

72-
add_custom_command(
73-
OUTPUT ${_ggml_vk_header}
91+
add_custom_command(
92+
OUTPUT ${_ggml_vk_header}
7493
${_ggml_vk_source}
7594

76-
COMMAND ${_ggml_vk_genshaders_cmd}
77-
--glslc ${Vulkan_GLSLC_EXECUTABLE}
78-
--input-dir ${_ggml_vk_input_dir}
79-
--output-dir ${_ggml_vk_output_dir}
80-
--target-hpp ${_ggml_vk_header}
81-
--target-cpp ${_ggml_vk_source}
82-
--no-clean
83-
84-
DEPENDS ${_ggml_vk_shader_deps} ${_ggml_vk_genshaders_cmd}
85-
COMMENT "Generate vulkan shaders"
86-
)
87-
88-
target_sources(ggml-vulkan PRIVATE ${_ggml_vk_source} ${_ggml_vk_header})
89-
95+
COMMAND ${_ggml_vk_genshaders_cmd}
96+
--glslc ${Vulkan_GLSLC_EXECUTABLE}
97+
--input-dir ${_ggml_vk_input_dir}
98+
--output-dir ${_ggml_vk_output_dir}
99+
--target-hpp ${_ggml_vk_header}
100+
--target-cpp ${_ggml_vk_source}
101+
--no-clean
102+
103+
DEPENDS ${_ggml_vk_shader_deps} ${_ggml_vk_genshaders_cmd}
104+
COMMENT "Generate vulkan shaders"
105+
)
106+
107+
target_sources(ggml-vulkan PRIVATE ${_ggml_vk_source} ${_ggml_vk_header})
108+
else ()
109+
target_sources(ggml-vulkan PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/ggml-vulkan-shaders.cpp ${CMAKE_CURRENT_SOURCE_DIR}/ggml-vulkan-shaders.hpp)
110+
endif ()
90111
else()
91112
message(WARNING "Vulkan not found")
92113
endif()

0 commit comments

Comments
 (0)