mirror of
https://github.com/LostRuins/koboldcpp.git
synced 2026-05-10 04:00:53 +00:00
allow vulkan to be packaged without coopmat for noavx2
This commit is contained in:
parent
e0aa7aa4d9
commit
e1ee857b1e
3 changed files with 49 additions and 7 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -18,6 +18,10 @@ ggml/src/ggml-vulkan-shaders.cpp
|
|||
ggml/src/ggml-vulkan-shaders.hpp
|
||||
vulkan-shaders-gen.exe
|
||||
vulkan-shaders-gen
|
||||
ggml/src/ggml-vulkan-shaders-noext.cpp
|
||||
ggml/src/ggml-vulkan-shaders-noext.hpp
|
||||
vulkan-shaders-gen-noext.exe
|
||||
vulkan-shaders-gen-noext
|
||||
|
||||
lcov-report/
|
||||
gcovr-report/
|
||||
|
|
|
|||
48
Makefile
48
Makefile
|
|
@ -396,8 +396,9 @@ endif
|
|||
endif
|
||||
|
||||
ifdef NO_VULKAN_EXTENSIONS
|
||||
VKGEN_ADD = -DNO_VULKAN_EXTENSIONS
|
||||
VKGEN_NOEXT_ADD = -DNO_VULKAN_EXTENSIONS
|
||||
endif
|
||||
VKGEN_NOEXT_FORCE = -DNO_VULKAN_EXTENSIONS
|
||||
|
||||
#
|
||||
# Print build information
|
||||
|
|
@ -601,7 +602,9 @@ ggml_v3-opencl.o: otherarch/ggml_v3-opencl.cpp otherarch/ggml_v3-opencl.h
|
|||
|
||||
#vulkan
|
||||
ggml-vulkan.o: ggml/src/ggml-vulkan/ggml-vulkan.cpp ggml/include/ggml-vulkan.h ggml/src/ggml-vulkan-shaders.cpp
|
||||
$(CXX) $(CXXFLAGS) $(VKGEN_ADD) $(VULKAN_FLAGS) -c $< -o $@
|
||||
$(CXX) $(CXXFLAGS) $(VKGEN_NOEXT_ADD) $(VULKAN_FLAGS) -c $< -o $@
|
||||
ggml-vulkan-noext.o: ggml/src/ggml-vulkan/ggml-vulkan.cpp ggml/include/ggml-vulkan.h ggml/src/ggml-vulkan-shaders-noext.cpp
|
||||
$(CXX) $(CXXFLAGS) $(VKGEN_NOEXT_FORCE) $(VULKAN_FLAGS) -c $< -o $@
|
||||
|
||||
# intermediate objects
|
||||
llama.o: src/llama.cpp ggml/include/ggml.h ggml/include/ggml-alloc.h ggml/include/ggml-backend.h ggml/include/ggml-cuda.h ggml/include/ggml-metal.h include/llama.h otherarch/llama-util.h
|
||||
|
|
@ -655,7 +658,7 @@ gpttype_adapter_vulkan_noavx2.o: $(GPTTYPE_ADAPTER)
|
|||
$(CXX) $(CXXFLAGS) $(FAILSAFE_FLAGS) $(VULKAN_FLAGS) -c $< -o $@
|
||||
|
||||
clean:
|
||||
rm -vf *.o main ttsmain sdmain whispermain quantize_gguf quantize_clip quantize_gpt2 quantize_gptj quantize_neox quantize_mpt vulkan-shaders-gen gguf-split gguf-split.exe vulkan-shaders-gen.exe main.exe ttsmain.exe sdmain.exe whispermain.exe quantize_clip.exe quantize_gguf.exe quantize_gptj.exe quantize_gpt2.exe quantize_neox.exe quantize_mpt.exe koboldcpp_default.dll koboldcpp_failsafe.dll koboldcpp_noavx2.dll koboldcpp_clblast.dll koboldcpp_clblast_noavx2.dll koboldcpp_clblast_failsafe.dll koboldcpp_cublas.dll koboldcpp_hipblas.dll koboldcpp_vulkan.dll koboldcpp_vulkan_noavx2.dll koboldcpp_default.so koboldcpp_failsafe.so koboldcpp_noavx2.so koboldcpp_clblast.so koboldcpp_clblast_noavx2.so koboldcpp_clblast_failsafe.so koboldcpp_cublas.so koboldcpp_hipblas.so koboldcpp_vulkan.so koboldcpp_vulkan_noavx2.so ggml/src/ggml-vulkan-shaders.cpp ggml/src/ggml-vulkan-shaders.hpp
|
||||
rm -vf *.o main ttsmain sdmain whispermain quantize_gguf quantize_clip quantize_gpt2 quantize_gptj quantize_neox quantize_mpt vulkan-shaders-gen vulkan-shaders-gen-noext gguf-split gguf-split.exe vulkan-shaders-gen.exe vulkan-shaders-gen-noext.exe main.exe ttsmain.exe sdmain.exe whispermain.exe quantize_clip.exe quantize_gguf.exe quantize_gptj.exe quantize_gpt2.exe quantize_neox.exe quantize_mpt.exe koboldcpp_default.dll koboldcpp_failsafe.dll koboldcpp_noavx2.dll koboldcpp_clblast.dll koboldcpp_clblast_noavx2.dll koboldcpp_clblast_failsafe.dll koboldcpp_cublas.dll koboldcpp_hipblas.dll koboldcpp_vulkan.dll koboldcpp_vulkan_noavx2.dll koboldcpp_default.so koboldcpp_failsafe.so koboldcpp_noavx2.so koboldcpp_clblast.so koboldcpp_clblast_noavx2.so koboldcpp_clblast_failsafe.so koboldcpp_cublas.so koboldcpp_hipblas.so koboldcpp_vulkan.so koboldcpp_vulkan_noavx2.so ggml/src/ggml-vulkan-shaders.cpp ggml/src/ggml-vulkan-shaders.hpp ggml/src/ggml-vulkan-shaders-noext.cpp ggml/src/ggml-vulkan-shaders-noext.hpp
|
||||
rm -vrf ggml/src/ggml-cuda/*.o
|
||||
rm -vrf ggml/src/ggml-cuda/template-instances/*.o
|
||||
|
||||
|
|
@ -679,13 +682,17 @@ ggml/src/ggml-vulkan-shaders.cpp:
|
|||
ifdef VULKAN_BUILD
|
||||
@$(MAKE) vulkan-shaders-gen
|
||||
endif
|
||||
ggml/src/ggml-vulkan-shaders-noext.cpp:
|
||||
ifdef VULKAN_BUILD
|
||||
@$(MAKE) vulkan-shaders-gen-noext
|
||||
endif
|
||||
|
||||
vulkan-shaders-gen: ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp
|
||||
@echo 'Vulkan shaders need to be regenerated. This can only be done on Windows or Linux. Please stand by...'
|
||||
$(CXX) $(CXXFLAGS) $(VKGEN_ADD) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
|
||||
$(CXX) $(CXXFLAGS) $(VKGEN_NOEXT_ADD) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
|
||||
ifeq ($(OS),Windows_NT)
|
||||
@echo 'Now rebuilding vulkan shaders for Windows...'
|
||||
$(shell) vulkan-shaders-gen --glslc glslc --input-dir ggml/src/ggml-vulkan/vulkan-shaders --target-hpp ggml/src/ggml-vulkan-shaders.hpp --target-cpp ggml/src/ggml-vulkan-shaders.cpp
|
||||
$(shell) vulkan-shaders-gen --glslc glslc --input-dir ggml/src/ggml-vulkan/vulkan-shaders --target-hpp ggml/src/ggml-vulkan-shaders.hpp --target-cpp ggml/src/ggml-vulkan-shaders.cpp --output-dir vulkan-spv-tmp
|
||||
@echo 'Vulkan Shaders Rebuilt for Windows...'
|
||||
else
|
||||
@echo 'Now rebuilding vulkan shaders for Linux...'
|
||||
|
|
@ -702,11 +709,38 @@ else
|
|||
echo "Error: No usable glslc found. Vulkan shaders cannot be compiled!"; \
|
||||
else \
|
||||
echo "Using GLSLC: $$GLSLC_BIN"; \
|
||||
./vulkan-shaders-gen --glslc "$$GLSLC_BIN" --input-dir ggml/src/ggml-vulkan/vulkan-shaders --target-hpp ggml/src/ggml-vulkan-shaders.hpp --target-cpp ggml/src/ggml-vulkan-shaders.cpp; \
|
||||
./vulkan-shaders-gen --glslc "$$GLSLC_BIN" --input-dir ggml/src/ggml-vulkan/vulkan-shaders --target-hpp ggml/src/ggml-vulkan-shaders.hpp --target-cpp ggml/src/ggml-vulkan-shaders.cpp --output-dir vulkan-spv-tmp; \
|
||||
fi
|
||||
@echo 'Vulkan Shaders Rebuilt for Linux...'
|
||||
endif
|
||||
|
||||
vulkan-shaders-gen-noext: ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp
|
||||
@echo 'Vulkan shaders need to be regenerated (no extensions). This can only be done on Windows or Linux. Please stand by...'
|
||||
$(CXX) $(CXXFLAGS) $(VKGEN_NOEXT_FORCE) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
|
||||
ifeq ($(OS),Windows_NT)
|
||||
@echo 'Now rebuilding vulkan shaders (no extensions) for Windows...'
|
||||
$(shell) vulkan-shaders-gen-noext --glslc glslc --input-dir ggml/src/ggml-vulkan/vulkan-shaders --target-hpp ggml/src/ggml-vulkan-shaders-noext.hpp --target-cpp ggml/src/ggml-vulkan-shaders-noext.cpp --output-dir vulkan-spv-noext-tmp
|
||||
@echo 'Vulkan Shaders (no extensions) Rebuilt for Windows...'
|
||||
else
|
||||
@echo 'Now rebuilding vulkan shaders (no extensions) for Linux...'
|
||||
@chmod +x vulkan-shaders-gen-noext glslc-linux
|
||||
@echo 'Checking if bundled glslc-linux binary is usable...'
|
||||
@GLSLC_BIN=$$(if ./glslc-linux --version >/dev/null 2>&1; then \
|
||||
echo "./glslc-linux"; \
|
||||
elif command -v glslc >/dev/null 2>&1; then \
|
||||
echo "glslc"; \
|
||||
else \
|
||||
echo ""; \
|
||||
fi); \
|
||||
if [ -z "$$GLSLC_BIN" ]; then \
|
||||
echo "Error: No usable glslc found. Vulkan shaders (no extensions) cannot be compiled!"; \
|
||||
else \
|
||||
echo "Using GLSLC: $$GLSLC_BIN"; \
|
||||
./vulkan-shaders-gen-noext --glslc "$$GLSLC_BIN" --input-dir ggml/src/ggml-vulkan/vulkan-shaders --target-hpp ggml/src/ggml-vulkan-shaders-noext.hpp --target-cpp ggml/src/ggml-vulkan-shaders-noext.cpp --output-dir vulkan-spv-noext-tmp; \
|
||||
fi
|
||||
@echo 'Vulkan Shaders (no extensions) Rebuilt for Linux...'
|
||||
endif
|
||||
|
||||
#generated libraries
|
||||
koboldcpp_default: ggml.o ggml-cpu.o ggml-ops.o ggml-vec.o ggml-binops.o ggml-unops.o ggml_v3.o ggml_v2.o ggml_v1.o expose.o gpttype_adapter.o sdcpp_default.o whispercpp_default.o tts_default.o embeddings_default.o llavaclip_default.o llava.o ggml-backend_default.o ggml-backend-reg_default.o $(OBJS_FULL) $(OBJS)
|
||||
$(DEFAULT_BUILD)
|
||||
|
|
@ -770,7 +804,7 @@ ifdef VULKAN_BUILD
|
|||
koboldcpp_vulkan: ggml_v4_vulkan.o ggml-cpu.o ggml-ops.o ggml-vec.o ggml-binops.o ggml-unops.o ggml_v3.o ggml_v2.o ggml_v1.o expose.o gpttype_adapter_vulkan.o ggml-vulkan.o sdcpp_vulkan.o whispercpp_default.o tts_default.o embeddings_default.o llavaclip_vulkan.o llava.o ggml-backend_vulkan.o ggml-backend-reg_vulkan.o $(OBJS_FULL) $(OBJS)
|
||||
$(VULKAN_BUILD)
|
||||
ifdef NOAVX2_BUILD
|
||||
koboldcpp_vulkan_noavx2: ggml_v4_vulkan_noavx2.o ggml-cpu_v4_noavx2.o ggml-ops-noavx2.o ggml-vec-noavx2.o ggml-binops.o ggml-unops.o ggml_v3_noavx2.o ggml_v2_noavx2.o ggml_v1_failsafe.o expose.o gpttype_adapter_vulkan_noavx2.o ggml-vulkan.o sdcpp_vulkan.o whispercpp_default.o tts_default.o embeddings_default.o llavaclip_vulkan.o llava.o ggml-backend_vulkan.o ggml-backend-reg_vulkan.o $(OBJS_SIMPLE) $(OBJS)
|
||||
koboldcpp_vulkan_noavx2: ggml_v4_vulkan_noavx2.o ggml-cpu_v4_noavx2.o ggml-ops-noavx2.o ggml-vec-noavx2.o ggml-binops.o ggml-unops.o ggml_v3_noavx2.o ggml_v2_noavx2.o ggml_v1_failsafe.o expose.o gpttype_adapter_vulkan_noavx2.o ggml-vulkan-noext.o sdcpp_vulkan.o whispercpp_default.o tts_default.o embeddings_default.o llavaclip_vulkan.o llava.o ggml-backend_vulkan.o ggml-backend-reg_vulkan.o $(OBJS_SIMPLE) $(OBJS)
|
||||
$(VULKAN_BUILD)
|
||||
else
|
||||
koboldcpp_vulkan_noavx2:
|
||||
|
|
|
|||
|
|
@ -58,7 +58,11 @@
|
|||
#include "ggml-impl.h"
|
||||
#include "ggml-backend-impl.h"
|
||||
|
||||
#ifndef NO_VULKAN_EXTENSIONS
|
||||
#include "ggml-vulkan-shaders.cpp"
|
||||
#else
|
||||
#include "ggml-vulkan-shaders-noext.cpp"
|
||||
#endif
|
||||
|
||||
#define ROUNDUP_POW2(M, N) (((M) + (N) - 1) & ~((N) - 1))
|
||||
#define CEIL_DIV(M, N) (((M) + (N)-1) / (N))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue