From 2cded1b2968fac8d6a2e0cea54b44c9092a3f198 Mon Sep 17 00:00:00 2001 From: Martin Evans Date: Sun, 24 Dec 2023 22:02:22 +0000 Subject: [PATCH] Fixed alignment of value fields in `LLamaModelMetadataOverride` --- LLama/Abstractions/IModelParams.cs | 2 +- LLama/Native/LLamaModelMetadataOverride.cs | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/LLama/Abstractions/IModelParams.cs b/LLama/Abstractions/IModelParams.cs index 3b1553d5..4b4236f7 100644 --- a/LLama/Abstractions/IModelParams.cs +++ b/LLama/Abstractions/IModelParams.cs @@ -269,7 +269,7 @@ namespace LLama.Abstractions dest.FloatValue = _valueFloat; break; case LLamaModelKvOverrideType.LLAMA_KV_OVERRIDE_BOOL: - dest.BoolValue = _valueBool ? -1 : 0; + dest.BoolValue = _valueBool ? -1L : 0; break; default: throw new ArgumentOutOfRangeException(); diff --git a/LLama/Native/LLamaModelMetadataOverride.cs b/LLama/Native/LLamaModelMetadataOverride.cs index 7f685edf..e92ad731 100644 --- a/LLama/Native/LLamaModelMetadataOverride.cs +++ b/LLama/Native/LLamaModelMetadataOverride.cs @@ -21,22 +21,28 @@ public unsafe struct LLamaModelMetadataOverride public LLamaModelKvOverrideType Tag; /// - /// Value, **must** only be used if Tag == LLAMA_KV_OVERRIDE_INT + /// Add 4 bytes of padding, to align the next fields to 8 bytes /// [FieldOffset(132)] + private readonly int PADDING; + + /// + /// Value, **must** only be used if Tag == LLAMA_KV_OVERRIDE_INT + /// + [FieldOffset(136)] public long IntValue; /// /// Value, **must** only be used if Tag == LLAMA_KV_OVERRIDE_FLOAT /// - [FieldOffset(132)] + [FieldOffset(136)] public double FloatValue; /// /// Value, **must** only be used if Tag == LLAMA_KV_OVERRIDE_BOOL /// - [FieldOffset(132)] - public int BoolValue; + [FieldOffset(136)] + public long BoolValue; } ///