From 458aeb10e91492e849432ebe28466ed1cda9a0cf Mon Sep 17 00:00:00 2001 From: Sami Farin Date: Thu, 4 May 2023 13:51:29 +0300 Subject: [PATCH 1/3] =?UTF-8?q?use=20pause=20asm=20insn=20in=20busyloop=20?= =?UTF-8?q?to=20run=20the=20CPU=20(13600K)=2010=20=C2=B0C=20cooler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tested with a 13B model. --- ggml.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ggml.c b/ggml.c index 0bcb5f617f202..775b3506d48bd 100644 --- a/ggml.c +++ b/ggml.c @@ -11656,7 +11656,14 @@ typedef int ggml_lock_t; #define ggml_lock_init(x) UNUSED(x) #define ggml_lock_destroy(x) UNUSED(x) +#ifdef __x86_64__ +static inline void ggml_lock_lock(void* x); +inline void ggml_lock_lock(void* x) { + __asm__ __volatile__("pause\n"); +} +#else #define ggml_lock_lock(x) UNUSED(x) +#endif #define ggml_lock_unlock(x) UNUSED(x) #define GGML_LOCK_INITIALIZER 0 From 23f148516df3d9a458c914148240aeeb3c0417fc Mon Sep 17 00:00:00 2001 From: Sami Farin Date: Sat, 6 May 2023 07:48:45 +0300 Subject: [PATCH 2/3] use _mm_pause() in busyloop --- ggml.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/ggml.c b/ggml.c index 775b3506d48bd..1f41253ad6eac 100644 --- a/ggml.c +++ b/ggml.c @@ -11656,11 +11656,8 @@ typedef int ggml_lock_t; #define ggml_lock_init(x) UNUSED(x) #define ggml_lock_destroy(x) UNUSED(x) -#ifdef __x86_64__ -static inline void ggml_lock_lock(void* x); -inline void ggml_lock_lock(void* x) { - __asm__ __volatile__("pause\n"); -} +#if defined(__x86_64__) || defined(_MSC_VER) +#define ggml_lock_lock(x) _mm_pause() #else #define ggml_lock_lock(x) UNUSED(x) #endif From 5423eb6642aa2fced1e83a8e7f0624153dbdbeee Mon Sep 17 00:00:00 2001 From: Sami Farin Date: Mon, 8 May 2023 23:02:21 +0300 Subject: [PATCH 3/3] use _mm_pause() in busyloop on x86_64 to reduce power consumption --- ggml.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ggml.c b/ggml.c index 1f41253ad6eac..480f5a93653ca 100644 --- a/ggml.c +++ b/ggml.c @@ -11656,7 +11656,7 @@ typedef int ggml_lock_t; #define ggml_lock_init(x) UNUSED(x) #define ggml_lock_destroy(x) UNUSED(x) -#if defined(__x86_64__) || defined(_MSC_VER) +#if defined(__x86_64__) || (defined(_MSC_VER) && defined(_M_AMD64)) #define ggml_lock_lock(x) _mm_pause() #else #define ggml_lock_lock(x) UNUSED(x)