@@ -197,6 +197,10 @@ ifdef GGML_RPC
197
197
BUILD_TARGETS += rpc-server
198
198
endif
199
199
200
+ ifdef GGML_VULKAN
201
+ BUILD_TARGETS += vulkan-shaders-gen
202
+ endif
203
+
200
204
default : $(BUILD_TARGETS ) $(LEGACY_TARGETS_BUILD )
201
205
202
206
test : $(TEST_TARGETS )
@@ -547,11 +551,17 @@ ifdef GGML_OPENBLAS64
547
551
endif # GGML_OPENBLAS64
548
552
549
553
ifdef GGML_BLIS
550
- MK_CPPFLAGS += -DGGML_USE_BLAS -I/usr/local/include/blis -I/usr/include/blis
554
+ MK_CPPFLAGS += -DGGML_USE_BLAS -DGGML_BLAS_USE_BLIS - I/usr/local/include/blis -I/usr/include/blis
551
555
MK_LDFLAGS += -lblis -L/usr/local/lib
552
556
OBJ_GGML += ggml/src/ggml-blas.o
553
557
endif # GGML_BLIS
554
558
559
+ ifdef GGML_NVPL
560
+ MK_CPPFLAGS += -DGGML_USE_BLAS -DGGML_BLAS_USE_NVPL -DNVPL_ILP64 -I/usr/local/include/nvpl_blas -I/usr/include/nvpl_blas
561
+ MK_LDFLAGS += -L/usr/local/lib -lnvpl_blas_core -lnvpl_blas_ilp64_gomp
562
+ OBJ_GGML += ggml/src/ggml-blas.o
563
+ endif # GGML_NVPL
564
+
555
565
ifndef GGML_NO_LLAMAFILE
556
566
MK_CPPFLAGS += -DGGML_USE_LLAMAFILE
557
567
OBJ_GGML += ggml/src/llamafile/sgemm.o
@@ -704,8 +714,8 @@ endif # GGML_CUDA
704
714
705
715
ifdef GGML_VULKAN
706
716
MK_CPPFLAGS += -DGGML_USE_VULKAN
707
- MK_LDFLAGS += -lvulkan
708
- OBJ_GGML += ggml/src/ggml-vulkan.o
717
+ MK_LDFLAGS += $(shell pkg-config --libs vulkan)
718
+ OBJ_GGML += ggml/src/ggml-vulkan.o ggml/src/ggml-vulkan-shaders.o
709
719
710
720
ifdef GGML_VULKAN_CHECK_RESULTS
711
721
MK_CPPFLAGS += -DGGML_VULKAN_CHECK_RESULTS
@@ -727,10 +737,28 @@ ifdef GGML_VULKAN_RUN_TESTS
727
737
MK_CPPFLAGS += -DGGML_VULKAN_RUN_TESTS
728
738
endif
729
739
730
- ggml/src/ggml-vulkan.o : \
731
- ggml/src/ggml-vulkan.cpp \
732
- ggml/include/ggml-vulkan.h
733
- $(CXX ) $(CXXFLAGS ) -c $< -o $@
740
+ GLSLC_CMD = glslc
741
+ _ggml_vk_genshaders_cmd = $(shell pwd) /vulkan-shaders-gen
742
+ _ggml_vk_header = ggml/src/ggml-vulkan-shaders.hpp
743
+ _ggml_vk_source = ggml/src/ggml-vulkan-shaders.cpp
744
+ _ggml_vk_input_dir = ggml/src/vulkan-shaders
745
+ _ggml_vk_shader_deps = $(echo $(_ggml_vk_input_dir ) /*.comp )
746
+
747
+ ggml/src/ggml-vulkan.o : ggml/src/ggml-vulkan.cpp ggml/include/ggml-vulkan.h $(_ggml_vk_header ) $(_ggml_vk_source )
748
+ $(CXX ) $(CXXFLAGS ) $(shell pkg-config --cflags vulkan) -c $< -o $@
749
+
750
+ $(_ggml_vk_header ) : $(_ggml_vk_source )
751
+
752
+ $(_ggml_vk_source ) : $(_ggml_vk_shader_deps ) vulkan-shaders-gen
753
+ $(_ggml_vk_genshaders_cmd ) \
754
+ --glslc $(GLSLC_CMD ) \
755
+ --input-dir $(_ggml_vk_input_dir ) \
756
+ --target-hpp $(_ggml_vk_header ) \
757
+ --target-cpp $(_ggml_vk_source )
758
+
759
+ vulkan-shaders-gen : ggml/src/vulkan-shaders/vulkan-shaders-gen.cpp
760
+ $(CXX ) $(CXXFLAGS ) -o $@ $(LDFLAGS ) ggml/src/vulkan-shaders/vulkan-shaders-gen.cpp
761
+
734
762
endif # GGML_VULKAN
735
763
736
764
ifdef GGML_HIPBLAS
@@ -1110,6 +1138,7 @@ clean:
1110
1138
rm -vrf ggml/src/ggml-cuda/template-instances/* .o
1111
1139
rm -rvf $(BUILD_TARGETS )
1112
1140
rm -rvf $(TEST_TARGETS )
1141
+ rm -f vulkan-shaders-gen ggml/src/ggml-vulkan-shaders.hpp ggml/src/ggml-vulkan-shaders.cpp
1113
1142
rm -rvf $(LEGACY_TARGETS_CLEAN )
1114
1143
find examples pocs -type f -name " *.o" -delete
1115
1144
0 commit comments