diff --git a/.github/workflows/kcpp-build-release-linux-cuda12.yaml b/.github/workflows/kcpp-build-release-linux-cuda12.yaml index 938eae06e..670b035e9 100644 --- a/.github/workflows/kcpp-build-release-linux-cuda12.yaml +++ b/.github/workflows/kcpp-build-release-linux-cuda12.yaml @@ -4,6 +4,7 @@ on: workflow_dispatch env: BRANCH_NAME: ${{ github.head_ref || github.ref_name }} KCPP_CUDA: 12.1.0 + REBUILD_VK_SHADERS: 1 jobs: linux: diff --git a/.github/workflows/kcpp-build-release-linux.yaml b/.github/workflows/kcpp-build-release-linux.yaml index a5fcb7b0d..cde9d9f53 100644 --- a/.github/workflows/kcpp-build-release-linux.yaml +++ b/.github/workflows/kcpp-build-release-linux.yaml @@ -4,6 +4,7 @@ on: workflow_dispatch env: BRANCH_NAME: ${{ github.head_ref || github.ref_name }} NOAVX2: 1 + REBUILD_VK_SHADERS: 1 jobs: linux: diff --git a/.github/workflows/kcpp-build-release-win-full-cu12.yaml b/.github/workflows/kcpp-build-release-win-full-cu12.yaml index eb9f22605..772dfe751 100644 --- a/.github/workflows/kcpp-build-release-win-full-cu12.yaml +++ b/.github/workflows/kcpp-build-release-win-full-cu12.yaml @@ -42,10 +42,16 @@ jobs: wmic cpu get name wmic os get TotalVisibleMemorySize, FreePhysicalMemory + - name: Rebuild Vulkan Shaders + id: make_vk_shaders + run: | + make vulkan_shaders_gen -j ${env:NUMBER_OF_PROCESSORS} + - name: Build Non-CUDA id: make_build run: | make LLAMA_CLBLAST=1 LLAMA_VULKAN=1 LLAMA_PORTABLE=1 -j ${env:NUMBER_OF_PROCESSORS} + echo "Vulkan Shaders Rebuilt" - uses: Jimver/cuda-toolkit@v0.2.15 id: cuda-toolkit diff --git a/.github/workflows/kcpp-build-release-win-full.yaml b/.github/workflows/kcpp-build-release-win-full.yaml index 5dfcb2868..f2dbaede8 100644 --- a/.github/workflows/kcpp-build-release-win-full.yaml +++ b/.github/workflows/kcpp-build-release-win-full.yaml @@ -42,6 +42,12 @@ jobs: wmic cpu get name wmic os get TotalVisibleMemorySize, FreePhysicalMemory + - name: Rebuild Vulkan Shaders + id: make_vk_shaders + run: | + make vulkan_shaders_gen -j ${env:NUMBER_OF_PROCESSORS} + echo "Vulkan Shaders Rebuilt" + - name: Build Non-CUDA id: make_build run: | diff --git a/.github/workflows/kcpp-build-release-win-oldcpu-full.yaml b/.github/workflows/kcpp-build-release-win-oldcpu-full.yaml index 34c6dab66..07d3473ad 100644 --- a/.github/workflows/kcpp-build-release-win-oldcpu-full.yaml +++ b/.github/workflows/kcpp-build-release-win-oldcpu-full.yaml @@ -42,6 +42,12 @@ jobs: wmic cpu get name wmic os get TotalVisibleMemorySize, FreePhysicalMemory + - name: Rebuild Vulkan Shaders + id: make_vk_shaders + run: | + make vulkan_shaders_gen -j ${env:NUMBER_OF_PROCESSORS} + echo "Vulkan Shaders Rebuilt" + - name: Build Non-CUDA id: make_build run: | diff --git a/Makefile b/Makefile index 225865a01..082878551 100644 --- a/Makefile +++ b/Makefile @@ -645,8 +645,15 @@ gemma3-cli: examples/llava/gemma3-cli.cpp common/arg.cpp build-info.h ggml.o ggm vulkan-shaders-gen: ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp @echo 'This command can be MANUALLY run to regenerate vulkan shaders. Normally concedo will do it, so you do not have to.' $(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS) - @echo 'Now rebuilding vulkan shaders...' +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 +else + @echo 'Now rebuilding vulkan shaders for Linux...' + ${shell} chmod +x vulkan-shaders-gen + ${shell} chmod +x glslc-linux + $(shell) ./vulkan-shaders-gen --glslc ./glslc-linux --input-dir ggml/src/ggml-vulkan/vulkan-shaders --target-hpp ggml/src/ggml-vulkan-shaders.hpp --target-cpp ggml/src/ggml-vulkan-shaders.cpp +endif #generated libraries koboldcpp_default: ggml.o ggml-cpu.o ggml_v3.o ggml_v2.o ggml_v1.o expose.o gpttype_adapter.o sdcpp_default.o whispercpp_default.o tts_default.o llavaclip_default.o llava.o ggml-backend_default.o ggml-backend-reg_default.o $(OBJS_FULL) $(OBJS) diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp b/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp index c0816e309..892397efc 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp +++ b/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp @@ -580,9 +580,6 @@ void write_output_files() { } fprintf(src, "\n};\n\n"); - if (!no_clean) { - std::remove(path.c_str()); - } } fclose(hdr); diff --git a/glslc-linux b/glslc-linux new file mode 100644 index 000000000..de021b8d8 Binary files /dev/null and b/glslc-linux differ diff --git a/koboldcpp.sh b/koboldcpp.sh index 8c18ad237..7fb6e57c0 100755 --- a/koboldcpp.sh +++ b/koboldcpp.sh @@ -25,6 +25,12 @@ if [ -n "$NOAVX2" ]; then LLAMA_NOAVX2_FLAG="LLAMA_NOAVX2=1" fi +if [ -n "$REBUILD_VK_SHADERS" ]; then + echo "Rebuilding Vulkan Shaders..." + bin/micromamba run -r conda -p conda/envs/linux make vulkan-shaders-gen -j$(nproc) LLAMA_ADD_CONDA_PATHS=1 + echo "Vulkan Shaders Rebuilt." +fi + bin/micromamba run -r conda -p conda/envs/linux make -j$(nproc) LLAMA_VULKAN=1 LLAMA_CLBLAST=1 LLAMA_CUBLAS=1 LLAMA_PORTABLE=1 LLAMA_ADD_CONDA_PATHS=1 $LLAMA_NOAVX2_FLAG if [ $? -ne 0 ]; then echo "Error: make failed."