From 9d87c69649bb2374c91f8cf82d35f1f1271a3727 Mon Sep 17 00:00:00 2001 From: Srihari-mcw Date: Tue, 26 Nov 2024 07:24:29 -0800 Subject: [PATCH 1/9] Update cmakepreset.json to use clang with ninja by default --- CMakePresets.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CMakePresets.json b/CMakePresets.json index 436448967c9af..7126125e7e322 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -11,6 +11,19 @@ "CMAKE_INSTALL_RPATH": "$ORIGIN;$ORIGIN/.." } }, + { + "name": "clang-ninja", + "hidden": true, + "generator": "Ninja", + "binaryDir": "${sourceDir}/build-${presetName}", + "cacheVariables": { + "CMAKE_EXPORT_COMPILE_COMMANDS": "ON", + "CMAKE_C_COMPILER":"clang.exe", + "CMAKE_CXX_COMPILER":"clang++.exe", + "CMAKE_INSTALL_RPATH": "$ORIGIN;$ORIGIN/.." + } + }, + { "name": "sycl-base", "hidden": true, From c702b45849b3e02bd4621bdb0da61aa8ceb8184a Mon Sep 17 00:00:00 2001 From: Srihari-mcw Date: Tue, 26 Nov 2024 07:35:14 -0800 Subject: [PATCH 2/9] Update cmakepreset.json to add clang and ninja based configs --- CMakePresets.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakePresets.json b/CMakePresets.json index 7126125e7e322..af1a8328ba250 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -87,6 +87,11 @@ { "name": "x64-windows-msvc-release", "inherits": [ "base", "reldbg" ] }, { "name": "x64-windows-msvc+static-release", "inherits": [ "base", "reldbg", "static" ] }, + { "name": "x64-windows-ninja-debug" , "inherits": [ "clang-ninja", "debug" ] }, + { "name": "x64-windows-ninja-reldbg", "inherits": [ "clang-ninja", "reldbg" ] }, + { "name": "x64-windows-ninja-release", "inherits": [ "clang-ninja", "release" ] }, + { "name": "x64-windows-ninja+static-release", "inherits": [ "clang-ninja", "reldbg", "static" ] }, + { "name": "x64-windows-sycl-debug", "inherits": [ "sycl-base", "debug" ] }, { "name": "x64-windows-sycl-debug-f16", "inherits": [ "sycl-base", "debug", "sycl_f16" ] }, { "name": "x64-windows-sycl-release", "inherits": [ "sycl-base", "release" ] }, From 5e3ad011e2cc35242dcdaf54aaf9177280b0521e Mon Sep 17 00:00:00 2001 From: Srihari-mcw Date: Thu, 5 Dec 2024 10:29:24 +0530 Subject: [PATCH 3/9] Updates to build.md file --- docs/build.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/build.md b/docs/build.md index a4964cbd14909..934d9557994eb 100644 --- a/docs/build.md +++ b/docs/build.md @@ -57,6 +57,13 @@ cmake --build build --config Release ``` Building for arm64 can also be done with the MSVC compiler with the build-arm64-windows-MSVC preset, or the standard CMake build instructions. However, note that the MSVC compiler does not support inline ARM assembly code, used e.g. for the accelerated Q4_0_4_8 CPU kernels. + For building with ninja generator and clang compiler as default: + -set path:set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\lib\x64\uwp;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\ucrt\x64 + ```bash + cmake --preset x64-windows-ninja-release + cmake --build build-x64-windows-ninja-release + ``` + ## BLAS Build Building the program with BLAS support may lead to some performance improvements in prompt processing using batch sizes higher than 32 (the default is 512). Using BLAS doesn't affect the generation performance. There are currently several different BLAS implementations available for build and use: From 7df6cc5577b6d7345660db87bfd9ac65980324dc Mon Sep 17 00:00:00 2001 From: Srihari-mcw Date: Fri, 6 Dec 2024 19:29:08 +0530 Subject: [PATCH 4/9] Make updates to rename preset targets --- CMakePresets.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index af1a8328ba250..58e40bf33b941 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -87,10 +87,10 @@ { "name": "x64-windows-msvc-release", "inherits": [ "base", "reldbg" ] }, { "name": "x64-windows-msvc+static-release", "inherits": [ "base", "reldbg", "static" ] }, - { "name": "x64-windows-ninja-debug" , "inherits": [ "clang-ninja", "debug" ] }, - { "name": "x64-windows-ninja-reldbg", "inherits": [ "clang-ninja", "reldbg" ] }, - { "name": "x64-windows-ninja-release", "inherits": [ "clang-ninja", "release" ] }, - { "name": "x64-windows-ninja+static-release", "inherits": [ "clang-ninja", "reldbg", "static" ] }, + { "name": "x64-windows-llvm-debug" , "inherits": [ "clang-ninja", "debug" ] }, + { "name": "x64-windows-llvm-reldbg", "inherits": [ "clang-ninja", "reldbg" ] }, + { "name": "x64-windows-llvm-release", "inherits": [ "clang-ninja", "release" ] }, + { "name": "x64-windows-llvm+static-release", "inherits": [ "clang-ninja", "reldbg", "static" ] }, { "name": "x64-windows-sycl-debug", "inherits": [ "sycl-base", "debug" ] }, { "name": "x64-windows-sycl-debug-f16", "inherits": [ "sycl-base", "debug", "sycl_f16" ] }, From 1df36678abdeeed3914da6295624f62eacd1c7cc Mon Sep 17 00:00:00 2001 From: Srihari-mcw Date: Mon, 9 Dec 2024 20:40:25 +0530 Subject: [PATCH 5/9] Update with .cmake file --- CMakePresets.json | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index 58e40bf33b941..0ec0c0f1d44f1 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -11,18 +11,6 @@ "CMAKE_INSTALL_RPATH": "$ORIGIN;$ORIGIN/.." } }, - { - "name": "clang-ninja", - "hidden": true, - "generator": "Ninja", - "binaryDir": "${sourceDir}/build-${presetName}", - "cacheVariables": { - "CMAKE_EXPORT_COMPILE_COMMANDS": "ON", - "CMAKE_C_COMPILER":"clang.exe", - "CMAKE_CXX_COMPILER":"clang++.exe", - "CMAKE_INSTALL_RPATH": "$ORIGIN;$ORIGIN/.." - } - }, { "name": "sycl-base", @@ -44,6 +32,13 @@ { "name": "sycl_f16", "hidden": true, "cacheVariables": { "GGML_SYCL_F16": "ON" } }, { "name": "vulkan", "hidden": true, "cacheVariables": { "GGML_VULKAN": "ON" } }, + { + "name": "x64-windows-llvm", "hidden": true, + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/cmake/x64-windows-llvm.cmake" + } + }, + { "name": "arm64-windows-msvc", "hidden": true, "architecture": { "value": "arm64", "strategy": "external" }, @@ -83,15 +78,15 @@ { "name": "arm64-windows-msvc-release", "inherits": [ "base", "arm64-windows-msvc", "reldbg" ] }, { "name": "arm64-windows-msvc+static-release", "inherits": [ "base", "arm64-windows-msvc", "reldbg", "static" ] }, + { "name": "x64-windows-llvm-debug", "inherits": [ "base", "x64-windows-llvm", "debug" ] }, + { "name": "x64-windows-llvm-release", "inherits": [ "base", "x64-windows-llvm", "release" ] }, + { "name": "x64-windows-llvm-reldbg", "inherits": [ "base", "x64-windows-llvm", "reldbg" ] }, + { "name": "x64-windows-llvm+static-release", "inherits": [ "base", "x64-windows-llvm", "reldbg", "static" ] }, + { "name": "x64-windows-msvc-debug", "inherits": [ "base", "debug" ] }, { "name": "x64-windows-msvc-release", "inherits": [ "base", "reldbg" ] }, { "name": "x64-windows-msvc+static-release", "inherits": [ "base", "reldbg", "static" ] }, - { "name": "x64-windows-llvm-debug" , "inherits": [ "clang-ninja", "debug" ] }, - { "name": "x64-windows-llvm-reldbg", "inherits": [ "clang-ninja", "reldbg" ] }, - { "name": "x64-windows-llvm-release", "inherits": [ "clang-ninja", "release" ] }, - { "name": "x64-windows-llvm+static-release", "inherits": [ "clang-ninja", "reldbg", "static" ] }, - { "name": "x64-windows-sycl-debug", "inherits": [ "sycl-base", "debug" ] }, { "name": "x64-windows-sycl-debug-f16", "inherits": [ "sycl-base", "debug", "sycl_f16" ] }, { "name": "x64-windows-sycl-release", "inherits": [ "sycl-base", "release" ] }, From 6ef2db420f542577a32fee636052fbe065d26933 Mon Sep 17 00:00:00 2001 From: Srihari-mcw Date: Mon, 9 Dec 2024 20:42:43 +0530 Subject: [PATCH 6/9] Remove additional whitespaces --- CMakePresets.json | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakePresets.json b/CMakePresets.json index 0ec0c0f1d44f1..13bdd7907ab40 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -11,7 +11,6 @@ "CMAKE_INSTALL_RPATH": "$ORIGIN;$ORIGIN/.." } }, - { "name": "sycl-base", "hidden": true, From dd01e1ef95a603eec9560ca3003cff44dafc3b55 Mon Sep 17 00:00:00 2001 From: Srihari-mcw Date: Mon, 9 Dec 2024 20:45:06 +0530 Subject: [PATCH 7/9] Add .cmake file for x64-windows-llvm --- cmake/x64-windows-llvm.cmake | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 cmake/x64-windows-llvm.cmake diff --git a/cmake/x64-windows-llvm.cmake b/cmake/x64-windows-llvm.cmake new file mode 100644 index 0000000000000..0603d738fbef0 --- /dev/null +++ b/cmake/x64-windows-llvm.cmake @@ -0,0 +1,11 @@ +set( CMAKE_SYSTEM_NAME Windows ) +set( CMAKE_SYSTEM_PROCESSOR x86_64 ) + +set( CMAKE_C_COMPILER clang ) +set( CMAKE_CXX_COMPILER clang++ ) + +set( arch_c_flags "-march=native" ) + +set( CMAKE_C_FLAGS_INIT "${arch_c_flags}" ) +set( CMAKE_CXX_FLAGS_INIT "${arch_c_flags}" ) + From bdfc59ae7de1f53c8d99085df1371a6a2de276e0 Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Mon, 9 Dec 2024 09:39:33 -0800 Subject: [PATCH 8/9] Update docs/build.md --- docs/build.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build.md b/docs/build.md index 934d9557994eb..9158134b51e4b 100644 --- a/docs/build.md +++ b/docs/build.md @@ -60,7 +60,7 @@ cmake --build build --config Release For building with ninja generator and clang compiler as default: -set path:set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\lib\x64\uwp;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\ucrt\x64 ```bash - cmake --preset x64-windows-ninja-release + cmake --preset x64-windows-llvm-release cmake --build build-x64-windows-ninja-release ``` From ca966256e104740c372b091e505dd98315ec7029 Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Mon, 9 Dec 2024 09:39:38 -0800 Subject: [PATCH 9/9] Update docs/build.md --- docs/build.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build.md b/docs/build.md index 9158134b51e4b..0ac2d390d2d51 100644 --- a/docs/build.md +++ b/docs/build.md @@ -61,7 +61,7 @@ cmake --build build --config Release -set path:set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\lib\x64\uwp;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\ucrt\x64 ```bash cmake --preset x64-windows-llvm-release - cmake --build build-x64-windows-ninja-release + cmake --build build-x64-windows-llvm-release ``` ## BLAS Build