|  | @@ -0,0 +1,8054 @@
 | 
	
		
			
				|  |  | +"""This module is the core of the ggml-python library, it exposes a low-level [ctypes](https://docs.python.org/3/library/ctypes.html)-based interface for ggml.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Structures and functions in the `ggml.ggml` module map directly to the original ggml C library and
 | 
	
		
			
				|  |  | +they operate at a fairly low level.
 | 
	
		
			
				|  |  | +No additional runtime checks checks are performed nor is memory management handled automatically.
 | 
	
		
			
				|  |  | +You've been warned :).
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +With that in mind here are some useful things to keep in mind
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +- Functions accept both ctypes types (c_int, c_bool, c_float, etc.) and Python types (int, bool, float, etc.) as parameters.
 | 
	
		
			
				|  |  | +- Functions return Python types for simple values (int, bool, float, etc.) and ctypes types for complex values ([ggml_context_p][ggml.ggml_context_p], [ggml_tensor_p][ggml.ggml_tensor_p], etc.).
 | 
	
		
			
				|  |  | +- Memory management is the responsibility of the user. The user must call [ggml.ggml_free][] on the context after calling [ggml.ggml_init][].
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Example
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +```python
 | 
	
		
			
				|  |  | +import ggml
 | 
	
		
			
				|  |  | +import ctypes
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Allocate a new context with 16 MB of memory
 | 
	
		
			
				|  |  | +params = ggml.ggml_init_params(mem_size=16 * 1024 * 1024, mem_buffer=None)
 | 
	
		
			
				|  |  | +ctx = ggml.ggml_init(params=params)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Instantiate tensors
 | 
	
		
			
				|  |  | +x = ggml.ggml_new_tensor_1d(ctx, ggml.GGML_TYPE_F32, 1)
 | 
	
		
			
				|  |  | +a = ggml.ggml_new_tensor_1d(ctx, ggml.GGML_TYPE_F32, 1)
 | 
	
		
			
				|  |  | +b = ggml.ggml_new_tensor_1d(ctx, ggml.GGML_TYPE_F32, 1)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Use ggml operations to build a computational graph
 | 
	
		
			
				|  |  | +x2 = ggml.ggml_mul(ctx, x, x)
 | 
	
		
			
				|  |  | +f = ggml.ggml_add(ctx, ggml.ggml_mul(ctx, a, x2), b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +gf = ggml.ggml_build_forward(f)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Set the input values
 | 
	
		
			
				|  |  | +ggml.ggml_set_f32(x, 2.0)
 | 
	
		
			
				|  |  | +ggml.ggml_set_f32(a, 3.0)
 | 
	
		
			
				|  |  | +ggml.ggml_set_f32(b, 4.0)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Compute the graph
 | 
	
		
			
				|  |  | +ggml.ggml_graph_compute_with_ctx(ctx, ctypes.pointer(gf), 1)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Get the output value
 | 
	
		
			
				|  |  | +output = ggml.ggml_get_f32_1d(f, 0)
 | 
	
		
			
				|  |  | +assert output == 16.0
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Free the context
 | 
	
		
			
				|  |  | +ggml.ggml_free(ctx)
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +"""
 | 
	
		
			
				|  |  | +import os
 | 
	
		
			
				|  |  | +import sys
 | 
	
		
			
				|  |  | +import ctypes
 | 
	
		
			
				|  |  | +import pathlib
 | 
	
		
			
				|  |  | +import importlib.resources
 | 
	
		
			
				|  |  | +import numpy as np
 | 
	
		
			
				|  |  | +from typing import Union
 | 
	
		
			
				|  |  | +from typing import Type
 | 
	
		
			
				|  |  | +from typing import Callable
 | 
	
		
			
				|  |  | +from typing import Tuple
 | 
	
		
			
				|  |  | +from typing import Dict
 | 
	
		
			
				|  |  | +from typing import Self
 | 
	
		
			
				|  |  | +from typing import Any
 | 
	
		
			
				|  |  | +from pathlib import Path
 | 
	
		
			
				|  |  | +from typing import List, Optional, Sequence, Union
 | 
	
		
			
				|  |  | +from typing_extensions import TypeAlias
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +NULL: ctypes.c_void_p = None  # ignore: type
 | 
	
		
			
				|  |  | +GGML_MEM_ALIGN = 16
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Load the library
 | 
	
		
			
				|  |  | +def load_shared_library(base_path: Path, lib_base_name: str):
 | 
	
		
			
				|  |  | +    # Construct the paths to the possible shared library names
 | 
	
		
			
				|  |  | +    # Searching for the library in the current directory under the name "libggml" (default name
 | 
	
		
			
				|  |  | +    # for ggml) and "ggml" (default name for this repo)
 | 
	
		
			
				|  |  | +    lib_names: List[str] = [
 | 
	
		
			
				|  |  | +        f"lib{lib_base_name}.so",
 | 
	
		
			
				|  |  | +        f"lib{lib_base_name}.dylib",
 | 
	
		
			
				|  |  | +        f"{lib_base_name}.dll",
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    path = None
 | 
	
		
			
				|  |  | +    cdll_args = dict()  # type: ignore
 | 
	
		
			
				|  |  | +    # Add the library directory to the DLL search path on Windows (if needed)
 | 
	
		
			
				|  |  | +    if sys.platform == "win32" and sys.version_info >= (3, 8):
 | 
	
		
			
				|  |  | +        os.add_dll_directory(str(base_path))
 | 
	
		
			
				|  |  | +        cdll_args["winmode"] = 0
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    for lib_name in lib_names:
 | 
	
		
			
				|  |  | +        # Try to load the shared library, handling potential errors
 | 
	
		
			
				|  |  | +        path = base_path / lib_name
 | 
	
		
			
				|  |  | +        if not path.exists():
 | 
	
		
			
				|  |  | +            continue
 | 
	
		
			
				|  |  | +        try:
 | 
	
		
			
				|  |  | +            return ctypes.CDLL(str(path), **cdll_args)
 | 
	
		
			
				|  |  | +        except Exception as e:
 | 
	
		
			
				|  |  | +            raise RuntimeError(f"Failed to load shared library '{path}': {e}")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    raise FileNotFoundError(
 | 
	
		
			
				|  |  | +        f"Shared library with base name '{lib_base_name}' not found in {base_path}"
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +base_path = Path(__file__).parent.resolve() / "build/src"
 | 
	
		
			
				|  |  | +lib_base_name = "ggml"
 | 
	
		
			
				|  |  | +lib = load_shared_library(base_path, lib_base_name)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#####################################################
 | 
	
		
			
				|  |  | +# GGML Utility Types
 | 
	
		
			
				|  |  | +#####################################################
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +CFloatArray: TypeAlias = "ctypes.Array[ctypes.c_float]"
 | 
	
		
			
				|  |  | +CInt64Array: TypeAlias = "ctypes.Array[ctypes.c_int64]"
 | 
	
		
			
				|  |  | +CIntPointer: TypeAlias = "ctypes._Pointer[ctypes.c_int]"  # type: ignore
 | 
	
		
			
				|  |  | +CCharPointer: TypeAlias = "ctypes._Pointer[ctypes.c_char]"  # type: ignore
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#####################################################
 | 
	
		
			
				|  |  | +# source: ggml.h
 | 
	
		
			
				|  |  | +# GGML API
 | 
	
		
			
				|  |  | +#####################################################
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# #define GGML_FILE_MAGIC   0x67676d6c // "ggml"
 | 
	
		
			
				|  |  | +GGML_FILE_MAGIC = int("0x67676d6c", 16)
 | 
	
		
			
				|  |  | +# #define GGML_FILE_VERSION 1
 | 
	
		
			
				|  |  | +GGML_FILE_VERSION = 1
 | 
	
		
			
				|  |  | +# #define GGML_QNT_VERSION        2    // bump this on quantization format changes
 | 
	
		
			
				|  |  | +GGML_QNT_VERSION = 2
 | 
	
		
			
				|  |  | +# #define GGML_QNT_VERSION_FACTOR 1000 // do not change this
 | 
	
		
			
				|  |  | +GGML_QNT_VERSION_FACTOR = 1000
 | 
	
		
			
				|  |  | +# #define GGML_MAX_DIMS          4
 | 
	
		
			
				|  |  | +GGML_MAX_DIMS = 4
 | 
	
		
			
				|  |  | +# #define GGML_MAX_NODES         4096
 | 
	
		
			
				|  |  | +GGML_MAX_NODES = 4096
 | 
	
		
			
				|  |  | +# #define GGML_MAX_PARAMS        256
 | 
	
		
			
				|  |  | +GGML_MAX_PARAMS = 256
 | 
	
		
			
				|  |  | +# #define GGML_MAX_CONTEXTS      64
 | 
	
		
			
				|  |  | +GGML_MAX_CONTEXTS = 64
 | 
	
		
			
				|  |  | +# #define GGML_MAX_SRC           6
 | 
	
		
			
				|  |  | +GGML_MAX_SRC = 6
 | 
	
		
			
				|  |  | +# #define GGML_MAX_NAME          64
 | 
	
		
			
				|  |  | +GGML_MAX_NAME = 64
 | 
	
		
			
				|  |  | +# #define GGML_MAX_OP_PARAMS     32
 | 
	
		
			
				|  |  | +GGML_MAX_OP_PARAMS = 32
 | 
	
		
			
				|  |  | +# #define GGML_DEFAULT_N_THREADS 4
 | 
	
		
			
				|  |  | +GGML_DEFAULT_N_THREADS = 4
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# #if UINTPTR_MAX == 0XFFFFFFFF
 | 
	
		
			
				|  |  | +#     #define GGML_MEMALIGN 4
 | 
	
		
			
				|  |  | +# #else
 | 
	
		
			
				|  |  | +#     # define GGML_MEMALIGN 16
 | 
	
		
			
				|  |  | +# #endif
 | 
	
		
			
				|  |  | +GGML_MEMALIGN = (
 | 
	
		
			
				|  |  | +    16 if ctypes.sizeof(ctypes.c_void_p) == 4 else 32
 | 
	
		
			
				|  |  | +)  # FIXME: Check if this is correct
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# #define GGML_EXIT_SUCCESS 0
 | 
	
		
			
				|  |  | +GGML_EXIT_SUCCESS = 0
 | 
	
		
			
				|  |  | +# #define GGML_EXIT_ABORTED 1
 | 
	
		
			
				|  |  | +GGML_EXIT_ABORTED = 1
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# #define GGUF_MAGIC   0x46554747 // "GGUF"
 | 
	
		
			
				|  |  | +GGUF_MAGIC = int("0x46554747", 16)
 | 
	
		
			
				|  |  | +# #define GGUF_VERSION 2
 | 
	
		
			
				|  |  | +GGUF_VERSION = 2
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# #define GGUF_DEFAULT_ALIGNMENT 32
 | 
	
		
			
				|  |  | +GGUF_DEFAULT_ALIGNMENT = 32
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# TODO: Check if this is correct
 | 
	
		
			
				|  |  | +# typedef uint16_t ggml_fp16_t;
 | 
	
		
			
				|  |  | +ggml_fp16_t = ctypes.c_uint16
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +CFP16Array: TypeAlias = "ctypes.Array[ggml_fp16_t]"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API float       ggml_fp16_to_fp32(ggml_fp16_t x);
 | 
	
		
			
				|  |  | +def ggml_fp16_to_fp32(x: ggml_fp16_t) -> float:
 | 
	
		
			
				|  |  | +    return lib.ggml_fp16_to_fp32(x)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_fp16_to_fp32.argtypes = [ggml_fp16_t]
 | 
	
		
			
				|  |  | +lib.ggml_fp16_to_fp32.restype = ctypes.c_float
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API ggml_fp16_t ggml_fp32_to_fp16(float x);
 | 
	
		
			
				|  |  | +def ggml_fp32_to_fp16(x: ctypes.c_float) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_fp32_to_fp16(x)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_fp32_to_fp16.argtypes = [ctypes.c_float]
 | 
	
		
			
				|  |  | +lib.ggml_fp32_to_fp16.restype = ggml_fp16_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void ggml_fp16_to_fp32_row(const ggml_fp16_t * x, float * y, size_t n);
 | 
	
		
			
				|  |  | +def ggml_fp16_to_fp32_row(
 | 
	
		
			
				|  |  | +    x: CFP16Array,
 | 
	
		
			
				|  |  | +    y: CFloatArray,
 | 
	
		
			
				|  |  | +    n: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> None:
 | 
	
		
			
				|  |  | +    return lib.ggml_fp16_to_fp32_row(x, y, n)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_fp16_to_fp32_row.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_fp16_t),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_float),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_fp16_to_fp32_row.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void ggml_fp32_to_fp16_row(const float * x, ggml_fp16_t * y, size_t n);
 | 
	
		
			
				|  |  | +def ggml_fp32_to_fp16_row(
 | 
	
		
			
				|  |  | +    x: CFloatArray,
 | 
	
		
			
				|  |  | +    y: CFP16Array,
 | 
	
		
			
				|  |  | +    n: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> None:
 | 
	
		
			
				|  |  | +    return lib.ggml_fp32_to_fp16_row(x, y, n)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_fp32_to_fp16_row.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_float),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_fp16_t),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_fp32_to_fp16_row.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# struct ggml_context;
 | 
	
		
			
				|  |  | +ggml_context_p = ctypes.c_void_p
 | 
	
		
			
				|  |  | +"""Opaque pointer to a ggml_context.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ggml_context structs are not accessed directly instead they must be created using [ggml_init](ggml.ggml_init) and freed using [ggml_free](ggml.ggml_free)."""
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# enum ggml_type {
 | 
	
		
			
				|  |  | +#     GGML_TYPE_F32  = 0,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_F16  = 1,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_Q4_0 = 2,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_Q4_1 = 3,
 | 
	
		
			
				|  |  | +#     // GGML_TYPE_Q4_2 = 4, support has been removed
 | 
	
		
			
				|  |  | +#     // GGML_TYPE_Q4_3 (5) support has been removed
 | 
	
		
			
				|  |  | +#     GGML_TYPE_Q5_0 = 6,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_Q5_1 = 7,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_Q8_0 = 8,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_Q8_1 = 9,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_Q2_K = 10,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_Q3_K = 11,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_Q4_K = 12,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_Q5_K = 13,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_Q6_K = 14,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_Q8_K = 15,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_I8,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_I16,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_I32,
 | 
	
		
			
				|  |  | +#     GGML_TYPE_COUNT,
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +GGML_TYPE_F32 = 0
 | 
	
		
			
				|  |  | +GGML_TYPE_F16 = 1
 | 
	
		
			
				|  |  | +GGML_TYPE_Q4_0 = 2
 | 
	
		
			
				|  |  | +GGML_TYPE_Q4_1 = 3
 | 
	
		
			
				|  |  | +GGML_TYPE_Q5_0 = 6
 | 
	
		
			
				|  |  | +GGML_TYPE_Q5_1 = 7
 | 
	
		
			
				|  |  | +GGML_TYPE_Q8_0 = 8
 | 
	
		
			
				|  |  | +GGML_TYPE_Q8_1 = 9
 | 
	
		
			
				|  |  | +GGML_TYPE_Q2_K = 10
 | 
	
		
			
				|  |  | +GGML_TYPE_Q3_K = 11
 | 
	
		
			
				|  |  | +GGML_TYPE_Q4_K = 12
 | 
	
		
			
				|  |  | +GGML_TYPE_Q5_K = 13
 | 
	
		
			
				|  |  | +GGML_TYPE_Q6_K = 14
 | 
	
		
			
				|  |  | +GGML_TYPE_Q8_K = 15
 | 
	
		
			
				|  |  | +GGML_TYPE_I8 = 16
 | 
	
		
			
				|  |  | +GGML_TYPE_I16 = 17
 | 
	
		
			
				|  |  | +GGML_TYPE_I32 = 18
 | 
	
		
			
				|  |  | +GGML_TYPE_COUNT = 19
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# enum ggml_backend {
 | 
	
		
			
				|  |  | +#     GGML_BACKEND_CPU = 0,
 | 
	
		
			
				|  |  | +#     GGML_BACKEND_GPU = 10,
 | 
	
		
			
				|  |  | +#     GGML_BACKEND_GPU_SPLIT = 20,
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +GGML_BACKEND_CPU = 0
 | 
	
		
			
				|  |  | +GGML_BACKEND_GPU = 10
 | 
	
		
			
				|  |  | +GGML_BACKEND_GPU_SPLIT = 20
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // model file types
 | 
	
		
			
				|  |  | +# enum ggml_ftype {
 | 
	
		
			
				|  |  | +#     GGML_FTYPE_UNKNOWN     = -1,
 | 
	
		
			
				|  |  | +#     GGML_FTYPE_ALL_F32     = 0,
 | 
	
		
			
				|  |  | +#     GGML_FTYPE_MOSTLY_F16  = 1,  // except 1d tensors
 | 
	
		
			
				|  |  | +#     GGML_FTYPE_MOSTLY_Q4_0 = 2,  // except 1d tensors
 | 
	
		
			
				|  |  | +#     GGML_FTYPE_MOSTLY_Q4_1 = 3,  // except 1d tensors
 | 
	
		
			
				|  |  | +#     GGML_FTYPE_MOSTLY_Q4_1_SOME_F16 = 4, // tok_embeddings.weight and output.weight are F16
 | 
	
		
			
				|  |  | +#     GGML_FTYPE_MOSTLY_Q8_0 = 7,  // except 1d tensors
 | 
	
		
			
				|  |  | +#     GGML_FTYPE_MOSTLY_Q5_0 = 8,  // except 1d tensors
 | 
	
		
			
				|  |  | +#     GGML_FTYPE_MOSTLY_Q5_1 = 9,  // except 1d tensors
 | 
	
		
			
				|  |  | +#     GGML_FTYPE_MOSTLY_Q2_K = 10, // except 1d tensors
 | 
	
		
			
				|  |  | +#     GGML_FTYPE_MOSTLY_Q3_K = 11, // except 1d tensors
 | 
	
		
			
				|  |  | +#     GGML_FTYPE_MOSTLY_Q4_K = 12, // except 1d tensors
 | 
	
		
			
				|  |  | +#     GGML_FTYPE_MOSTLY_Q5_K = 13, // except 1d tensors
 | 
	
		
			
				|  |  | +#     GGML_FTYPE_MOSTLY_Q6_K = 14, // except 1d tensors
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +GGML_FTYPE_UNKNOWN = -1
 | 
	
		
			
				|  |  | +GGML_FTYPE_ALL_F32 = 0
 | 
	
		
			
				|  |  | +GGML_FTYPE_MOSTLY_F16 = 1
 | 
	
		
			
				|  |  | +GGML_FTYPE_MOSTLY_Q4_0 = 2
 | 
	
		
			
				|  |  | +GGML_FTYPE_MOSTLY_Q4_1 = 3
 | 
	
		
			
				|  |  | +GGML_FTYPE_MOSTLY_Q4_1_SOME_F16 = 4
 | 
	
		
			
				|  |  | +GGML_FTYPE_MOSTLY_Q8_0 = 7
 | 
	
		
			
				|  |  | +GGML_FTYPE_MOSTLY_Q5_0 = 8
 | 
	
		
			
				|  |  | +GGML_FTYPE_MOSTLY_Q5_1 = 9
 | 
	
		
			
				|  |  | +GGML_FTYPE_MOSTLY_Q2_K = 10
 | 
	
		
			
				|  |  | +GGML_FTYPE_MOSTLY_Q3_K = 11
 | 
	
		
			
				|  |  | +GGML_FTYPE_MOSTLY_Q4_K = 12
 | 
	
		
			
				|  |  | +GGML_FTYPE_MOSTLY_Q5_K = 13
 | 
	
		
			
				|  |  | +GGML_FTYPE_MOSTLY_Q6_K = 14
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // available tensor operations:
 | 
	
		
			
				|  |  | +# enum ggml_op {
 | 
	
		
			
				|  |  | +#     GGML_OP_NONE = 0,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     GGML_OP_DUP,
 | 
	
		
			
				|  |  | +#     GGML_OP_ADD,
 | 
	
		
			
				|  |  | +#     GGML_OP_ADD1,
 | 
	
		
			
				|  |  | +#     GGML_OP_ACC,
 | 
	
		
			
				|  |  | +#     GGML_OP_SUB,
 | 
	
		
			
				|  |  | +#     GGML_OP_MUL,
 | 
	
		
			
				|  |  | +#     GGML_OP_DIV,
 | 
	
		
			
				|  |  | +#     GGML_OP_SQR,
 | 
	
		
			
				|  |  | +#     GGML_OP_SQRT,
 | 
	
		
			
				|  |  | +#     GGML_OP_LOG,
 | 
	
		
			
				|  |  | +#     GGML_OP_SUM,
 | 
	
		
			
				|  |  | +#     GGML_OP_SUM_ROWS,
 | 
	
		
			
				|  |  | +#     GGML_OP_MEAN,
 | 
	
		
			
				|  |  | +#     GGML_OP_ARGMAX,
 | 
	
		
			
				|  |  | +#     GGML_OP_REPEAT,
 | 
	
		
			
				|  |  | +#     GGML_OP_REPEAT_BACK,
 | 
	
		
			
				|  |  | +#     GGML_OP_CONCAT,
 | 
	
		
			
				|  |  | +#     GGML_OP_SILU_BACK,
 | 
	
		
			
				|  |  | +#     GGML_OP_NORM, // normalize
 | 
	
		
			
				|  |  | +#     GGML_OP_RMS_NORM,
 | 
	
		
			
				|  |  | +#     GGML_OP_RMS_NORM_BACK,
 | 
	
		
			
				|  |  | +#     GGML_OP_GROUP_NORM,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     GGML_OP_MUL_MAT,
 | 
	
		
			
				|  |  | +#     GGML_OP_OUT_PROD,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     GGML_OP_SCALE,
 | 
	
		
			
				|  |  | +#     GGML_OP_SET,
 | 
	
		
			
				|  |  | +#     GGML_OP_CPY,
 | 
	
		
			
				|  |  | +#     GGML_OP_CONT,
 | 
	
		
			
				|  |  | +#     GGML_OP_RESHAPE,
 | 
	
		
			
				|  |  | +#     GGML_OP_VIEW,
 | 
	
		
			
				|  |  | +#     GGML_OP_PERMUTE,
 | 
	
		
			
				|  |  | +#     GGML_OP_TRANSPOSE,
 | 
	
		
			
				|  |  | +#     GGML_OP_GET_ROWS,
 | 
	
		
			
				|  |  | +#     GGML_OP_GET_ROWS_BACK,
 | 
	
		
			
				|  |  | +#     GGML_OP_DIAG,
 | 
	
		
			
				|  |  | +#     GGML_OP_DIAG_MASK_INF,
 | 
	
		
			
				|  |  | +#     GGML_OP_DIAG_MASK_ZERO,
 | 
	
		
			
				|  |  | +#     GGML_OP_SOFT_MAX,
 | 
	
		
			
				|  |  | +#     GGML_OP_SOFT_MAX_BACK,
 | 
	
		
			
				|  |  | +#     GGML_OP_ROPE,
 | 
	
		
			
				|  |  | +#     GGML_OP_ROPE_BACK,
 | 
	
		
			
				|  |  | +#     GGML_OP_ALIBI,
 | 
	
		
			
				|  |  | +#     GGML_OP_CLAMP,
 | 
	
		
			
				|  |  | +#     GGML_OP_CONV_1D,
 | 
	
		
			
				|  |  | +#     GGML_OP_CONV_2D,
 | 
	
		
			
				|  |  | +#     GGML_OP_CONV_TRANSPOSE_2D,
 | 
	
		
			
				|  |  | +#     GGML_OP_POOL_1D,
 | 
	
		
			
				|  |  | +#     GGML_OP_POOL_2D,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     GGML_OP_UPSCALE, // nearest interpolate
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     GGML_OP_FLASH_ATTN,
 | 
	
		
			
				|  |  | +#     GGML_OP_FLASH_FF,
 | 
	
		
			
				|  |  | +#     GGML_OP_FLASH_ATTN_BACK,
 | 
	
		
			
				|  |  | +#     GGML_OP_WIN_PART,
 | 
	
		
			
				|  |  | +#     GGML_OP_WIN_UNPART,
 | 
	
		
			
				|  |  | +#     GGML_OP_GET_REL_POS,
 | 
	
		
			
				|  |  | +#     GGML_OP_ADD_REL_POS,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     GGML_OP_UNARY,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     GGML_OP_MAP_UNARY,
 | 
	
		
			
				|  |  | +#     GGML_OP_MAP_BINARY,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     GGML_OP_MAP_CUSTOM1_F32,
 | 
	
		
			
				|  |  | +#     GGML_OP_MAP_CUSTOM2_F32,
 | 
	
		
			
				|  |  | +#     GGML_OP_MAP_CUSTOM3_F32,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     GGML_OP_MAP_CUSTOM1,
 | 
	
		
			
				|  |  | +#     GGML_OP_MAP_CUSTOM2,
 | 
	
		
			
				|  |  | +#     GGML_OP_MAP_CUSTOM3,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     GGML_OP_CROSS_ENTROPY_LOSS,
 | 
	
		
			
				|  |  | +#     GGML_OP_CROSS_ENTROPY_LOSS_BACK,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     GGML_OP_COUNT,
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +GGML_OP_NONE = 0
 | 
	
		
			
				|  |  | +GGML_OP_DUP = 1
 | 
	
		
			
				|  |  | +GGML_OP_ADD = 2
 | 
	
		
			
				|  |  | +GGML_OP_ADD1 = 3
 | 
	
		
			
				|  |  | +GGML_OP_ACC = 4
 | 
	
		
			
				|  |  | +GGML_OP_SUB = 5
 | 
	
		
			
				|  |  | +GGML_OP_MUL = 6
 | 
	
		
			
				|  |  | +GGML_OP_DIV = 7
 | 
	
		
			
				|  |  | +GGML_OP_SQR = 8
 | 
	
		
			
				|  |  | +GGML_OP_SQRT = 9
 | 
	
		
			
				|  |  | +GGML_OP_LOG = 10
 | 
	
		
			
				|  |  | +GGML_OP_SUM = 11
 | 
	
		
			
				|  |  | +GGML_OP_SUM_ROWS = 12
 | 
	
		
			
				|  |  | +GGML_OP_MEAN = 13
 | 
	
		
			
				|  |  | +GGML_OP_ARGMAX = 14
 | 
	
		
			
				|  |  | +GGML_OP_REPEAT = 15
 | 
	
		
			
				|  |  | +GGML_OP_REPEAT_BACK = 16
 | 
	
		
			
				|  |  | +GGML_OP_CONCAT = 17
 | 
	
		
			
				|  |  | +GGML_OP_SILU_BACK = 18
 | 
	
		
			
				|  |  | +GGML_OP_NORM = 19
 | 
	
		
			
				|  |  | +GGML_OP_RMS_NORM = 20
 | 
	
		
			
				|  |  | +GGML_OP_RMS_NORM_BACK = 21
 | 
	
		
			
				|  |  | +GGML_OP_GROUP_NORM = 22
 | 
	
		
			
				|  |  | +GGML_OP_MUL_MAT = 23
 | 
	
		
			
				|  |  | +GGML_OP_OUT_PROD = 24
 | 
	
		
			
				|  |  | +GGML_OP_SCALE = 25
 | 
	
		
			
				|  |  | +GGML_OP_SET = 26
 | 
	
		
			
				|  |  | +GGML_OP_CPY = 27
 | 
	
		
			
				|  |  | +GGML_OP_CONT = 28
 | 
	
		
			
				|  |  | +GGML_OP_RESHAPE = 29
 | 
	
		
			
				|  |  | +GGML_OP_VIEW = 30
 | 
	
		
			
				|  |  | +GGML_OP_PERMUTE = 31
 | 
	
		
			
				|  |  | +GGML_OP_TRANSPOSE = 32
 | 
	
		
			
				|  |  | +GGML_OP_GET_ROWS = 33
 | 
	
		
			
				|  |  | +GGML_OP_GET_ROWS_BACK = 34
 | 
	
		
			
				|  |  | +GGML_OP_DIAG = 35
 | 
	
		
			
				|  |  | +GGML_OP_DIAG_MASK_INF = 36
 | 
	
		
			
				|  |  | +GGML_OP_DIAG_MASK_ZERO = 37
 | 
	
		
			
				|  |  | +GGML_OP_SOFT_MAX = 38
 | 
	
		
			
				|  |  | +GGML_OP_SOFT_MAX_BACK = 39
 | 
	
		
			
				|  |  | +GGML_OP_ROPE = 40
 | 
	
		
			
				|  |  | +GGML_OP_ROPE_BACK = 41
 | 
	
		
			
				|  |  | +GGML_OP_ALIBI = 42
 | 
	
		
			
				|  |  | +GGML_OP_CLAMP = 43
 | 
	
		
			
				|  |  | +GGML_OP_CONV_1D = 44
 | 
	
		
			
				|  |  | +GGML_OP_CONV_2D = 45
 | 
	
		
			
				|  |  | +GGML_OP_CONV_TRANSPOSE_2D = 46
 | 
	
		
			
				|  |  | +GGML_OP_POOL_1D = 47
 | 
	
		
			
				|  |  | +GGML_OP_POOL_2D = 48
 | 
	
		
			
				|  |  | +GGML_OP_UPSCALE = 49
 | 
	
		
			
				|  |  | +GGML_OP_FLASH_ATTN = 50
 | 
	
		
			
				|  |  | +GGML_OP_FLASH_FF = 51
 | 
	
		
			
				|  |  | +GGML_OP_FLASH_ATTN_BACK = 52
 | 
	
		
			
				|  |  | +GGML_OP_WIN_PART = 53
 | 
	
		
			
				|  |  | +GGML_OP_WIN_UNPART = 54
 | 
	
		
			
				|  |  | +GGML_OP_GET_REL_POS = 55
 | 
	
		
			
				|  |  | +GGML_OP_ADD_REL_POS = 56
 | 
	
		
			
				|  |  | +GGML_OP_UNARY = 57
 | 
	
		
			
				|  |  | +GGML_OP_MAP_UNARY = 58
 | 
	
		
			
				|  |  | +GGML_OP_MAP_BINARY = 59
 | 
	
		
			
				|  |  | +GGML_OP_MAP_CUSTOM1_F32 = 60
 | 
	
		
			
				|  |  | +GGML_OP_MAP_CUSTOM2_F32 = 61
 | 
	
		
			
				|  |  | +GGML_OP_MAP_CUSTOM3_F32 = 62
 | 
	
		
			
				|  |  | +GGML_OP_MAP_CUSTOM1 = 63
 | 
	
		
			
				|  |  | +GGML_OP_MAP_CUSTOM2 = 64
 | 
	
		
			
				|  |  | +GGML_OP_MAP_CUSTOM3 = 65
 | 
	
		
			
				|  |  | +GGML_OP_CROSS_ENTROPY_LOSS = 66
 | 
	
		
			
				|  |  | +GGML_OP_CROSS_ENTROPY_LOSS_BACK = 67
 | 
	
		
			
				|  |  | +GGML_OP_COUNT = 68
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# enum ggml_unary_op {
 | 
	
		
			
				|  |  | +#     GGML_UNARY_OP_ABS,
 | 
	
		
			
				|  |  | +#     GGML_UNARY_OP_SGN,
 | 
	
		
			
				|  |  | +#     GGML_UNARY_OP_NEG,
 | 
	
		
			
				|  |  | +#     GGML_UNARY_OP_STEP,
 | 
	
		
			
				|  |  | +#     GGML_UNARY_OP_TANH,
 | 
	
		
			
				|  |  | +#     GGML_UNARY_OP_ELU,
 | 
	
		
			
				|  |  | +#     GGML_UNARY_OP_RELU,
 | 
	
		
			
				|  |  | +#     GGML_UNARY_OP_GELU,
 | 
	
		
			
				|  |  | +#     GGML_UNARY_OP_GELU_QUICK,
 | 
	
		
			
				|  |  | +#     GGML_UNARY_OP_SILU,
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +GGML_UNARY_OP_ABS = 0
 | 
	
		
			
				|  |  | +GGML_UNARY_OP_SGN = 1
 | 
	
		
			
				|  |  | +GGML_UNARY_OP_NEG = 2
 | 
	
		
			
				|  |  | +GGML_UNARY_OP_STEP = 3
 | 
	
		
			
				|  |  | +GGML_UNARY_OP_TANH = 4
 | 
	
		
			
				|  |  | +GGML_UNARY_OP_ELU = 5
 | 
	
		
			
				|  |  | +GGML_UNARY_OP_RELU = 6
 | 
	
		
			
				|  |  | +GGML_UNARY_OP_GELU = 7
 | 
	
		
			
				|  |  | +GGML_UNARY_OP_GELU_QUICK = 8
 | 
	
		
			
				|  |  | +GGML_UNARY_OP_SILU = 9
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# enum ggml_object_type {
 | 
	
		
			
				|  |  | +#     GGML_OBJECT_TENSOR,
 | 
	
		
			
				|  |  | +#     GGML_OBJECT_GRAPH,
 | 
	
		
			
				|  |  | +#     GGML_OBJECT_WORK_BUFFER
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +GGML_OBJECT_TENSOR = 0
 | 
	
		
			
				|  |  | +GGML_OBJECT_GRAPH = 1
 | 
	
		
			
				|  |  | +GGML_OBJECT_WORK_BUFFER = 2
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // ggml object
 | 
	
		
			
				|  |  | +# struct ggml_object {
 | 
	
		
			
				|  |  | +#     size_t offs;
 | 
	
		
			
				|  |  | +#     size_t size;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     struct ggml_object * next;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     enum ggml_object_type type;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     char padding[4];
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +class ggml_object(ctypes.Structure):
 | 
	
		
			
				|  |  | +    pass
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ggml_object._fields_ = [
 | 
	
		
			
				|  |  | +    ("offs", ctypes.c_size_t),
 | 
	
		
			
				|  |  | +    ("size", ctypes.c_size_t),
 | 
	
		
			
				|  |  | +    ("next", ctypes.POINTER(ggml_object)),
 | 
	
		
			
				|  |  | +    ("type", ctypes.c_int),
 | 
	
		
			
				|  |  | +    ("padding", ctypes.c_char * 4),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ggml_object_p: TypeAlias = "ctypes._Pointer[ggml_object]"  # type: ignore
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +GGML_OBJECT_SIZE = ctypes.sizeof(ggml_object)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // n-dimensional tensor
 | 
	
		
			
				|  |  | +# struct ggml_tensor {
 | 
	
		
			
				|  |  | +#     enum ggml_type    type;
 | 
	
		
			
				|  |  | +#     enum ggml_backend backend;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     int     n_dims;
 | 
	
		
			
				|  |  | +#     int64_t ne[GGML_MAX_DIMS]; // number of elements
 | 
	
		
			
				|  |  | +#     size_t  nb[GGML_MAX_DIMS]; // stride in bytes:
 | 
	
		
			
				|  |  | +#                                // nb[0] = sizeof(type)
 | 
	
		
			
				|  |  | +#                                // nb[1] = nb[0]   * ne[0] + padding
 | 
	
		
			
				|  |  | +#                                // nb[i] = nb[i-1] * ne[i-1]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     // compute data
 | 
	
		
			
				|  |  | +#     enum ggml_op op;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     // op params - allocated as int32_t for alignment
 | 
	
		
			
				|  |  | +#     int32_t op_params[GGML_MAX_OP_PARAMS / sizeof(int32_t)];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     bool is_param;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     struct ggml_tensor * grad;
 | 
	
		
			
				|  |  | +#     struct ggml_tensor * src[GGML_MAX_SRC];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     // performance
 | 
	
		
			
				|  |  | +#     int     perf_runs;
 | 
	
		
			
				|  |  | +#     int64_t perf_cycles;
 | 
	
		
			
				|  |  | +#     int64_t perf_time_us;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     struct ggml_tensor * view_src;
 | 
	
		
			
				|  |  | +#     size_t               view_offs;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     void * data;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     char name[GGML_MAX_NAME];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     void * extra; // extra things e.g. for ggml-cuda.cu
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     char padding[4];
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +class ggml_tensor(ctypes.Structure):
 | 
	
		
			
				|  |  | +    """n-dimensional tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Attributes:
 | 
	
		
			
				|  |  | +        type (int): ggml_type
 | 
	
		
			
				|  |  | +        backend (int): ggml_backend
 | 
	
		
			
				|  |  | +        n_dims (int): number of dimensions
 | 
	
		
			
				|  |  | +        ne (ctypes.Array[ctypes.c_int64]): number of elements in each dimension
 | 
	
		
			
				|  |  | +        nb (ctypes.Array[ctypes.c_size_t]): stride in bytes for each dimension
 | 
	
		
			
				|  |  | +        op (int): ggml operation
 | 
	
		
			
				|  |  | +        op_params (ctypes.Array[ctypes.c_int32]): `GGML_MAX_OP_PARAMS`-length array of operation parameters
 | 
	
		
			
				|  |  | +        is_param (bool): is this a parameter tensor
 | 
	
		
			
				|  |  | +        grad (ggml_tensor_p): reference to gradient tensor
 | 
	
		
			
				|  |  | +        src (ctypes.Array[ggml_tensor_p]): `GGML_MAX_SRC`-length array of source tensors
 | 
	
		
			
				|  |  | +        perf_runs (int): number of performance runs
 | 
	
		
			
				|  |  | +        perf_cycles (int): number of cycles
 | 
	
		
			
				|  |  | +        perf_time_us (int): time in microseconds
 | 
	
		
			
				|  |  | +        view_src (ggml_tensor_p): pointer to tensor if this tensor is a view, None if the tensor is not a view
 | 
	
		
			
				|  |  | +        view_offs (ctypes.c_size_t): offset into the data pointer of the view tensor
 | 
	
		
			
				|  |  | +        data (ctypes.c_void_p): reference to raw tensor data
 | 
	
		
			
				|  |  | +        name (bytes): name of tensor
 | 
	
		
			
				|  |  | +        extra (ctypes.c_void_p): extra data (e.g. for CUDA)
 | 
	
		
			
				|  |  | +    """
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    pass
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ggml_tensor._fields_ = [
 | 
	
		
			
				|  |  | +    ("type", ctypes.c_int),
 | 
	
		
			
				|  |  | +    ("backend", ctypes.c_int),
 | 
	
		
			
				|  |  | +    ("n_dims", ctypes.c_int),
 | 
	
		
			
				|  |  | +    ("ne", ctypes.c_int64 * GGML_MAX_DIMS),
 | 
	
		
			
				|  |  | +    ("nb", ctypes.c_size_t * GGML_MAX_DIMS),
 | 
	
		
			
				|  |  | +    ("op", ctypes.c_int),
 | 
	
		
			
				|  |  | +    (
 | 
	
		
			
				|  |  | +        "op_params",
 | 
	
		
			
				|  |  | +        ctypes.c_int32 * (GGML_MAX_OP_PARAMS // ctypes.sizeof(ctypes.c_int32)),
 | 
	
		
			
				|  |  | +    ),
 | 
	
		
			
				|  |  | +    ("is_param", ctypes.c_bool),
 | 
	
		
			
				|  |  | +    ("grad", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +    ("src", ctypes.POINTER(ggml_tensor) * GGML_MAX_SRC),
 | 
	
		
			
				|  |  | +    ("perf_runs", ctypes.c_int),
 | 
	
		
			
				|  |  | +    ("perf_cycles", ctypes.c_int64),
 | 
	
		
			
				|  |  | +    ("perf_time_us", ctypes.c_int64),
 | 
	
		
			
				|  |  | +    ("view_src", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +    ("view_offs", ctypes.c_size_t),
 | 
	
		
			
				|  |  | +    ("data", ctypes.c_void_p),
 | 
	
		
			
				|  |  | +    ("name", ctypes.c_char * GGML_MAX_NAME),
 | 
	
		
			
				|  |  | +    ("extra", ctypes.c_void_p),
 | 
	
		
			
				|  |  | +    ("padding", ctypes.c_char * 4),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +GGML_TENSOR_SIZE = ctypes.sizeof(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ggml_tensor_p: TypeAlias = "ctypes._Pointer[ggml_tensor]"  # type: ignore
 | 
	
		
			
				|  |  | +"""ctypes pointer to a [ggml_tensor][ggml.ggml_tensor]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Can be dereferenced to a [ggml_tensor][ggml.ggml_tensor] object using
 | 
	
		
			
				|  |  | +the `.contents` attribute."""
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +abort_callback_t = ctypes.CFUNCTYPE(ctypes.c_bool, ctypes.c_void_p)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // the compute plan that needs to be prepared for ggml_graph_compute()
 | 
	
		
			
				|  |  | +# // since https://github.com/ggerganov/ggml/issues/287
 | 
	
		
			
				|  |  | +# struct ggml_cplan {
 | 
	
		
			
				|  |  | +#     size_t    work_size; // size of work buffer, calculated by `ggml_graph_plan()`
 | 
	
		
			
				|  |  | +#     uint8_t * work_data; // work buffer, to be allocated by caller before calling to `ggml_graph_compute()`
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     int n_threads;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     // the `n_tasks` of nodes, 1:1 mapping to cgraph nodes
 | 
	
		
			
				|  |  | +#     int n_tasks[GGML_MAX_NODES];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     // abort ggml_graph_compute when true
 | 
	
		
			
				|  |  | +#     bool (*abort_callback)(void * data);
 | 
	
		
			
				|  |  | +#     void * abort_callback_data;
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +class ggml_cplan(ctypes.Structure):
 | 
	
		
			
				|  |  | +    """Compute plan for a ggml computation graph
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Attributes:
 | 
	
		
			
				|  |  | +        work_size (int): size of work buffer
 | 
	
		
			
				|  |  | +        work_data (ctypes.POINTER(ctypes.c_uint8)): work buffer
 | 
	
		
			
				|  |  | +        n_threads (int): number of threads to use when computing the graph using [ggml_graph_compute][ggml.ggml_graph_compute]
 | 
	
		
			
				|  |  | +        n_tasks (ctypes.Array[ctypes.c_int]): `n_tasks` of nodes, 1:1 mapping to cgraph nodes
 | 
	
		
			
				|  |  | +        abort_callback (abort_callback_t): abort callback
 | 
	
		
			
				|  |  | +        abort_callback_data (ctypes.c_void_p): abort callback data
 | 
	
		
			
				|  |  | +    """
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _fields_ = [
 | 
	
		
			
				|  |  | +        ("work_size", ctypes.c_size_t),
 | 
	
		
			
				|  |  | +        ("work_data", ctypes.POINTER(ctypes.c_uint8)),
 | 
	
		
			
				|  |  | +        ("n_threads", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("n_tasks", ctypes.c_int * GGML_MAX_NODES),
 | 
	
		
			
				|  |  | +        (
 | 
	
		
			
				|  |  | +            "abort_callback",
 | 
	
		
			
				|  |  | +            abort_callback_t,
 | 
	
		
			
				|  |  | +        ),
 | 
	
		
			
				|  |  | +        ("abort_callback_data", ctypes.c_void_p),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +GGML_CPLAN_SIZE = ctypes.sizeof(ggml_cplan)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ggml_cplan_p: TypeAlias = "ctypes._Pointer[ggml_cplan]"  # type: ignore
 | 
	
		
			
				|  |  | +"""ctypes pointer to a [ggml_cplan][ggml.ggml_cplan]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Can be dereferenced to a [ggml_cplan][ggml.ggml_cplan] object using
 | 
	
		
			
				|  |  | +the `.contents` attribute."""
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // next prime after GGML_MAX_NODES
 | 
	
		
			
				|  |  | +# // #define GGML_GRAPH_HASHTABLE_SIZE 4099
 | 
	
		
			
				|  |  | +# // next prime after GGML_MAX_NODES * 2 (nodes + leafs)
 | 
	
		
			
				|  |  | +# #define GGML_GRAPH_HASHTABLE_SIZE 8273
 | 
	
		
			
				|  |  | +GGML_GRAPH_HASHTABLE_SIZE = 8273
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // computation graph
 | 
	
		
			
				|  |  | +# struct ggml_cgraph {
 | 
	
		
			
				|  |  | +#     int n_nodes;
 | 
	
		
			
				|  |  | +#     int n_leafs;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     struct ggml_tensor * nodes[GGML_MAX_NODES];
 | 
	
		
			
				|  |  | +#     struct ggml_tensor * grads[GGML_MAX_NODES];
 | 
	
		
			
				|  |  | +#     struct ggml_tensor * leafs[GGML_MAX_NODES];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     void * visited_hash_table[GGML_GRAPH_HASHTABLE_SIZE];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     // performance
 | 
	
		
			
				|  |  | +#     int     perf_runs;
 | 
	
		
			
				|  |  | +#     int64_t perf_cycles;
 | 
	
		
			
				|  |  | +#     int64_t perf_time_us;
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +class ggml_cgraph(ctypes.Structure):
 | 
	
		
			
				|  |  | +    """ggml computation graph
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Attributes:
 | 
	
		
			
				|  |  | +        n_nodes (int): number of nodes
 | 
	
		
			
				|  |  | +        n_leafs (int): number of leafs
 | 
	
		
			
				|  |  | +        nodes (ctypes.Array[ggml_tensor_p]): `n_nodes`-length array of compute tensors
 | 
	
		
			
				|  |  | +        grads (ctypes.Array[ggml_tensor_p]): `n_nodes`-length array of gradient tensors
 | 
	
		
			
				|  |  | +        leafs (ctypes.Array[ggml_tensor_p]): `n_leafs`-length array of parameter tensors
 | 
	
		
			
				|  |  | +        visited_hash_table (ctypes.Array[ctypes.c_void_p]): `GGML_GRAPH_HASHTABLE_SIZE`-length array of visited nodes
 | 
	
		
			
				|  |  | +        perf_runs (int): number of runs
 | 
	
		
			
				|  |  | +        perf_cycles (int): number of cycles
 | 
	
		
			
				|  |  | +        perf_time_us (int): computation time in microseconds"""
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _fields_ = [
 | 
	
		
			
				|  |  | +        ("n_nodes", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("n_leafs", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("nodes", ctypes.POINTER(ggml_tensor) * GGML_MAX_NODES),
 | 
	
		
			
				|  |  | +        ("grads", ctypes.POINTER(ggml_tensor) * GGML_MAX_NODES),
 | 
	
		
			
				|  |  | +        ("leafs", ctypes.POINTER(ggml_tensor) * GGML_MAX_NODES),
 | 
	
		
			
				|  |  | +        ("visited_hash_table", ctypes.c_void_p * GGML_GRAPH_HASHTABLE_SIZE),
 | 
	
		
			
				|  |  | +        ("perf_runs", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("perf_cycles", ctypes.c_int64),
 | 
	
		
			
				|  |  | +        ("perf_time_us", ctypes.c_int64),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ggml_cgraph_p: TypeAlias = "ctypes._Pointer[ggml_cgraph]"  # type: ignore
 | 
	
		
			
				|  |  | +"""ctypes pointer to a [ggml_cgraph][ggml.ggml_cgraph]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Can be dereferenced to a [ggml_cgraph][ggml.ggml_cgraph] object using
 | 
	
		
			
				|  |  | +the `.contents` attribute."""
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# static const size_t GGML_GRAPH_SIZE = sizeof(struct ggml_cgraph);
 | 
	
		
			
				|  |  | +GGML_GRAPH_SIZE = ctypes.sizeof(ggml_cgraph)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# struct ggml_scratch {
 | 
	
		
			
				|  |  | +#     size_t offs;
 | 
	
		
			
				|  |  | +#     size_t size;
 | 
	
		
			
				|  |  | +#     void * data;
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +class ggml_scratch(ctypes.Structure):
 | 
	
		
			
				|  |  | +    _fields_ = [
 | 
	
		
			
				|  |  | +        ("offs", ctypes.c_size_t),
 | 
	
		
			
				|  |  | +        ("size", ctypes.c_size_t),
 | 
	
		
			
				|  |  | +        ("data", ctypes.c_void_p),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# struct ggml_init_params {
 | 
	
		
			
				|  |  | +#     // memory pool
 | 
	
		
			
				|  |  | +#     size_t mem_size;   // bytes
 | 
	
		
			
				|  |  | +#     void * mem_buffer; // if NULL, memory will be allocated internally
 | 
	
		
			
				|  |  | +#     bool   no_alloc;   // don't allocate memory for the tensor data
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +class ggml_init_params(ctypes.Structure):
 | 
	
		
			
				|  |  | +    """Initialization parameters for a ggml context
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    **NOTE**: Reference counting does not cross into ggml, if you allocate a memory buffer
 | 
	
		
			
				|  |  | +    in python using ctypes Arrays or a numpy array, you must keep a reference to it until
 | 
	
		
			
				|  |  | +    you free the ggml context otherwise you will encounter a segmentation fault.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Attributes:
 | 
	
		
			
				|  |  | +        mem_size (int): size of memory pool in bytes
 | 
	
		
			
				|  |  | +        mem_buffer (ctypes.c_void_p): pointer to memory pool, if None, memory will be allocated internally
 | 
	
		
			
				|  |  | +        no_alloc (bool): don't allocate memory for tensor data
 | 
	
		
			
				|  |  | +    """
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _fields_ = [
 | 
	
		
			
				|  |  | +        ("mem_size", ctypes.c_size_t),
 | 
	
		
			
				|  |  | +        ("mem_buffer", ctypes.c_void_p),
 | 
	
		
			
				|  |  | +        ("no_alloc", ctypes.c_bool),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // compute types
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // NOTE: the INIT or FINALIZE pass is not scheduled unless explicitly enabled.
 | 
	
		
			
				|  |  | +# // This behavior was changed since https://github.com/ggerganov/llama.cpp/pull/1995.
 | 
	
		
			
				|  |  | +# enum ggml_task_type {
 | 
	
		
			
				|  |  | +#     GGML_TASK_INIT = 0,
 | 
	
		
			
				|  |  | +#     GGML_TASK_COMPUTE,
 | 
	
		
			
				|  |  | +#     GGML_TASK_FINALIZE,
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +GGML_TASK_INIT = 0
 | 
	
		
			
				|  |  | +GGML_TASK_COMPUTE = 1
 | 
	
		
			
				|  |  | +GGML_TASK_FINALIZE = 2
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# struct ggml_compute_params {
 | 
	
		
			
				|  |  | +#     enum ggml_task_type type;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     // ith = thread index, nth = number of threads
 | 
	
		
			
				|  |  | +#     int ith, nth;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     // work buffer for all threads
 | 
	
		
			
				|  |  | +#     size_t wsize;
 | 
	
		
			
				|  |  | +#     void * wdata;
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +class ggml_compute_params(ctypes.Structure):
 | 
	
		
			
				|  |  | +    _fields_ = [
 | 
	
		
			
				|  |  | +        ("type", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("ith", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("nth", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("wsize", ctypes.c_size_t),
 | 
	
		
			
				|  |  | +        ("wdata", ctypes.c_void_p),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ggml_compute_params_p: TypeAlias = "ctypes._Pointer[ggml_compute_params]"  # type: ignore
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // misc
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void    ggml_time_init(void); // call this once at the beginning of the program
 | 
	
		
			
				|  |  | +def ggml_time_init():
 | 
	
		
			
				|  |  | +    return lib.ggml_time_init()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_time_init.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_time_init.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int64_t ggml_time_ms(void);
 | 
	
		
			
				|  |  | +def ggml_time_ms() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_time_ms()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_time_ms.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_time_ms.restype = ctypes.c_int64
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int64_t ggml_time_us(void);
 | 
	
		
			
				|  |  | +def ggml_time_us() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_time_us()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_time_us.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_time_us.restype = ctypes.c_int64
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int64_t ggml_cycles(void);
 | 
	
		
			
				|  |  | +def ggml_cycles() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cycles()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cycles.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cycles.restype = ctypes.c_int64
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int64_t ggml_cycles_per_ms(void);
 | 
	
		
			
				|  |  | +def ggml_cycles_per_ms() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cycles_per_ms()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cycles_per_ms.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cycles_per_ms.restype = ctypes.c_int64
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void    ggml_numa_init(void); // call once for better performance on NUMA systems
 | 
	
		
			
				|  |  | +def ggml_numa_init():
 | 
	
		
			
				|  |  | +    return lib.ggml_numa_init()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_numa_init.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_numa_init.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API bool    ggml_is_numa(void); // true if init detected that system has >1 NUMA node
 | 
	
		
			
				|  |  | +def ggml_is_numa() -> bool:
 | 
	
		
			
				|  |  | +    return lib.ggml_is_numa()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_is_numa.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_is_numa.restype = ctypes.c_bool
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void    ggml_print_object (const struct ggml_object * obj);
 | 
	
		
			
				|  |  | +def ggml_print_object(obj: ggml_object_p):
 | 
	
		
			
				|  |  | +    return lib.ggml_print_object(obj)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_print_object.argtypes = [ctypes.POINTER(ggml_object)]
 | 
	
		
			
				|  |  | +lib.ggml_print_object.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void    ggml_print_objects(const struct ggml_context * ctx);
 | 
	
		
			
				|  |  | +def ggml_print_objects(ctx: ggml_context_p):
 | 
	
		
			
				|  |  | +    return lib.ggml_print_objects(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_print_objects.argtypes = [ggml_context_p]
 | 
	
		
			
				|  |  | +lib.ggml_print_objects.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int64_t ggml_nelements   (const struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_nelements(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    """Get the number of elements in a tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        number of elements"""
 | 
	
		
			
				|  |  | +    return lib.ggml_nelements(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_nelements.argtypes = [ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_nelements.restype = ctypes.c_int64
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int64_t ggml_nrows       (const struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_nrows(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    """Get the number of rows in a tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        number of rows"""
 | 
	
		
			
				|  |  | +    return lib.ggml_nrows(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_nrows.argtypes = [ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_nrows.restype = ctypes.c_int64
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t  ggml_nbytes      (const struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_nbytes(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    """Get the number of bytes required to store tensor data
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        number of bytes"""
 | 
	
		
			
				|  |  | +    return lib.ggml_nbytes(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_nbytes.argtypes = [ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_nbytes.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t  ggml_nbytes_pad  (const struct ggml_tensor * tensor); // same as ggml_nbytes() but padded to GGML_MEM_ALIGN
 | 
	
		
			
				|  |  | +def ggml_nbytes_pad(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    """Get the number of bytes required to store tensor data, padded to GGML_MEM_ALIGN
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        number of bytes"""
 | 
	
		
			
				|  |  | +    return lib.ggml_nbytes_pad(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_nbytes_pad.argtypes = [ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_nbytes_pad.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t  ggml_nbytes_split(const struct ggml_tensor * tensor, int nrows_split);
 | 
	
		
			
				|  |  | +def ggml_nbytes_split(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    nrows_split: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_nbytes_split(tensor, nrows_split)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_nbytes_split.argtypes = [ctypes.POINTER(ggml_tensor), ctypes.c_int]
 | 
	
		
			
				|  |  | +lib.ggml_nbytes_split.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int     ggml_blck_size (enum ggml_type type);
 | 
	
		
			
				|  |  | +def ggml_blck_size(type: Union[ctypes.c_int, int]) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_blck_size(type)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_blck_size.argtypes = [ctypes.c_int]
 | 
	
		
			
				|  |  | +lib.ggml_blck_size.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t  ggml_type_size (enum ggml_type type); // size in bytes for all elements in a block
 | 
	
		
			
				|  |  | +def ggml_type_size(type: Union[ctypes.c_int, int]) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_type_size(type)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_type_size.argtypes = [ctypes.c_int]
 | 
	
		
			
				|  |  | +lib.ggml_type_size.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API float   ggml_type_sizef(enum ggml_type type); // ggml_type_size()/ggml_blck_size() as float
 | 
	
		
			
				|  |  | +def ggml_type_sizef(type: Union[ctypes.c_int, int]) -> float:
 | 
	
		
			
				|  |  | +    return lib.ggml_type_sizef(type)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_type_sizef.argtypes = [ctypes.c_int]
 | 
	
		
			
				|  |  | +lib.ggml_type_sizef.restype = ctypes.c_float
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API const char * ggml_type_name(enum ggml_type type);
 | 
	
		
			
				|  |  | +def ggml_type_name(type: Union[ctypes.c_int, int]) -> bytes:
 | 
	
		
			
				|  |  | +    return lib.ggml_type_name(type)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_type_name.argtypes = [ctypes.c_int]
 | 
	
		
			
				|  |  | +lib.ggml_type_name.restype = ctypes.c_char_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API const char * ggml_op_name  (enum ggml_op   op);
 | 
	
		
			
				|  |  | +def ggml_op_name(op: Union[ctypes.c_int, int]) -> bytes:
 | 
	
		
			
				|  |  | +    return lib.ggml_op_name(op)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_op_name.argtypes = [ctypes.c_int]
 | 
	
		
			
				|  |  | +lib.ggml_op_name.restype = ctypes.c_char_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API const char * ggml_op_symbol(enum ggml_op   op);
 | 
	
		
			
				|  |  | +def ggml_op_symbol(op: Union[ctypes.c_int, int]) -> bytes:
 | 
	
		
			
				|  |  | +    return lib.ggml_op_symbol(op)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_op_symbol.argtypes = [ctypes.c_int]
 | 
	
		
			
				|  |  | +lib.ggml_op_symbol.restype = ctypes.c_char_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t  ggml_element_size(const struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_element_size(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_element_size(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_element_size.argtypes = [ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_element_size.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API bool    ggml_is_quantized(enum ggml_type type);
 | 
	
		
			
				|  |  | +def ggml_is_quantized(type: Union[ctypes.c_int, int]) -> bool:
 | 
	
		
			
				|  |  | +    return lib.ggml_is_quantized(type)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_is_quantized.argtypes = [ctypes.c_int]
 | 
	
		
			
				|  |  | +lib.ggml_is_quantized.restype = ctypes.c_bool
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // TODO: temporary until model loading of ggml examples is refactored
 | 
	
		
			
				|  |  | +# GGML_API enum ggml_type ggml_ftype_to_ggml_type(enum ggml_ftype ftype);
 | 
	
		
			
				|  |  | +def ggml_ftype_to_ggml_type(ftype: Union[ctypes.c_int, int]) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_ftype_to_ggml_type(ftype)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_ftype_to_ggml_type.argtypes = [ctypes.c_int]
 | 
	
		
			
				|  |  | +lib.ggml_ftype_to_ggml_type.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API bool ggml_is_transposed(const struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_is_transposed(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> bool:
 | 
	
		
			
				|  |  | +    """Check if a tensor is transposed
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        True if tensor is transposed else False"""
 | 
	
		
			
				|  |  | +    return lib.ggml_is_transposed(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_is_transposed.argtypes = [ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_is_transposed.restype = ctypes.c_bool
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API bool ggml_is_contiguous(const struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_is_contiguous(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> bool:
 | 
	
		
			
				|  |  | +    """Check if a tensor is contiguous
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        True if tensor is contiguous else False"""
 | 
	
		
			
				|  |  | +    return lib.ggml_is_contiguous(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_is_contiguous.argtypes = [ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_is_contiguous.restype = ctypes.c_bool
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API bool ggml_is_permuted  (const struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_is_permuted(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> bool:
 | 
	
		
			
				|  |  | +    """Check if a tensor is permuted
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        True if tensor is permuted else False"""
 | 
	
		
			
				|  |  | +    return lib.ggml_is_permuted(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_is_permuted.argtypes = [ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_is_permuted.restype = ctypes.c_bool
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API bool ggml_are_same_shape(const struct ggml_tensor * t0, const struct ggml_tensor * t1);
 | 
	
		
			
				|  |  | +def ggml_are_same_shape(
 | 
	
		
			
				|  |  | +    t0: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    t1: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> bool:
 | 
	
		
			
				|  |  | +    """Check if two tensors have the same shape
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        t0: tensor 0
 | 
	
		
			
				|  |  | +        t1: tensor 1
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        True if tensors have the same shape else False"""
 | 
	
		
			
				|  |  | +    return lib.ggml_are_same_shape(t0, t1)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_are_same_shape.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_are_same_shape.restype = ctypes.c_bool
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // use this to compute the memory overhead of a tensor
 | 
	
		
			
				|  |  | +# GGML_API size_t ggml_tensor_overhead(void);
 | 
	
		
			
				|  |  | +def ggml_tensor_overhead() -> int:
 | 
	
		
			
				|  |  | +    """Overhead required for a tensor struct in bytes
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        size of tensor struct in bytes"""
 | 
	
		
			
				|  |  | +    return lib.ggml_tensor_overhead()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_tensor_overhead.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_tensor_overhead.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // main
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_context * ggml_init(struct ggml_init_params params);
 | 
	
		
			
				|  |  | +def ggml_init(
 | 
	
		
			
				|  |  | +    params: ggml_init_params,
 | 
	
		
			
				|  |  | +) -> ggml_context_p:
 | 
	
		
			
				|  |  | +    """Instantiate a new ggml context with params.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    You must call `ggml_free()` to free the context.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        params: ggml init params
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_context"""
 | 
	
		
			
				|  |  | +    return lib.ggml_init(params)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_init.argtypes = [ggml_init_params]
 | 
	
		
			
				|  |  | +lib.ggml_init.restype = ggml_context_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void                  ggml_free(struct ggml_context * ctx);
 | 
	
		
			
				|  |  | +def ggml_free(ctx: ggml_context_p):
 | 
	
		
			
				|  |  | +    """Free the ggml context.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context"""
 | 
	
		
			
				|  |  | +    return lib.ggml_free(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_free.argtypes = [ggml_context_p]
 | 
	
		
			
				|  |  | +lib.ggml_free.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t  ggml_used_mem(const struct ggml_context * ctx);
 | 
	
		
			
				|  |  | +def ggml_used_mem(ctx: ggml_context_p) -> int:
 | 
	
		
			
				|  |  | +    """Return the amount of memory used by the ggml context in bytes.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        amount of memory used in bytes"""
 | 
	
		
			
				|  |  | +    return lib.ggml_used_mem(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_used_mem.argtypes = [ggml_context_p]
 | 
	
		
			
				|  |  | +lib.ggml_used_mem.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t  ggml_set_scratch(struct ggml_context * ctx, struct ggml_scratch scratch);
 | 
	
		
			
				|  |  | +def ggml_set_scratch(ctx: ggml_context_p, scratch: ggml_scratch) -> int:
 | 
	
		
			
				|  |  | +    """Set the scratch buffer for the ggml context."""
 | 
	
		
			
				|  |  | +    return lib.ggml_set_scratch(ctx, scratch)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set_scratch.argtypes = [ggml_context_p, ggml_scratch]
 | 
	
		
			
				|  |  | +lib.ggml_set_scratch.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API bool    ggml_get_no_alloc(struct ggml_context * ctx);
 | 
	
		
			
				|  |  | +def ggml_get_no_alloc(ctx: ggml_context_p) -> bool:
 | 
	
		
			
				|  |  | +    """Return the no_alloc flag for the ggml context."""
 | 
	
		
			
				|  |  | +    return lib.ggml_get_no_alloc(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_get_no_alloc.argtypes = [ggml_context_p]
 | 
	
		
			
				|  |  | +lib.ggml_get_no_alloc.restype = ctypes.c_bool
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void    ggml_set_no_alloc(struct ggml_context * ctx, bool no_alloc);
 | 
	
		
			
				|  |  | +def ggml_set_no_alloc(ctx: ggml_context_p, no_alloc: Union[ctypes.c_bool, bool]):
 | 
	
		
			
				|  |  | +    """Set the no_alloc flag for the ggml context."""
 | 
	
		
			
				|  |  | +    return lib.ggml_set_no_alloc(ctx, no_alloc)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set_no_alloc.argtypes = [ggml_context_p, ctypes.c_bool]
 | 
	
		
			
				|  |  | +lib.ggml_set_no_alloc.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void *  ggml_get_mem_buffer     (struct ggml_context * ctx);
 | 
	
		
			
				|  |  | +def ggml_get_mem_buffer(ctx: ggml_context_p) -> Optional[ctypes.c_void_p]:
 | 
	
		
			
				|  |  | +    """Return the memory buffer for the ggml context."""
 | 
	
		
			
				|  |  | +    return lib.ggml_get_mem_buffer(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_get_mem_buffer.argtypes = [ggml_context_p]
 | 
	
		
			
				|  |  | +lib.ggml_get_mem_buffer.restype = ctypes.c_void_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t  ggml_get_mem_size       (struct ggml_context * ctx);
 | 
	
		
			
				|  |  | +def ggml_get_mem_size(ctx: ggml_context_p) -> int:
 | 
	
		
			
				|  |  | +    """Return the size of the memory buffer for the ggml context in bytes."""
 | 
	
		
			
				|  |  | +    return lib.ggml_get_mem_size(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_get_mem_size.argtypes = [ggml_context_p]
 | 
	
		
			
				|  |  | +lib.ggml_get_mem_size.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t  ggml_get_max_tensor_size(const struct ggml_context * ctx);
 | 
	
		
			
				|  |  | +def ggml_get_max_tensor_size(ctx: ggml_context_p) -> int:
 | 
	
		
			
				|  |  | +    """Return the maximum size of a tensor in bytes."""
 | 
	
		
			
				|  |  | +    return lib.ggml_get_max_tensor_size(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_get_max_tensor_size.argtypes = [ggml_context_p]
 | 
	
		
			
				|  |  | +lib.ggml_get_max_tensor_size.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_new_tensor(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         enum   ggml_type type,
 | 
	
		
			
				|  |  | +#         int    n_dims,
 | 
	
		
			
				|  |  | +#         const int64_t *ne);
 | 
	
		
			
				|  |  | +def ggml_new_tensor(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    type: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    n_dims: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    ne: CInt64Array,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Create a new tensor with the given type, number of dimensions, and number of elements in each dimension.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        type: ggml type
 | 
	
		
			
				|  |  | +        n_dims: number of dimensions
 | 
	
		
			
				|  |  | +        ne (ctypes.Array[ctypes.c_int64]): number of elements in each dimension (array of length n_dims)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_new_tensor(ctx, type, n_dims, ne)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_new_tensor.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_int64),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_new_tensor.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_new_tensor_1d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         enum   ggml_type type,
 | 
	
		
			
				|  |  | +#         int64_t ne0);
 | 
	
		
			
				|  |  | +def ggml_new_tensor_1d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p, type: Union[ctypes.c_int, int], ne0: Union[ctypes.c_int64, int]
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Create a new 1-dimensional tensor with the given type and number of elements.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        type: ggml type
 | 
	
		
			
				|  |  | +        ne0: number of elements in dimension 0
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_new_tensor_1d(ctx, type, ne0)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_new_tensor_1d.argtypes = [ggml_context_p, ctypes.c_int, ctypes.c_int64]
 | 
	
		
			
				|  |  | +lib.ggml_new_tensor_1d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_new_tensor_2d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         enum   ggml_type type,
 | 
	
		
			
				|  |  | +#         int64_t ne0,
 | 
	
		
			
				|  |  | +#         int64_t ne1);
 | 
	
		
			
				|  |  | +def ggml_new_tensor_2d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    type: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    ne0: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne1: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Create a new 2-dimensional tensor with the given type and number of elements in each dimension.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        type: ggml type
 | 
	
		
			
				|  |  | +        ne0: number of elements in dimension 0
 | 
	
		
			
				|  |  | +        ne1: number of elements in dimension 1
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_new_tensor_2d(ctx, type, ne0, ne1)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_new_tensor_2d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_new_tensor_2d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_new_tensor_3d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         enum   ggml_type type,
 | 
	
		
			
				|  |  | +#         int64_t ne0,
 | 
	
		
			
				|  |  | +#         int64_t ne1,
 | 
	
		
			
				|  |  | +#         int64_t ne2);
 | 
	
		
			
				|  |  | +def ggml_new_tensor_3d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    type: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    ne0: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne1: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne2: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Create a new 3-dimensional tensor with the given type and number of elements in each dimension.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        type: ggml type
 | 
	
		
			
				|  |  | +        ne0: number of elements in dimension 0
 | 
	
		
			
				|  |  | +        ne1: number of elements in dimension 1
 | 
	
		
			
				|  |  | +        ne2: number of elements in dimension 2
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_new_tensor_3d(ctx, type, ne0, ne1, ne2)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_new_tensor_3d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_new_tensor_3d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_new_tensor_4d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         enum   ggml_type type,
 | 
	
		
			
				|  |  | +#         int64_t ne0,
 | 
	
		
			
				|  |  | +#         int64_t ne1,
 | 
	
		
			
				|  |  | +#         int64_t ne2,
 | 
	
		
			
				|  |  | +#         int64_t ne3);
 | 
	
		
			
				|  |  | +def ggml_new_tensor_4d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    type: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    ne0: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne1: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne2: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne3: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Create a new 4-dimensional tensor with the given type and number of elements in each dimension.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        type: ggml type
 | 
	
		
			
				|  |  | +        ne0: number of elements in dimension 0
 | 
	
		
			
				|  |  | +        ne1: number of elements in dimension 1
 | 
	
		
			
				|  |  | +        ne2: number of elements in dimension 2
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_new_tensor_4d(ctx, type, ne0, ne1, ne2, ne3)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_new_tensor_4d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_new_tensor_4d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_new_i32(struct ggml_context * ctx, int32_t value);
 | 
	
		
			
				|  |  | +def ggml_new_i32(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p, value: Union[ctypes.c_int32, int]
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Create a 1 element tensor with the given integer value.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        value: integer value
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_new_i32(ctx, value)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_new_i32.argtypes = [ggml_context_p, ctypes.c_int32]
 | 
	
		
			
				|  |  | +lib.ggml_new_i32.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_new_f32(struct ggml_context * ctx, float value);
 | 
	
		
			
				|  |  | +def ggml_new_f32(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    value: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Create a 1 element tensor with the given float value.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        value: float value
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_new_f32(ctx, value)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_new_f32.argtypes = [ggml_context_p, ctypes.c_float]
 | 
	
		
			
				|  |  | +lib.ggml_new_f32.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_dup_tensor (struct ggml_context * ctx, const struct ggml_tensor * src);
 | 
	
		
			
				|  |  | +def ggml_dup_tensor(ctx: ggml_context_p, src: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Create a new tensor with the same type and dimensions as the source tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        src: source tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_dup_tensor(ctx, src)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_dup_tensor.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_dup_tensor.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_view_tensor(struct ggml_context * ctx, struct ggml_tensor * src);
 | 
	
		
			
				|  |  | +def ggml_view_tensor(ctx: ggml_context_p, src: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Create a new tensor with the same type, dimensions and data as the source tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        src: source tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_view_tensor(ctx, src)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_view_tensor.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_view_tensor.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_get_tensor(struct ggml_context * ctx, const char * name);
 | 
	
		
			
				|  |  | +def ggml_get_tensor(ctx: ggml_context_p, name: bytes) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Get a tensor from the ggml context by name.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        name: name of tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_get_tensor(ctx, name)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_get_tensor.argtypes = [ggml_context_p, ctypes.c_char_p]
 | 
	
		
			
				|  |  | +lib.ggml_get_tensor.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_set_zero(struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_set_zero(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Zero all elements in a tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_set_zero(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set_zero.argtypes = [ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_set_zero.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_set_i32 (struct ggml_tensor * tensor, int32_t value);
 | 
	
		
			
				|  |  | +def ggml_set_i32(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    value: Union[ctypes.c_int32, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Set all elements in a tensor to the given integer value.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +        value: integer value
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_set_i32(tensor, value)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set_i32.argtypes = [ctypes.POINTER(ggml_tensor), ctypes.c_int32]
 | 
	
		
			
				|  |  | +lib.ggml_set_i32.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_set_f32 (struct ggml_tensor * tensor, float value);
 | 
	
		
			
				|  |  | +def ggml_set_f32(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    value: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Set all elements in a tensor to the given float value.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +        value: float value
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_set_f32(tensor, value)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set_f32.argtypes = [ctypes.POINTER(ggml_tensor), ctypes.c_float]
 | 
	
		
			
				|  |  | +lib.ggml_set_f32.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int32_t ggml_get_i32_1d(const struct ggml_tensor * tensor, int i);
 | 
	
		
			
				|  |  | +def ggml_get_i32_1d(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    """Get the integer value of the i-th element in a 1-dimensional tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +        i: index of element
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        integer value of element at index i"""
 | 
	
		
			
				|  |  | +    return lib.ggml_get_i32_1d(tensor, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_get_i32_1d.argtypes = [ctypes.POINTER(ggml_tensor), ctypes.c_int]
 | 
	
		
			
				|  |  | +lib.ggml_get_i32_1d.restype = ctypes.c_int32
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void    ggml_set_i32_1d(const struct ggml_tensor * tensor, int i, int32_t value);
 | 
	
		
			
				|  |  | +def ggml_set_i32_1d(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    value: Union[ctypes.c_int32, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    """Set the integer value of the i-th element in a 1-dimensional tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +        i: index of element
 | 
	
		
			
				|  |  | +        value: integer value to set element to"""
 | 
	
		
			
				|  |  | +    return lib.ggml_set_i32_1d(tensor, i, value)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set_i32_1d.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int32,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_set_i32_1d.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API float   ggml_get_f32_1d(const struct ggml_tensor * tensor, int i);
 | 
	
		
			
				|  |  | +def ggml_get_f32_1d(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> float:
 | 
	
		
			
				|  |  | +    """Get the float value of the i-th element in a 1-dimensional tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        float value of element at index i"""
 | 
	
		
			
				|  |  | +    return lib.ggml_get_f32_1d(tensor, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_get_f32_1d.argtypes = [ctypes.POINTER(ggml_tensor), ctypes.c_int]
 | 
	
		
			
				|  |  | +lib.ggml_get_f32_1d.restype = ctypes.c_float
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void    ggml_set_f32_1d(const struct ggml_tensor * tensor, int i, float value);
 | 
	
		
			
				|  |  | +def ggml_set_f32_1d(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    value: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    """Set the float value of the i-th element in a 1-dimensional tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +        i: index of element
 | 
	
		
			
				|  |  | +        value: float value to set element to"""
 | 
	
		
			
				|  |  | +    return lib.ggml_set_f32_1d(tensor, i, value)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set_f32_1d.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_set_f32_1d.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void *  ggml_get_data    (const struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_get_data(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> Optional[ctypes.c_void_p]:
 | 
	
		
			
				|  |  | +    """Get the data pointer of a tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to data, or None if tensor has no data"""
 | 
	
		
			
				|  |  | +    return lib.ggml_get_data(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_get_data.argtypes = [ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_get_data.restype = ctypes.c_void_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API float * ggml_get_data_f32(const struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_get_data_f32(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> Optional[CFloatArray]:
 | 
	
		
			
				|  |  | +    """Get the data pointer of a tensor as a float array.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        (Optional[ctypes.Array[ctypes.c_float]]): array of float to data, or None if tensor has no data
 | 
	
		
			
				|  |  | +    """
 | 
	
		
			
				|  |  | +    return lib.ggml_get_data_f32(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_get_data_f32.argtypes = [ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_get_data_f32.restype = ctypes.POINTER(ctypes.c_float)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API enum ggml_unary_op ggml_get_unary_op(const struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_get_unary_op(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    """Get the unary operation of a tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        unary operation"""
 | 
	
		
			
				|  |  | +    return lib.ggml_get_unary_op(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_get_unary_op.argtypes = [ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_get_unary_op.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API const char *         ggml_get_name(const struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_get_name(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> bytes:
 | 
	
		
			
				|  |  | +    """Get the name of a tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        name of tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_get_name(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_get_name.argtypes = [ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_get_name.restype = ctypes.c_char_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_set_name(struct ggml_tensor * tensor, const char * name);
 | 
	
		
			
				|  |  | +def ggml_set_name(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    name: bytes,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Set the name of a tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +        name: name to set tensor to
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_set_name(tensor, name)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set_name.argtypes = [ctypes.POINTER(ggml_tensor), ctypes.c_char_p]
 | 
	
		
			
				|  |  | +lib.ggml_set_name.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_format_name(struct ggml_tensor * tensor, const char * fmt, ...);
 | 
	
		
			
				|  |  | +def ggml_format_name(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    fmt: bytes,
 | 
	
		
			
				|  |  | +    *args: Sequence[Union[bool, int, float, str]],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Format the name of a tensor using the given format c string and arguments.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: tensor
 | 
	
		
			
				|  |  | +        fmt: format c string
 | 
	
		
			
				|  |  | +        args: arguments to format string
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_format_name(tensor, fmt, *args)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_format_name.argtypes = [ctypes.POINTER(ggml_tensor), ctypes.c_char_p]
 | 
	
		
			
				|  |  | +lib.ggml_format_name.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# // operations on tensors with backpropagation
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_dup(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_dup(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_dup(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_dup.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_dup.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // in-place, returns view(a)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_dup_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_dup_inplace(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_dup_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_dup_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_dup_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_add(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_add(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Add two tensors together and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: first tensor
 | 
	
		
			
				|  |  | +        b: second tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_add(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_add.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_add.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_add_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_add_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Add two tensors together and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: first tensor
 | 
	
		
			
				|  |  | +        b: second tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_add_inplace(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_add_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_add_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_add1(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_add1(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_add1(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_add1.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_add1.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_add1_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_add1_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_add1_inplace(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_add1_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_add1_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_acc(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b,
 | 
	
		
			
				|  |  | +#         size_t                nb1,
 | 
	
		
			
				|  |  | +#         size_t                nb2,
 | 
	
		
			
				|  |  | +#         size_t                nb3,
 | 
	
		
			
				|  |  | +#         size_t                offset);
 | 
	
		
			
				|  |  | +def ggml_acc(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    nb1: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    nb2: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    nb3: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    offset: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_acc(ctx, a, b, nb1, nb2, nb3, offset)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_acc.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_acc.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_acc_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b,
 | 
	
		
			
				|  |  | +#         size_t                nb1,
 | 
	
		
			
				|  |  | +#         size_t                nb2,
 | 
	
		
			
				|  |  | +#         size_t                nb3,
 | 
	
		
			
				|  |  | +#         size_t                offset);
 | 
	
		
			
				|  |  | +def ggml_acc_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    nb1: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    nb2: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    nb3: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    offset: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_acc_inplace(ctx, a, b, nb1, nb2, nb3, offset)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_acc_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_acc_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_sub(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_sub(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Subtract two tensors and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: first tensor
 | 
	
		
			
				|  |  | +        b: second tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_sub(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_sub.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_sub.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_sub_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_sub_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Subtract two tensors and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: first tensor
 | 
	
		
			
				|  |  | +        b: second tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_sub_inplace(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_sub_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_sub_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_mul(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_mul(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Element-wise multiply two tensors and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: first tensor
 | 
	
		
			
				|  |  | +        b: second tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_mul(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_mul.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_mul.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_mul_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_mul_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Element-wise multiply two tensors and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: first tensor
 | 
	
		
			
				|  |  | +        b: second tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_mul_inplace(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_mul_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_mul_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_div(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_div(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Element-wise divide two tensors and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: first tensor
 | 
	
		
			
				|  |  | +        b: second tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_div(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_div.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_div.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_div_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_div_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Element-wise divide two tensors and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: first tensor
 | 
	
		
			
				|  |  | +        b: second tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_div_inplace(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_div_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_div_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_sqr(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_sqr(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Square all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_sqr(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_sqr.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_sqr.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_sqr_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_sqr_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Square all elements in a tensor and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_sqr_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_sqr_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_sqr_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_sqrt(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_sqrt(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Square root all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_sqrt(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_sqrt.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_sqrt.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_sqrt_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_sqrt_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Square root all elements in a tensor and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_sqrt_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_sqrt_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_sqrt_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_log(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_log(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Take the natural logarithm of all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_log(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_log.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_log.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_log_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_log_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Take the natural logarithm of all elements in a tensor and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_log_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_log_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_log_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // return scalar
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_sum(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_sum(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Sum all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_sum(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_sum.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_sum.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // sums along rows, with input shape [a,b,c,d] return shape [1,b,c,d]
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_sum_rows(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_sum_rows(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Sum all elements in a tensor along the first axis and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    sums along rows, with input shape [a,b,c,d] return shape [1,b,c,d]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_sum_rows(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_sum_rows.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_sum_rows.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // mean along rows
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_mean(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_mean(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Take the mean of all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_mean(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_mean.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_mean.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // argmax along rows
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_argmax(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_argmax(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Take the argmax of all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    argmax along rows
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_argmax(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_argmax.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_argmax.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // if a is the same shape as b, and a is not parameter, return a
 | 
	
		
			
				|  |  | +# // otherwise, return a new tensor: repeat(a) to fit in b
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_repeat(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_repeat(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Repeat a tensor to fit the shape of another tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    If a is the same shape as b, and a is not parameter, return a
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor to repeat
 | 
	
		
			
				|  |  | +        b: tensor to fit
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_repeat(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_repeat.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_repeat.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_repeat_back(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_repeat_back(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_repeat_back(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_repeat_back.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_repeat_back.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // concat a and b on dim 2
 | 
	
		
			
				|  |  | +# // used in stable-diffusion
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_concat(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_concat(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Concatenate two tensors along the second axis and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: first tensor
 | 
	
		
			
				|  |  | +        b: second tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_concat(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_concat.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_concat.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_abs(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_abs(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Take the absolute value of all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_abs(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_abs.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_abs.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_abs_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_abs_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Take the absolute value of all elements in a tensor and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_abs_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_abs_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_abs_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_sgn(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_sgn(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Get the sign of all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_sgn(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_sgn.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_sgn.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_sgn_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_sgn_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Get the sign of all elements in a tensor and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_sgn_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_sgn_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_sgn_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_neg(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_neg(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Negate all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_neg(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_neg.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_neg.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_neg_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_neg_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Negate all elements in a tensor and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_neg_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_neg_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_neg_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_step(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_step(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_step(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_step.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_step.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_tanh(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_tanh(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Apply the tanh activation function to all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_tanh(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_tanh.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_tanh.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_tanh_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_tanh_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Apply the tanh activation function to all elements in a tensor and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_tanh_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_tanh_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_tanh_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_elu(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_elu(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Apply the ELU activation function to all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_elu(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_elu.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_elu.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_elu_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_elu_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Apply the ELU activation function to all elements in a tensor and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_elu_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_elu_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_elu_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_relu(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_relu(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Apply the ReLU activation function to all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_relu(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_relu.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_relu.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_relu_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_relu_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Apply the ReLU activation function to all elements in a tensor and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_relu_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_relu_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_relu_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // TODO: double-check this computation is correct
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_gelu(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_gelu(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Apply the Gaussian Error Linear Unit activation function to all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_gelu(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_gelu.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_gelu.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_gelu_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_gelu_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Apply the Gaussian Error Linear Unit activation function to all elements in a tensor and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_gelu_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_gelu_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_gelu_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_gelu_quick(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_gelu_quick(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Apply the Gaussian Error Linear Unit activation function to all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_gelu_quick(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_gelu_quick.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_gelu_quick.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_gelu_quick_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_gelu_quick_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Apply the Gaussian Error Linear Unit activation function to all elements in a tensor and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_gelu_quick_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_gelu_quick_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_gelu_quick_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_silu(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_silu(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Apply the Sigmoid Linear Unit activation function to all elements in a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_silu(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_silu.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_silu.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_silu_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_silu_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Apply the Sigmoid Linear Unit activation function to all elements in a tensor and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_silu_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_silu_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_silu_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // a - x
 | 
	
		
			
				|  |  | +# // b - dy
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_silu_back(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_silu_back(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_silu_back(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_silu_back.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_silu_back.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // normalize along rows
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_norm(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a
 | 
	
		
			
				|  |  | +#         float                eps);
 | 
	
		
			
				|  |  | +def ggml_norm(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    eps: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Normalize all elements in a tensor along the first axis and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    normalize along rows.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +        eps: minimum value to avoid division by zero
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_norm(ctx, a, eps)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_norm.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor), ctypes.c_float]
 | 
	
		
			
				|  |  | +lib.ggml_norm.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_norm_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a
 | 
	
		
			
				|  |  | +#         float                eps);
 | 
	
		
			
				|  |  | +def ggml_norm_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    eps: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Normalize all elements in a tensor along the first axis and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    normalize along rows.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +        eps: minimum value to avoid division by zero
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_norm_inplace(ctx, a, eps)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_norm_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_norm_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_rms_norm(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         float                 eps);
 | 
	
		
			
				|  |  | +def ggml_rms_norm(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    eps: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Compute the RMS norm of a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +        eps: float
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_rms_norm(ctx, a, eps)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_rms_norm.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_rms_norm.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_rms_norm_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         float                 eps);
 | 
	
		
			
				|  |  | +def ggml_rms_norm_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    eps: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_rms_norm_inplace(ctx, a, eps)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_rms_norm_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_rms_norm_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // group normalize along ne0*ne1*n_groups
 | 
	
		
			
				|  |  | +# // used in stable-diffusion
 | 
	
		
			
				|  |  | +# // TODO: eps is hardcoded to 1e-6 for now
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_group_norm(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   n_groups);
 | 
	
		
			
				|  |  | +def ggml_group_norm(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    n_groups: int,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Group normalize a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +        n_groups: int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_group_norm(ctx, a, n_groups)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_group_norm.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_group_norm.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_group_norm_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   n_groups);
 | 
	
		
			
				|  |  | +def ggml_group_norm_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    n_groups: int,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Group normalize a tensor and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +        n_groups: int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_group_norm_inplace(ctx, a, n_groups)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_group_norm_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_group_norm_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // a - x
 | 
	
		
			
				|  |  | +# // b - dy
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_rms_norm_back(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b
 | 
	
		
			
				|  |  | +#         float                 eps);
 | 
	
		
			
				|  |  | +def ggml_rms_norm_back(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    eps: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_rms_norm_back(ctx, a, b, eps)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_rms_norm_back.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_rms_norm_back.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // A: m rows, n columns
 | 
	
		
			
				|  |  | +# // B: p rows, n columns  (i.e. we transpose it internally)
 | 
	
		
			
				|  |  | +# // result is m columns, p rows
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_mul_mat(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_mul_mat(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Multiply two matrices and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    A: m rows, n columns
 | 
	
		
			
				|  |  | +    B: p rows, n columns  (i.e. we transpose it internally)
 | 
	
		
			
				|  |  | +    result is m columns, p rows
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +        b: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_mul_mat(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_mul_mat.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_mul_mat.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // A: m columns, n rows,
 | 
	
		
			
				|  |  | +# // B: p columns, n rows,
 | 
	
		
			
				|  |  | +# // result is m columns, p rows
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_out_prod(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_out_prod(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Compute the outer product of two matrices and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    A: m columns, n rows,
 | 
	
		
			
				|  |  | +    B: p columns, n rows,
 | 
	
		
			
				|  |  | +    result is m columns, p rows
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +        b: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_out_prod(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_out_prod.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_out_prod.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# // operations on tensors without backpropagation
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_scale(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_scale(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Scale a tensor by another tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +        b: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_scale(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_scale.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_scale.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // in-place, returns view(a)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_scale_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_scale_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Scale a tensor by another tensor and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_scale_inplace(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_scale_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_scale_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // b -> view(a,offset,nb1,nb2,3), return modified a
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_set(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b,
 | 
	
		
			
				|  |  | +#         size_t                nb1,
 | 
	
		
			
				|  |  | +#         size_t                nb2,
 | 
	
		
			
				|  |  | +#         size_t                nb3,
 | 
	
		
			
				|  |  | +#         size_t                offset);
 | 
	
		
			
				|  |  | +def ggml_set(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    nb1: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    nb2: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    nb3: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    offset: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_set(ctx, a, b, nb1, nb2, nb3, offset)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_set.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // b -> view(a,offset,nb1,nb2,3), return view(a)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_set_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b,
 | 
	
		
			
				|  |  | +#         size_t                nb1,
 | 
	
		
			
				|  |  | +#         size_t                nb2,
 | 
	
		
			
				|  |  | +#         size_t                nb3,
 | 
	
		
			
				|  |  | +#         size_t                offset);
 | 
	
		
			
				|  |  | +def ggml_set_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    nb1: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    nb2: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    nb3: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    offset: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_set_inplace(ctx, a, b, nb1, nb2, nb3, offset)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_set_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_set_1d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b,
 | 
	
		
			
				|  |  | +#         size_t                offset);
 | 
	
		
			
				|  |  | +def ggml_set_1d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    offset: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_set_1d(ctx, a, b, offset)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set_1d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_set_1d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_set_1d_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b,
 | 
	
		
			
				|  |  | +#         size_t                offset);
 | 
	
		
			
				|  |  | +def ggml_set_1d_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    offset: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_set_1d_inplace(ctx, a, b, offset)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set_1d_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_set_1d_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // b -> view(a,offset,nb1,nb2,3), return modified a
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_set_2d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b,
 | 
	
		
			
				|  |  | +#         size_t                nb1,
 | 
	
		
			
				|  |  | +#         size_t                offset);
 | 
	
		
			
				|  |  | +def ggml_set_2d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    nb1: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    offset: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_set_2d(ctx, a, b, nb1, offset)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set_2d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_set_2d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // b -> view(a,offset,nb1,nb2,3), return view(a)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_set_2d_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b,
 | 
	
		
			
				|  |  | +#         size_t                nb1,
 | 
	
		
			
				|  |  | +#         size_t                offset);
 | 
	
		
			
				|  |  | +def ggml_set_2d_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    nb1: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    offset: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_set_2d_inplace(ctx, a, b, nb1, offset)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set_2d_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_set_2d_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // a -> b, return view(b)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_cpy(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_cpy(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpy(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpy.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_cpy.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // a -> b, in-place, return view(b)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_cpy_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_cpy_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpy_inplace(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpy_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_cpy_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // make contiguous
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_cont(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_cont(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Make a tensor contiguous and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_cont(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cont.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_cont.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // make contiguous, in-place
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_cont_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_cont_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Make a tensor contiguous and store the result in the first tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_cont_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cont_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_cont_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // return view(a), b specifies the new shape
 | 
	
		
			
				|  |  | +# // TODO: when we start computing gradient, make a copy instead of view
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_reshape(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_reshape(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_reshape(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_reshape.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_reshape.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // return view(a)
 | 
	
		
			
				|  |  | +# // TODO: when we start computing gradient, make a copy instead of view
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_reshape_1d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int64_t               ne0);
 | 
	
		
			
				|  |  | +def ggml_reshape_1d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    ne0: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_reshape_1d(ctx, a, ne0)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_reshape_1d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_reshape_1d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_reshape_2d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int64_t               ne0,
 | 
	
		
			
				|  |  | +#         int64_t               ne1);
 | 
	
		
			
				|  |  | +def ggml_reshape_2d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    ne0: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne1: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_reshape_2d(ctx, a, ne0, ne1)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_reshape_2d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_reshape_2d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // return view(a)
 | 
	
		
			
				|  |  | +# // TODO: when we start computing gradient, make a copy instead of view
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_reshape_3d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int64_t               ne0,
 | 
	
		
			
				|  |  | +#         int64_t               ne1,
 | 
	
		
			
				|  |  | +#         int64_t               ne2);
 | 
	
		
			
				|  |  | +def ggml_reshape_3d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    ne0: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne1: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne2: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_reshape_3d(ctx, a, ne0, ne1, ne2)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_reshape_3d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_reshape_3d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_reshape_4d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int64_t               ne0,
 | 
	
		
			
				|  |  | +#         int64_t               ne1,
 | 
	
		
			
				|  |  | +#         int64_t               ne2,
 | 
	
		
			
				|  |  | +#         int64_t               ne3);
 | 
	
		
			
				|  |  | +def ggml_reshape_4d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    ne0: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne1: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne2: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne3: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_reshape_4d(ctx, a, ne0, ne1, ne2, ne3)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_reshape_4d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_reshape_4d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // offset in bytes
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_view_1d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int64_t               ne0,
 | 
	
		
			
				|  |  | +#         size_t                offset);
 | 
	
		
			
				|  |  | +def ggml_view_1d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    ne0: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    offset: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_view_1d(ctx, a, ne0, offset)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_view_1d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_view_1d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_view_2d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int64_t               ne0,
 | 
	
		
			
				|  |  | +#         int64_t               ne1,
 | 
	
		
			
				|  |  | +#         size_t                nb1, // row stride in bytes
 | 
	
		
			
				|  |  | +#         size_t                offset);
 | 
	
		
			
				|  |  | +def ggml_view_2d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    ne0: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne1: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    nb1: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    offset: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_view_2d(ctx, a, ne0, ne1, nb1, offset)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_view_2d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_view_2d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_view_3d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int64_t               ne0,
 | 
	
		
			
				|  |  | +#         int64_t               ne1,
 | 
	
		
			
				|  |  | +#         int64_t               ne2,
 | 
	
		
			
				|  |  | +#         size_t                nb1, // row   stride in bytes
 | 
	
		
			
				|  |  | +#         size_t                nb2, // slice stride in bytes
 | 
	
		
			
				|  |  | +#         size_t                offset);
 | 
	
		
			
				|  |  | +def ggml_view_3d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    ne0: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne1: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne2: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    nb1: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    nb2: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    offset: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_view_3d(ctx, a, ne0, ne1, ne2, nb1, nb2, offset)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_view_3d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_view_3d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_view_4d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int64_t               ne0,
 | 
	
		
			
				|  |  | +#         int64_t               ne1,
 | 
	
		
			
				|  |  | +#         int64_t               ne2,
 | 
	
		
			
				|  |  | +#         int64_t               ne3,
 | 
	
		
			
				|  |  | +#         size_t                nb1, // row   stride in bytes
 | 
	
		
			
				|  |  | +#         size_t                nb2, // slice stride in bytes
 | 
	
		
			
				|  |  | +#         size_t                nb3,
 | 
	
		
			
				|  |  | +#         size_t                offset);
 | 
	
		
			
				|  |  | +def ggml_view_4d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    ne0: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne1: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne2: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    ne3: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +    nb1: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    nb2: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    nb3: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    offset: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_view_4d(ctx, a, ne0, ne1, ne2, ne3, nb1, nb2, nb3, offset)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_view_4d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_view_4d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_permute(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   axis0,
 | 
	
		
			
				|  |  | +#         int                   axis1,
 | 
	
		
			
				|  |  | +#         int                   axis2,
 | 
	
		
			
				|  |  | +#         int                   axis3);
 | 
	
		
			
				|  |  | +def ggml_permute(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    axis0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    axis1: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    axis2: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    axis3: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_permute(ctx, a, axis0, axis1, axis2, axis3)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_permute.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_permute.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // alias for ggml_permute(ctx, a, 1, 0, 2, 3)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_transpose(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_transpose(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Transpose *the first two dimensions* of a tensor and return the result.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    alias for `ggml_permute(ctx, a, 1, 0, 2, 3)`
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: ggml context
 | 
	
		
			
				|  |  | +        a: tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        Pointer to ggml_tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_transpose(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_transpose.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_transpose.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_get_rows(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_get_rows(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_get_rows(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_get_rows.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_get_rows.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_get_rows_back(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * c);
 | 
	
		
			
				|  |  | +def ggml_get_rows_back(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    c: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_get_rows_back(ctx, a, b, c)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_get_rows_back.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_get_rows_back.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_diag(
 | 
	
		
			
				|  |  | +#     struct ggml_context     * ctx,
 | 
	
		
			
				|  |  | +#     struct ggml_tensor      * a);
 | 
	
		
			
				|  |  | +def ggml_diag(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_diag(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_diag.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_diag.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // set elements above the diagonal to -INF
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_diag_mask_inf(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   n_past);
 | 
	
		
			
				|  |  | +def ggml_diag_mask_inf(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    n_past: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_diag_mask_inf(ctx, a, n_past)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_diag_mask_inf.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_diag_mask_inf.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // in-place, returns view(a)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_diag_mask_inf_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   n_past);
 | 
	
		
			
				|  |  | +def ggml_diag_mask_inf_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    n_past: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_diag_mask_inf_inplace(ctx, a, n_past)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_diag_mask_inf_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_diag_mask_inf_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // set elements above the diagonal to 0
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_diag_mask_zero(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   n_past);
 | 
	
		
			
				|  |  | +def ggml_diag_mask_zero(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    n_past: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_diag_mask_zero(ctx, a, n_past)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_diag_mask_zero.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_diag_mask_zero.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // in-place, returns view(a)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_diag_mask_zero_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   n_past);
 | 
	
		
			
				|  |  | +def ggml_diag_mask_zero_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    n_past: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_diag_mask_zero_inplace(ctx, a, n_past)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_diag_mask_zero_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_diag_mask_zero_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_soft_max(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_soft_max(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_soft_max(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_soft_max.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_soft_max.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // in-place, returns view(a)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_soft_max_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a);
 | 
	
		
			
				|  |  | +def ggml_soft_max_inplace(ctx: ggml_context_p, a: ggml_tensor_p) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_soft_max_inplace(ctx, a)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_soft_max_inplace.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_soft_max_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_soft_max_back(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_soft_max_back(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_soft_max_back(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_soft_max_back.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_soft_max_back.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // in-place, returns view(a)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_soft_max_back_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_soft_max_back_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_soft_max_back_inplace(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_soft_max_back_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_soft_max_back_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // rotary position embedding
 | 
	
		
			
				|  |  | +# // if mode & 1 == 1, skip n_past elements
 | 
	
		
			
				|  |  | +# // if mode & 2 == 1, GPT-NeoX style
 | 
	
		
			
				|  |  | +# // if mode & 4 == 1, ChatGLM style
 | 
	
		
			
				|  |  | +# // TODO: avoid creating a new tensor every time
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_rope(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   n_past,
 | 
	
		
			
				|  |  | +#         int                   n_dims,
 | 
	
		
			
				|  |  | +#         int                   mode,
 | 
	
		
			
				|  |  | +#         int                   n_ctx);
 | 
	
		
			
				|  |  | +def ggml_rope(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    n_past: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    n_dims: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    mode: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    n_ctx: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_rope(ctx, a, n_past, n_dims, mode, n_ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_rope.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_rope.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // in-place, returns view(a)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_rope_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   n_past,
 | 
	
		
			
				|  |  | +#         int                   n_dims,
 | 
	
		
			
				|  |  | +#         int                   mode,
 | 
	
		
			
				|  |  | +#         int                   n_ctx);
 | 
	
		
			
				|  |  | +def ggml_rope_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    n_past: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    n_dims: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    mode: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    n_ctx: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_rope_inplace(ctx, a, n_past, n_dims, mode, n_ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_rope_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_rope_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // custom RoPE
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_rope_custom(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   n_past,
 | 
	
		
			
				|  |  | +#         int                   n_dims,
 | 
	
		
			
				|  |  | +#         int                   mode,
 | 
	
		
			
				|  |  | +#         int                   n_ctx,
 | 
	
		
			
				|  |  | +#         float                 freq_base,
 | 
	
		
			
				|  |  | +#         float                 freq_scale);
 | 
	
		
			
				|  |  | +def ggml_rope_custom(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    n_past: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    n_dims: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    mode: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    n_ctx: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    freq_base: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +    freq_scale: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_rope_custom(
 | 
	
		
			
				|  |  | +        ctx, a, n_past, n_dims, mode, n_ctx, freq_base, freq_scale
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_rope_custom.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_rope_custom.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // in-place, returns view(a)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_rope_custom_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   n_past,
 | 
	
		
			
				|  |  | +#         int                   n_dims,
 | 
	
		
			
				|  |  | +#         int                   mode,
 | 
	
		
			
				|  |  | +#         int                   n_ctx,
 | 
	
		
			
				|  |  | +#         float                 freq_base,
 | 
	
		
			
				|  |  | +#         float                 freq_scale);
 | 
	
		
			
				|  |  | +def ggml_rope_custom_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    n_past: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    n_dims: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    mode: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    n_ctx: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    freq_base: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +    freq_scale: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_rope_custom_inplace(
 | 
	
		
			
				|  |  | +        ctx, a, n_past, n_dims, mode, n_ctx, freq_base, freq_scale
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_rope_custom_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_rope_custom_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // xPos RoPE, in-place, returns view(a)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_rope_xpos_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   n_past,
 | 
	
		
			
				|  |  | +#         int                   n_dims,
 | 
	
		
			
				|  |  | +#         float                 base,
 | 
	
		
			
				|  |  | +#         bool                  down);
 | 
	
		
			
				|  |  | +def ggml_rope_xpos_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    n_past: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    n_dims: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    base: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +    down: Union[ctypes.c_bool, bool],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_rope_xpos_inplace(ctx, a, n_past, n_dims, base, down)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_rope_xpos_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +    ctypes.c_bool,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_rope_xpos_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // rotary position embedding backward, i.e compute dx from dy
 | 
	
		
			
				|  |  | +# // a - dy
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_rope_back(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   n_past,
 | 
	
		
			
				|  |  | +#         int                   n_dims,
 | 
	
		
			
				|  |  | +#         int                   mode,
 | 
	
		
			
				|  |  | +#         int                   n_ctx,
 | 
	
		
			
				|  |  | +#         float                 freq_base,
 | 
	
		
			
				|  |  | +#         float                 freq_scale,
 | 
	
		
			
				|  |  | +#         float                 xpos_base,
 | 
	
		
			
				|  |  | +#         bool                  xpos_down);
 | 
	
		
			
				|  |  | +def ggml_rope_back(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    n_past: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    n_dims: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    mode: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    n_ctx: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    freq_base: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +    freq_scale: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +    xpos_base: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +    xpos_down: Union[ctypes.c_bool, bool],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_rope_back(
 | 
	
		
			
				|  |  | +        ctx, a, n_past, n_dims, mode, n_ctx, freq_base, freq_scale, xpos_base, xpos_down
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_rope_back.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +    ctypes.c_bool,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_rope_back.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // alibi position embedding
 | 
	
		
			
				|  |  | +# // in-place, returns view(a)
 | 
	
		
			
				|  |  | +# struct ggml_tensor * ggml_alibi(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   n_past,
 | 
	
		
			
				|  |  | +#         int                   n_head,
 | 
	
		
			
				|  |  | +#         float                 bias_max);
 | 
	
		
			
				|  |  | +def ggml_alibi(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    n_past: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    n_head: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    bias_max: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_alibi(ctx, a, n_past, n_head, bias_max)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_alibi.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_alibi.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // clamp
 | 
	
		
			
				|  |  | +# // in-place, returns view(a)
 | 
	
		
			
				|  |  | +# struct ggml_tensor * ggml_clamp(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         float                 min,
 | 
	
		
			
				|  |  | +#         float                 max);
 | 
	
		
			
				|  |  | +def ggml_clamp(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    min: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +    max: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_clamp(ctx, a, min, max)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_clamp.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_clamp.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_conv_1d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b,
 | 
	
		
			
				|  |  | +#         int                   s0,  // stride
 | 
	
		
			
				|  |  | +#         int                   p0,  // padding
 | 
	
		
			
				|  |  | +#         int                   d0); // dilation
 | 
	
		
			
				|  |  | +def ggml_conv_1d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    s0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    p0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    d0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Convolution 1D
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        b: filter tensor
 | 
	
		
			
				|  |  | +        s0: stride
 | 
	
		
			
				|  |  | +        p0: padding
 | 
	
		
			
				|  |  | +        d0: dilation
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_conv_1d(ctx, a, b, s0, p0, d0)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_conv_1d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_conv_1d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // conv_1d with padding = half
 | 
	
		
			
				|  |  | +# // alias for ggml_conv_1d(a, b, s, a->ne[0]/2, d)
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor* ggml_conv_1d_ph(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b,
 | 
	
		
			
				|  |  | +#         int                   s,
 | 
	
		
			
				|  |  | +#         int                   d);
 | 
	
		
			
				|  |  | +def ggml_conv_1d_ph(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    s: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    d: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Convolution 1D with padding = half
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        b: filter tensor
 | 
	
		
			
				|  |  | +        s: stride
 | 
	
		
			
				|  |  | +        d: dilation
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_conv_1d_ph(ctx, a, b, s, d)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_conv_1d_ph.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_conv_1d_ph.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_conv_2d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b,
 | 
	
		
			
				|  |  | +#         int                   s0,
 | 
	
		
			
				|  |  | +#         int                   s1,
 | 
	
		
			
				|  |  | +#         int                   p0,
 | 
	
		
			
				|  |  | +#         int                   p1,
 | 
	
		
			
				|  |  | +#         int                   d0,
 | 
	
		
			
				|  |  | +#         int                   d1);
 | 
	
		
			
				|  |  | +def ggml_conv_2d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    s0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    s1: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    p0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    p1: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    d0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    d1: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Convolution 2D
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        b: filter tensor
 | 
	
		
			
				|  |  | +        s0: stride
 | 
	
		
			
				|  |  | +        s1: stride
 | 
	
		
			
				|  |  | +        p0: padding
 | 
	
		
			
				|  |  | +        p1: padding
 | 
	
		
			
				|  |  | +        d0: dilation
 | 
	
		
			
				|  |  | +        d1: dilation
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_conv_2d(ctx, a, b, s0, s1, p0, p1, d0, d1)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_conv_2d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_conv_2d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // kernel size is a->ne[0] x a->ne[1]
 | 
	
		
			
				|  |  | +# // stride is equal to kernel size
 | 
	
		
			
				|  |  | +# // padding is zero
 | 
	
		
			
				|  |  | +# // example:
 | 
	
		
			
				|  |  | +# // a:     16   16    3  768
 | 
	
		
			
				|  |  | +# // b:   1024 1024    3    1
 | 
	
		
			
				|  |  | +# // res:   64   64  768    1
 | 
	
		
			
				|  |  | +# // used in sam
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_conv_2d_sk_p0(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_conv_2d_sk_p0(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Convolution 2D
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        b: filter tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_conv_2d_sk_p0(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_conv_2d_sk_p0.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_conv_2d_sk_p0.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // kernel size is a->ne[0] x a->ne[1]
 | 
	
		
			
				|  |  | +# // stride is 1
 | 
	
		
			
				|  |  | +# // padding is half
 | 
	
		
			
				|  |  | +# // example:
 | 
	
		
			
				|  |  | +# // a:      3    3    256  256
 | 
	
		
			
				|  |  | +# // b:     64   64    256    1
 | 
	
		
			
				|  |  | +# // res:   64   64    256    1
 | 
	
		
			
				|  |  | +# // used in sam
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_conv_2d_s1_ph(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b);
 | 
	
		
			
				|  |  | +def ggml_conv_2d_s1_ph(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Convolution 2D with stride = 1 and padding = half
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        b: filter tensor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_conv_2d_s1_ph(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_conv_2d_s1_ph.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_conv_2d_s1_ph.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_conv_transpose_2d_p0(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b,
 | 
	
		
			
				|  |  | +#         int                   stride);
 | 
	
		
			
				|  |  | +def ggml_conv_transpose_2d_p0(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    stride: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Convolution Transpose 2D with padding = zero
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        b: filter tensor
 | 
	
		
			
				|  |  | +        stride: stride
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_conv_transpose_2d_p0(ctx, a, b, stride)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_conv_transpose_2d_p0.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_conv_transpose_2d_p0.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# enum ggml_op_pool {
 | 
	
		
			
				|  |  | +#     GGML_OP_POOL_MAX,
 | 
	
		
			
				|  |  | +#     GGML_OP_POOL_AVG,
 | 
	
		
			
				|  |  | +#     GGML_OP_POOL_COUNT,
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +GGML_OP_POOL_MAX = 0
 | 
	
		
			
				|  |  | +GGML_OP_POOL_AVG = 1
 | 
	
		
			
				|  |  | +GGML_OP_POOL_COUNT = 2
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_pool_1d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         enum ggml_op_pool     op,
 | 
	
		
			
				|  |  | +#         int                   k0, // kernel size
 | 
	
		
			
				|  |  | +#         int                   s0, // stride
 | 
	
		
			
				|  |  | +#         int                   p0); // padding
 | 
	
		
			
				|  |  | +def ggml_pool_1d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    op: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    k0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    s0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    p0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """1D Pooling
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        op: pooling operation
 | 
	
		
			
				|  |  | +        k0: kernel size
 | 
	
		
			
				|  |  | +        s0: stride
 | 
	
		
			
				|  |  | +        p0: padding
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_pool_1d(ctx, a, op, k0, s0, p0)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_pool_1d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_pool_1d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_pool_2d(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         enum ggml_op_pool     op,
 | 
	
		
			
				|  |  | +#         int                   k0,
 | 
	
		
			
				|  |  | +#         int                   k1,
 | 
	
		
			
				|  |  | +#         int                   s0,
 | 
	
		
			
				|  |  | +#         int                   s1,
 | 
	
		
			
				|  |  | +#         int                   p0,
 | 
	
		
			
				|  |  | +#         int                   p1);
 | 
	
		
			
				|  |  | +def ggml_pool_2d(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    op: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    k0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    k1: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    s0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    s1: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    p0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    p1: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """2D Pooling
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        op: pooling operation
 | 
	
		
			
				|  |  | +        k0: kernel size
 | 
	
		
			
				|  |  | +        k1: kernel size
 | 
	
		
			
				|  |  | +        s0: stride
 | 
	
		
			
				|  |  | +        s1: stride
 | 
	
		
			
				|  |  | +        p0: padding
 | 
	
		
			
				|  |  | +        p1: padding
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_pool_2d(ctx, a, op, k0, k1, s0, s1, p0, p1)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_pool_2d.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_pool_2d.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // nearest interpolate
 | 
	
		
			
				|  |  | +# // used in stable-diffusion
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_upscale(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   scale_factor);
 | 
	
		
			
				|  |  | +def ggml_upscale(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    scale_factor: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Upscale
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        scale_factor: scale factor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_upscale(ctx, a, scale_factor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_upscale.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_upscale.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_flash_attn(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * q,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * k,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * v,
 | 
	
		
			
				|  |  | +#         bool                  masked);
 | 
	
		
			
				|  |  | +def ggml_flash_attn(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    q: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    k: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    v: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    masked: Union[ctypes.c_bool, bool],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_flash_attn(ctx, q, k, v, masked)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_flash_attn.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_bool,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_flash_attn.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_flash_attn_back(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * q,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * k,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * v,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * d,
 | 
	
		
			
				|  |  | +#         bool                  masked);
 | 
	
		
			
				|  |  | +def ggml_flash_attn_back(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    q: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    k: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    v: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    d: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    masked: Union[ctypes.c_bool, bool],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_flash_attn_back(ctx, q, k, v, d, masked)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_flash_attn_back.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_bool,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_flash_attn_back.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_flash_ff(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b0,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * b1,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * c0,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * c1);
 | 
	
		
			
				|  |  | +def ggml_flash_ff(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b0: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b1: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    c0: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    c1: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_flash_ff(ctx, a, b0, b1, c0, c1)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_flash_ff.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_flash_ff.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // partition into non-overlapping windows with padding if needed
 | 
	
		
			
				|  |  | +# // example:
 | 
	
		
			
				|  |  | +# // a:   768   64   64    1
 | 
	
		
			
				|  |  | +# // w:    14
 | 
	
		
			
				|  |  | +# // res: 768   14   14    25
 | 
	
		
			
				|  |  | +# // used in sam
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_win_part(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   w);
 | 
	
		
			
				|  |  | +def ggml_win_part(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    w: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_win_part(ctx, a, w)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_win_part.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_win_part.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // reverse of ggml_win_part
 | 
	
		
			
				|  |  | +# // used in sam
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_win_unpart(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   w0,
 | 
	
		
			
				|  |  | +#         int                   h0,
 | 
	
		
			
				|  |  | +#         int                   w);
 | 
	
		
			
				|  |  | +def ggml_win_unpart(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    w0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    h0: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    w: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_win_unpart(ctx, a, w0, h0, w)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_win_unpart.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_win_unpart.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_unary(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#             struct ggml_tensor * a,
 | 
	
		
			
				|  |  | +#             enum ggml_unary_op op);
 | 
	
		
			
				|  |  | +def ggml_unary(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    op: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_unary(ctx, a, op)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_unary.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_unary.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_unary_inplace(
 | 
	
		
			
				|  |  | +#     struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#     struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#     enum ggml_unary_op op);
 | 
	
		
			
				|  |  | +def ggml_unary_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    op: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_unary_inplace(ctx, a, op)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_unary_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_unary_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // used in sam
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_get_rel_pos(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         int                   qh,
 | 
	
		
			
				|  |  | +#         int                   kh);
 | 
	
		
			
				|  |  | +def ggml_get_rel_pos(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    qh: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    kh: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_get_rel_pos(ctx, a, qh, kh)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_get_rel_pos.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_get_rel_pos.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // used in sam
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_add_rel_pos(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * pw,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * ph);
 | 
	
		
			
				|  |  | +def ggml_add_rel_pos(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    pw: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    ph: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_add_rel_pos(ctx, a, pw, ph)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_add_rel_pos.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_add_rel_pos.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_add_rel_pos_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * pw,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * ph);
 | 
	
		
			
				|  |  | +def ggml_add_rel_pos_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    pw: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    ph: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_add_rel_pos_inplace(ctx, a, pw, ph)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_add_rel_pos_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_add_rel_pos_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // custom operators (DEPRECATED)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# typedef void (*ggml_unary_op_f32_t)(const int, float *, const float *);
 | 
	
		
			
				|  |  | +ggml_unary_op_f32_t = ctypes.CFUNCTYPE(
 | 
	
		
			
				|  |  | +    None, ctypes.c_int, ctypes.POINTER(ctypes.c_float), ctypes.POINTER(ctypes.c_float)
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# typedef void (*ggml_binary_op_f32_t)(const int, float *, const float *, const float *);
 | 
	
		
			
				|  |  | +ggml_binary_op_f32_t = ctypes.CFUNCTYPE(
 | 
	
		
			
				|  |  | +    None,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_float),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_float),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_float),
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# typedef void (*ggml_custom1_op_f32_t)(struct ggml_tensor *, const struct ggml_tensor *);
 | 
	
		
			
				|  |  | +ggml_custom1_op_f32_t = ctypes.CFUNCTYPE(
 | 
	
		
			
				|  |  | +    None, ctypes.POINTER(ggml_tensor), ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +"""Unary operator function type"""
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# typedef void (*ggml_custom2_op_f32_t)(struct ggml_tensor *, const struct ggml_tensor *, const struct ggml_tensor *);
 | 
	
		
			
				|  |  | +ggml_custom2_op_f32_t = ctypes.CFUNCTYPE(
 | 
	
		
			
				|  |  | +    None,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +"""Binary operator function type"""
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# typedef void (*ggml_custom3_op_f32_t)(struct ggml_tensor *, const struct ggml_tensor *, const struct ggml_tensor *, const struct ggml_tensor *);
 | 
	
		
			
				|  |  | +ggml_custom3_op_f32_t = ctypes.CFUNCTYPE(
 | 
	
		
			
				|  |  | +    None,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +"""Ternary operator function type"""
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_unary_f32(
 | 
	
		
			
				|  |  | +#         struct ggml_context        * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor         * a,
 | 
	
		
			
				|  |  | +#                ggml_unary_op_f32_t   fun);
 | 
	
		
			
				|  |  | +def ggml_map_unary_f32(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p, a: ggml_tensor_p, fun: "ctypes._FuncPointer"  # type: ignore
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_map_unary_f32(ctx, a, fun)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_unary_f32.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_unary_op_f32_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_unary_f32.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_unary_inplace_f32(
 | 
	
		
			
				|  |  | +#         struct ggml_context        * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor         * a,
 | 
	
		
			
				|  |  | +#                 ggml_unary_op_f32_t   fun);
 | 
	
		
			
				|  |  | +def ggml_map_unary_inplace_f32(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p, a: ggml_tensor_p, fun: "ctypes._FuncPointer"  # type: ignore
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_map_unary_inplace_f32(ctx, a, fun)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_unary_inplace_f32.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_unary_op_f32_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_unary_inplace_f32.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_binary_f32(
 | 
	
		
			
				|  |  | +#         struct ggml_context         * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor          * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor          * b,
 | 
	
		
			
				|  |  | +#                ggml_binary_op_f32_t   fun);
 | 
	
		
			
				|  |  | +def ggml_map_binary_f32(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    fun: "ctypes._FuncPointer",  # type: ignore
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_map_binary_f32(ctx, a, b, fun)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_binary_f32.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_binary_op_f32_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_binary_f32.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_binary_inplace_f32(
 | 
	
		
			
				|  |  | +#         struct ggml_context         * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor          * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor          * b,
 | 
	
		
			
				|  |  | +#                 ggml_binary_op_f32_t   fun);
 | 
	
		
			
				|  |  | +def ggml_map_binary_inplace_f32(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    fun: "ctypes._FuncPointer",  # type: ignore
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_map_binary_inplace_f32(ctx, a, b, fun)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_binary_inplace_f32.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_binary_op_f32_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_binary_inplace_f32.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_custom1_f32(
 | 
	
		
			
				|  |  | +#         struct ggml_context          * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor           * a,
 | 
	
		
			
				|  |  | +#                 ggml_custom1_op_f32_t   fun);
 | 
	
		
			
				|  |  | +def ggml_map_custom1_f32(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p, a: ggml_tensor_p, fun: "ctypes._FuncPointer"  # type: ignore
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Custom unary operator on a tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Example:
 | 
	
		
			
				|  |  | +        ```python
 | 
	
		
			
				|  |  | +        import ggml
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @ggml.ggml_custom1_op_f32_t
 | 
	
		
			
				|  |  | +        def custom_op(b: ggml.tensor_p, a: ggml.tensor_p):
 | 
	
		
			
				|  |  | +            # do something with a and copy to b
 | 
	
		
			
				|  |  | +            return
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ...
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        b = ggml.ggml_map_custom1_f32(ctx, a, custom_op)
 | 
	
		
			
				|  |  | +        ```
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        fun (ggml.ggml_custom1_op_f32_t): function to apply to each element
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_map_custom1_f32(ctx, a, fun)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_custom1_f32.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_custom1_op_f32_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_custom1_f32.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_custom1_inplace_f32(
 | 
	
		
			
				|  |  | +#         struct ggml_context          * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor           * a,
 | 
	
		
			
				|  |  | +#                 ggml_custom1_op_f32_t   fun);
 | 
	
		
			
				|  |  | +def ggml_map_custom1_inplace_f32(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p, a: ggml_tensor_p, fun: "ctypes._CFuncPtr"  # type: ignore
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Custom unary operator on a tensor inplace.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        fun (ggml.ggml_custom1_op_f32_t): function to apply to each element
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_map_custom1_inplace_f32(ctx, a, fun)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_custom1_inplace_f32.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_custom1_op_f32_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_custom1_inplace_f32.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_custom2_f32(
 | 
	
		
			
				|  |  | +#         struct ggml_context          * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor           * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor           * b,
 | 
	
		
			
				|  |  | +#                 ggml_custom2_op_f32_t   fun);
 | 
	
		
			
				|  |  | +def ggml_map_custom2_f32(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    fun: "ctypes._FuncPointer",  # type: ignore
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Custom binary operator on two tensors.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        b: input tensor
 | 
	
		
			
				|  |  | +        fun (ggml.ggml_custom2_op_f32_t): function to apply to each element
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_map_custom2_f32(ctx, a, b, fun)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_custom2_f32.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_custom2_op_f32_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_custom2_f32.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_custom2_inplace_f32(
 | 
	
		
			
				|  |  | +#         struct ggml_context          * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor           * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor           * b,
 | 
	
		
			
				|  |  | +#                 ggml_custom2_op_f32_t   fun);
 | 
	
		
			
				|  |  | +def ggml_map_custom2_inplace_f32(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    fun: "ctypes._FuncPointer",  # type: ignore
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Custom binary operator on two tensors inplace.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        b: input tensor
 | 
	
		
			
				|  |  | +        fun (ggml.ggml_custom2_op_f32_t): function to apply to each element
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_map_custom2_inplace_f32(ctx, a, b, fun)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_custom2_inplace_f32.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_custom2_op_f32_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_custom2_inplace_f32.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_custom3_f32(
 | 
	
		
			
				|  |  | +#         struct ggml_context          * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor           * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor           * b,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor           * c,
 | 
	
		
			
				|  |  | +#                 ggml_custom3_op_f32_t   fun);
 | 
	
		
			
				|  |  | +def ggml_map_custom3_f32(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    c: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    fun: "ctypes._FuncPointer",  # type: ignore
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Custom ternary operator on three tensors.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        b: input tensor
 | 
	
		
			
				|  |  | +        c: input tensor
 | 
	
		
			
				|  |  | +        fun (ggml.ggml_custom3_op_f32_t): function to apply to each element
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_map_custom3_f32(ctx, a, b, c, fun)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_custom3_f32.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_custom3_op_f32_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_custom3_f32.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_custom3_inplace_f32(
 | 
	
		
			
				|  |  | +#         struct ggml_context          * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor           * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor           * b,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor           * c,
 | 
	
		
			
				|  |  | +#                 ggml_custom3_op_f32_t   fun);
 | 
	
		
			
				|  |  | +def ggml_map_custom3_inplace_f32(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    c: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    fun: "ctypes._FuncPointer",  # type: ignore
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Custom ternary operator on three tensors inplace.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        a: input tensor
 | 
	
		
			
				|  |  | +        b: input tensor
 | 
	
		
			
				|  |  | +        c: input tensor
 | 
	
		
			
				|  |  | +        fun (ggml.ggml_custom3_op_f32_t): function to apply to each element
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        output tensor"""
 | 
	
		
			
				|  |  | +    return lib.ggml_map_custom3_inplace_f32(ctx, a, b, c, fun)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_custom3_inplace_f32.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_custom3_op_f32_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_custom3_inplace_f32.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // custom operators v2
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# typedef void (*ggml_custom1_op_t)(struct ggml_tensor * dst , const struct ggml_tensor * a, int ith, int nth, void * userdata);
 | 
	
		
			
				|  |  | +ggml_custom1_op_t = ctypes.CFUNCTYPE(
 | 
	
		
			
				|  |  | +    None,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +"""Custom unary operator on a tensor."""
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# typedef void (*ggml_custom2_op_t)(struct ggml_tensor * dst , const struct ggml_tensor * a, const struct ggml_tensor * b, int ith, int nth, void * userdata);
 | 
	
		
			
				|  |  | +ggml_custom2_op_t = ctypes.CFUNCTYPE(
 | 
	
		
			
				|  |  | +    None,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +"""Custom binary operator on two tensors."""
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# typedef void (*ggml_custom3_op_t)(struct ggml_tensor * dst , const struct ggml_tensor * a, const struct ggml_tensor * b, const struct ggml_tensor * c, int ith, int nth, void * userdata);
 | 
	
		
			
				|  |  | +ggml_custom3_op_t = ctypes.CFUNCTYPE(
 | 
	
		
			
				|  |  | +    None,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +"""Custom ternary operator on three tensors."""
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# #define GGML_N_TASKS_MAX -1
 | 
	
		
			
				|  |  | +GGML_N_TASKS_MAX = -1
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_custom1(
 | 
	
		
			
				|  |  | +#         struct ggml_context   * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor    * a,
 | 
	
		
			
				|  |  | +#         ggml_custom1_op_t       fun,
 | 
	
		
			
				|  |  | +#         int                     n_tasks,
 | 
	
		
			
				|  |  | +#         void                  * userdata);
 | 
	
		
			
				|  |  | +def ggml_map_custom1(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    fun: "ctypes._FuncPointer",  # type: ignore
 | 
	
		
			
				|  |  | +    n_tasks: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    userdata: Optional[ctypes.c_void_p],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_map_custom1(ctx, a, fun, n_tasks, userdata)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_custom1.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_custom1_op_t,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_custom1.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_custom1_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context   * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor    * a,
 | 
	
		
			
				|  |  | +#         ggml_custom1_op_t       fun,
 | 
	
		
			
				|  |  | +#         int                     n_tasks,
 | 
	
		
			
				|  |  | +#         void                  * userdata);
 | 
	
		
			
				|  |  | +def ggml_map_custom1_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    fun: "ctypes._FuncPointer",  # type: ignore
 | 
	
		
			
				|  |  | +    n_tasks: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    userdata: Optional[ctypes.c_void_p],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_map_custom1_inplace(ctx, a, fun, n_tasks, userdata)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_custom1_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_custom1_op_t,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_custom1_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_custom2(
 | 
	
		
			
				|  |  | +#         struct ggml_context   * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor    * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor    * b,
 | 
	
		
			
				|  |  | +#         ggml_custom2_op_t       fun,
 | 
	
		
			
				|  |  | +#         int                     n_tasks,
 | 
	
		
			
				|  |  | +#         void                  * userdata);
 | 
	
		
			
				|  |  | +def ggml_map_custom2(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    fun: "ctypes._FuncPointer",  # type: ignore
 | 
	
		
			
				|  |  | +    n_tasks: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    userdata: Optional[ctypes.c_void_p],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_map_custom2(ctx, a, b, fun, n_tasks, userdata)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_custom2.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_custom2_op_t,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_custom2.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_custom2_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context   * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor    * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor    * b,
 | 
	
		
			
				|  |  | +#         ggml_custom2_op_t       fun,
 | 
	
		
			
				|  |  | +#         int                     n_tasks,
 | 
	
		
			
				|  |  | +#         void                  * userdata);
 | 
	
		
			
				|  |  | +def ggml_map_custom2_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    fun: "ctypes._FuncPointer",  # type: ignore
 | 
	
		
			
				|  |  | +    n_tasks: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    userdata: Optional[ctypes.c_void_p],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_map_custom2_inplace(ctx, a, b, fun, n_tasks, userdata)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_custom2_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_custom2_op_t,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_custom2_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_custom3(
 | 
	
		
			
				|  |  | +#         struct ggml_context   * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor    * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor    * b,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor    * c,
 | 
	
		
			
				|  |  | +#         ggml_custom3_op_t       fun,
 | 
	
		
			
				|  |  | +#         int                     n_tasks,
 | 
	
		
			
				|  |  | +#         void                  * userdata);
 | 
	
		
			
				|  |  | +def ggml_map_custom3(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    c: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    fun: "ctypes._FuncPointer",  # type: ignore
 | 
	
		
			
				|  |  | +    n_tasks: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    userdata: Optional[ctypes.c_void_p],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_map_custom3(ctx, a, b, c, fun, n_tasks, userdata)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_custom3.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_custom3_op_t,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_custom3.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_map_custom3_inplace(
 | 
	
		
			
				|  |  | +#         struct ggml_context   * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor    * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor    * b,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor    * c,
 | 
	
		
			
				|  |  | +#         ggml_custom3_op_t       fun,
 | 
	
		
			
				|  |  | +#         int                     n_tasks,
 | 
	
		
			
				|  |  | +#         void                  * userdata);
 | 
	
		
			
				|  |  | +def ggml_map_custom3_inplace(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    c: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    fun: "ctypes._FuncPointer",  # type: ignore
 | 
	
		
			
				|  |  | +    n_tasks: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    userdata: Optional[ctypes.c_void_p],
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_map_custom3_inplace(ctx, a, b, c, fun, n_tasks, userdata)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_map_custom3_inplace.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ggml_custom3_op_t,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_map_custom3_inplace.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // loss function
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_cross_entropy_loss(
 | 
	
		
			
				|  |  | +#         struct ggml_context         * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor          * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor          * b);
 | 
	
		
			
				|  |  | +def ggml_cross_entropy_loss(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_cross_entropy_loss(ctx, a, b)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cross_entropy_loss.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_cross_entropy_loss.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_cross_entropy_loss_back(
 | 
	
		
			
				|  |  | +#         struct ggml_context         * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor          * a,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor          * b,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor          * c);
 | 
	
		
			
				|  |  | +def ggml_cross_entropy_loss_back(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    a: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    b: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    c: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_cross_entropy_loss_back(ctx, a, b, c)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cross_entropy_loss_back.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_cross_entropy_loss_back.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# // automatic differentiation
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void ggml_set_param(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor  * tensor);
 | 
	
		
			
				|  |  | +def ggml_set_param(ctx: ggml_context_p, tensor: ggml_tensor_p):
 | 
	
		
			
				|  |  | +    return lib.ggml_set_param(ctx, tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_set_param.argtypes = [ggml_context_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_set_param.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void ggml_build_forward_expand (struct ggml_cgraph * cgraph, struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_build_forward_expand(
 | 
	
		
			
				|  |  | +    cgraph: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    """Add a tensor to the forward computation graph. This is used to
 | 
	
		
			
				|  |  | +    compute and save the value of the tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        cgraph: The graph.
 | 
	
		
			
				|  |  | +        tensor: The tensor."""
 | 
	
		
			
				|  |  | +    return lib.ggml_build_forward_expand(cgraph, tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_build_forward_expand.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_build_forward_expand.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void ggml_build_backward_expand(struct ggml_context * ctx, struct ggml_cgraph * gf, struct ggml_cgraph * gb, bool keep);
 | 
	
		
			
				|  |  | +def ggml_build_backward_expand(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    gf: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +    gb: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +    keep: Union[ctypes.c_bool, bool],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    """Add a tensor to the backward computation graph. This is used to
 | 
	
		
			
				|  |  | +    compute the gradient of the tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: The context.
 | 
	
		
			
				|  |  | +        gf: The forward graph.
 | 
	
		
			
				|  |  | +        gb: The backward graph.
 | 
	
		
			
				|  |  | +        keep: Whether to keep the tensor."""
 | 
	
		
			
				|  |  | +    return lib.ggml_build_backward_expand(ctx, gf, gb, keep)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_build_backward_expand.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +    ctypes.c_bool,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_build_backward_expand.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_cgraph ggml_build_forward (struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_build_forward(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_cgraph:
 | 
	
		
			
				|  |  | +    """Build the forward computation graph.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        tensor: The tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        The graph."""
 | 
	
		
			
				|  |  | +    return lib.ggml_build_forward(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_build_forward.argtypes = [ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_build_forward.restype = ggml_cgraph
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_cgraph ggml_build_backward(struct ggml_context * ctx, struct ggml_cgraph * gf, bool keep);
 | 
	
		
			
				|  |  | +def ggml_build_backward(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    gf: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +    keep: Union[ctypes.c_bool, bool],
 | 
	
		
			
				|  |  | +) -> ggml_cgraph:
 | 
	
		
			
				|  |  | +    return lib.ggml_build_backward(ctx, gf, keep)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_build_backward.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +    ctypes.c_bool,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_build_backward.restype = ggml_cgraph
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // graph allocation in a context
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_cgraph * ggml_new_graph        (struct ggml_context * ctx);
 | 
	
		
			
				|  |  | +def ggml_new_graph(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +) -> ggml_cgraph:
 | 
	
		
			
				|  |  | +    """Create a new graph.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: The context.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        The graph."""
 | 
	
		
			
				|  |  | +    return lib.ggml_new_graph(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_new_graph.argtypes = [ggml_context_p]
 | 
	
		
			
				|  |  | +lib.ggml_new_graph.restype = ggml_cgraph
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_cgraph * ggml_build_forward_ctx(struct ggml_context * ctx, struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_build_forward_ctx(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> ggml_cgraph:
 | 
	
		
			
				|  |  | +    """Build the forward computation graph in a context.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: The context.
 | 
	
		
			
				|  |  | +        tensor: The tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        The graph."""
 | 
	
		
			
				|  |  | +    return lib.ggml_build_forward_ctx(ctx, tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_build_forward_ctx.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_build_forward_ctx.restype = ggml_cgraph
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t ggml_graph_overhead(void);
 | 
	
		
			
				|  |  | +def ggml_graph_overhead() -> int:
 | 
	
		
			
				|  |  | +    """Get the overhead of the graph."""
 | 
	
		
			
				|  |  | +    return lib.ggml_graph_overhead()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_graph_overhead.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_graph_overhead.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // ggml_graph_plan() has to be called before ggml_graph_compute()
 | 
	
		
			
				|  |  | +# // when plan.work_size > 0, caller must allocate memory for plan.work_data
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_cplan ggml_graph_plan   (struct ggml_cgraph * cgraph, int n_threads /*= GGML_DEFAULT_N_THREADS*/);
 | 
	
		
			
				|  |  | +def ggml_graph_plan(
 | 
	
		
			
				|  |  | +    cgraph: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +    n_threads: Union[ctypes.c_int, int] = GGML_DEFAULT_N_THREADS,
 | 
	
		
			
				|  |  | +) -> ggml_cplan:
 | 
	
		
			
				|  |  | +    """Plan the computation graph.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        cgraph: The graph.
 | 
	
		
			
				|  |  | +        n_threads: The number of threads to use.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        The plan."""
 | 
	
		
			
				|  |  | +    return lib.ggml_graph_plan(cgraph, n_threads)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_graph_plan.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_graph_plan.restype = ggml_cplan
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API               int ggml_graph_compute(struct ggml_cgraph * cgraph, struct ggml_cplan * cplan);
 | 
	
		
			
				|  |  | +def ggml_graph_compute(
 | 
	
		
			
				|  |  | +    cgraph: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +    cplan: ggml_cplan_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    """Compute the graph.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        cgraph: The graph.
 | 
	
		
			
				|  |  | +        cplan: The plan."""
 | 
	
		
			
				|  |  | +    return lib.ggml_graph_compute(cgraph, cplan)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_graph_compute.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_cplan),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_graph_compute.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API              void ggml_graph_reset  (struct ggml_cgraph * cgraph);
 | 
	
		
			
				|  |  | +def ggml_graph_reset(
 | 
	
		
			
				|  |  | +    cgraph: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    """Reset the graph.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        cgraph: The graph."""
 | 
	
		
			
				|  |  | +    return lib.ggml_graph_reset(cgraph)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // same as ggml_graph_compute() but the work data is allocated as a part of the context
 | 
	
		
			
				|  |  | +# // note: the drawback of this API is that you must have ensured that the context has enough memory for the work data
 | 
	
		
			
				|  |  | +# GGML_API void ggml_graph_compute_with_ctx(struct ggml_context * ctx, struct ggml_cgraph * cgraph, int n_threads);
 | 
	
		
			
				|  |  | +def ggml_graph_compute_with_ctx(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    cgraph: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +    n_threads: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    """Compute the graph with a context.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        ctx: The context.
 | 
	
		
			
				|  |  | +        cgraph: The graph.
 | 
	
		
			
				|  |  | +        n_threads: The number of threads to use."""
 | 
	
		
			
				|  |  | +    return lib.ggml_graph_compute_with_ctx(ctx, cgraph, n_threads)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_graph_compute_with_ctx.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_graph_compute_with_ctx.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_tensor * ggml_graph_get_tensor(struct ggml_cgraph * cgraph, const char * name);
 | 
	
		
			
				|  |  | +def ggml_graph_get_tensor(
 | 
	
		
			
				|  |  | +    cgraph: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +    name: bytes,
 | 
	
		
			
				|  |  | +) -> ggml_tensor_p:
 | 
	
		
			
				|  |  | +    """Get a tensor from the graph by name.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Parameters:
 | 
	
		
			
				|  |  | +        cgraph: The graph.
 | 
	
		
			
				|  |  | +        name: The name of the tensor.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Returns:
 | 
	
		
			
				|  |  | +        The tensor."""
 | 
	
		
			
				|  |  | +    return lib.ggml_graph_get_tensor(cgraph, name)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_graph_get_tensor.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_graph_get_tensor.restype = ctypes.POINTER(ggml_tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void               ggml_graph_export(const struct ggml_cgraph * cgraph, const char * fname);
 | 
	
		
			
				|  |  | +def ggml_graph_export(
 | 
	
		
			
				|  |  | +    cgraph: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +    fname: bytes,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_graph_export(cgraph, fname)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_graph_export.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_graph_export.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_cgraph ggml_graph_import(const char * fname, struct ggml_context ** ctx_data, struct ggml_context ** ctx_eval);
 | 
	
		
			
				|  |  | +def ggml_graph_import(
 | 
	
		
			
				|  |  | +    fname: bytes,
 | 
	
		
			
				|  |  | +    ctx_data: "ctypes._Pointer[ggml_context_p]",  # type: ignore
 | 
	
		
			
				|  |  | +    ctx_eval: "ctypes._Pointer[ggml_context_p]",  # type: ignore
 | 
	
		
			
				|  |  | +) -> ggml_cgraph:
 | 
	
		
			
				|  |  | +    return lib.ggml_graph_import(fname, ctx_data, ctx_eval)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_graph_import.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_context_p),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_context_p),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_graph_import.restype = ggml_cgraph
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // print info and performance information for the graph
 | 
	
		
			
				|  |  | +# GGML_API void ggml_graph_print(const struct ggml_cgraph * cgraph);
 | 
	
		
			
				|  |  | +def ggml_graph_print(
 | 
	
		
			
				|  |  | +    cgraph: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_graph_print(cgraph)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_graph_print.argtypes = [ctypes.POINTER(ggml_cgraph)]
 | 
	
		
			
				|  |  | +lib.ggml_graph_print.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // dump the graph into a file using the dot format
 | 
	
		
			
				|  |  | +# GGML_API void ggml_graph_dump_dot(const struct ggml_cgraph * gb, const struct ggml_cgraph * gf, const char * filename);
 | 
	
		
			
				|  |  | +def ggml_graph_dump_dot(
 | 
	
		
			
				|  |  | +    gb: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +    gf: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +    filename: bytes,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_graph_dump_dot(gb, gf, filename)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_graph_dump_dot.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_graph_dump_dot.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# // optimization
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // optimization methods
 | 
	
		
			
				|  |  | +# enum ggml_opt_type {
 | 
	
		
			
				|  |  | +#     GGML_OPT_ADAM,
 | 
	
		
			
				|  |  | +#     GGML_OPT_LBFGS,
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +GGML_OPT_ADAM = 0
 | 
	
		
			
				|  |  | +GGML_OPT_LBFGS = 1
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // linesearch methods
 | 
	
		
			
				|  |  | +# enum ggml_linesearch {
 | 
	
		
			
				|  |  | +#     GGML_LINESEARCH_DEFAULT = 1,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     GGML_LINESEARCH_BACKTRACKING_ARMIJO       = 0,
 | 
	
		
			
				|  |  | +#     GGML_LINESEARCH_BACKTRACKING_WOLFE        = 1,
 | 
	
		
			
				|  |  | +#     GGML_LINESEARCH_BACKTRACKING_STRONG_WOLFE = 2,
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +GGML_LINESEARCH_DEFAULT = 1
 | 
	
		
			
				|  |  | +GGML_LINESEARCH_BACKTRACKING_ARMIJO = 0
 | 
	
		
			
				|  |  | +GGML_LINESEARCH_BACKTRACKING_WOLFE = 1
 | 
	
		
			
				|  |  | +GGML_LINESEARCH_BACKTRACKING_STRONG_WOLFE = 2
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // optimization return values
 | 
	
		
			
				|  |  | +# enum ggml_opt_result {
 | 
	
		
			
				|  |  | +#     GGML_OPT_OK = 0,
 | 
	
		
			
				|  |  | +#     GGML_OPT_DID_NOT_CONVERGE,
 | 
	
		
			
				|  |  | +#     GGML_OPT_NO_CONTEXT,
 | 
	
		
			
				|  |  | +#     GGML_OPT_INVALID_WOLFE,
 | 
	
		
			
				|  |  | +#     GGML_OPT_FAIL,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     GGML_LINESEARCH_FAIL = -128,
 | 
	
		
			
				|  |  | +#     GGML_LINESEARCH_MINIMUM_STEP,
 | 
	
		
			
				|  |  | +#     GGML_LINESEARCH_MAXIMUM_STEP,
 | 
	
		
			
				|  |  | +#     GGML_LINESEARCH_MAXIMUM_ITERATIONS,
 | 
	
		
			
				|  |  | +#     GGML_LINESEARCH_INVALID_PARAMETERS,
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +GGML_OPT_OK = 0
 | 
	
		
			
				|  |  | +GGML_OPT_DID_NOT_CONVERGE = 1
 | 
	
		
			
				|  |  | +GGML_OPT_NO_CONTEXT = 2
 | 
	
		
			
				|  |  | +GGML_OPT_INVALID_WOLFE = 3
 | 
	
		
			
				|  |  | +GGML_OPT_FAIL = 4
 | 
	
		
			
				|  |  | +GGML_LINESEARCH_FAIL = -128
 | 
	
		
			
				|  |  | +GGML_LINESEARCH_MINIMUM_STEP = -127
 | 
	
		
			
				|  |  | +GGML_LINESEARCH_MAXIMUM_STEP = -126
 | 
	
		
			
				|  |  | +GGML_LINESEARCH_MAXIMUM_ITERATIONS = -125
 | 
	
		
			
				|  |  | +GGML_LINESEARCH_INVALID_PARAMETERS = -124
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# typedef void (*ggml_opt_callback)(void * data, float * sched);
 | 
	
		
			
				|  |  | +ggml_opt_callback = ctypes.CFUNCTYPE(
 | 
	
		
			
				|  |  | +    None,
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_float),
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // optimization parameters
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# //   see ggml.c (ggml_opt_default_params) for default values
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# struct ggml_opt_params {
 | 
	
		
			
				|  |  | +#     enum ggml_opt_type type;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     int n_threads;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     // delta-based convergence test
 | 
	
		
			
				|  |  | +#     //
 | 
	
		
			
				|  |  | +#     //   if past == 0 - disabled
 | 
	
		
			
				|  |  | +#     //   if past > 0:
 | 
	
		
			
				|  |  | +#     //     stop if |f(x) - f(x_past)| < delta * max(1, |f(x)|)
 | 
	
		
			
				|  |  | +#     //
 | 
	
		
			
				|  |  | +#     int past;
 | 
	
		
			
				|  |  | +#     float delta;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     // maximum number of iterations without improvement
 | 
	
		
			
				|  |  | +#     //
 | 
	
		
			
				|  |  | +#     //   if 0 - disabled
 | 
	
		
			
				|  |  | +#     //   if > 0:
 | 
	
		
			
				|  |  | +#     //     assume convergence if no cost improvement in this number of iterations
 | 
	
		
			
				|  |  | +#     //
 | 
	
		
			
				|  |  | +#     int max_no_improvement;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     bool print_forward_graph;
 | 
	
		
			
				|  |  | +#     bool print_backward_graph;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     // ADAM parameters
 | 
	
		
			
				|  |  | +#     struct {
 | 
	
		
			
				|  |  | +#         int n_iter;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#         float sched; // schedule multiplier (fixed, decay or warmup)
 | 
	
		
			
				|  |  | +#         float decay; // weight decay for AdamW, use 0.0f to disable
 | 
	
		
			
				|  |  | +#         int   decay_min_ndim; // minimum number of tensor dimension to apply weight decay
 | 
	
		
			
				|  |  | +#         float alpha; // learning rate
 | 
	
		
			
				|  |  | +#         float beta1;
 | 
	
		
			
				|  |  | +#         float beta2;
 | 
	
		
			
				|  |  | +#         float eps;   // epsilon for numerical stability
 | 
	
		
			
				|  |  | +#         float eps_f; // epsilon for convergence test
 | 
	
		
			
				|  |  | +#         float eps_g; // epsilon for convergence test
 | 
	
		
			
				|  |  | +#         float gclip; // gradient clipping
 | 
	
		
			
				|  |  | +#     } adam;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     // LBFGS parameters
 | 
	
		
			
				|  |  | +#     struct {
 | 
	
		
			
				|  |  | +#         int m; // number of corrections to approximate the inv. Hessian
 | 
	
		
			
				|  |  | +#         int n_iter;
 | 
	
		
			
				|  |  | +#         int max_linesearch;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#         float eps;      // convergence tolerance
 | 
	
		
			
				|  |  | +#         float ftol;     // line search tolerance
 | 
	
		
			
				|  |  | +#         float wolfe;
 | 
	
		
			
				|  |  | +#         float min_step;
 | 
	
		
			
				|  |  | +#         float max_step;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#         enum ggml_linesearch linesearch;
 | 
	
		
			
				|  |  | +#     } lbfgs;
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class ggml_opt_params_adam(ctypes.Structure):
 | 
	
		
			
				|  |  | +    _fields_ = [
 | 
	
		
			
				|  |  | +        ("n_iter", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("sched", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("decay", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("decay_min_ndim", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("alpha", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("beta1", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("beta2", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("eps", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("eps_f", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("eps_g", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("gclip", ctypes.c_float),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class ggml_opt_params_lbfgs(ctypes.Structure):
 | 
	
		
			
				|  |  | +    _fields_ = [
 | 
	
		
			
				|  |  | +        ("m", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("n_iter", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("max_linesearch", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("eps", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("ftol", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("wolfe", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("min_step", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("max_step", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("linesearch", ctypes.c_int),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class ggml_opt_params(ctypes.Structure):
 | 
	
		
			
				|  |  | +    _fields_ = [
 | 
	
		
			
				|  |  | +        ("type", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("n_threads", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("past", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("delta", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("max_no_improvement", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("print_forward_graph", ctypes.c_bool),
 | 
	
		
			
				|  |  | +        ("print_backward_graph", ctypes.c_bool),
 | 
	
		
			
				|  |  | +        ("adam", ggml_opt_params_adam),
 | 
	
		
			
				|  |  | +        ("lbfgs", ggml_opt_params_lbfgs),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# struct ggml_opt_context {
 | 
	
		
			
				|  |  | +#     struct ggml_context * ctx;
 | 
	
		
			
				|  |  | +#     struct ggml_opt_params params;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     int iter;
 | 
	
		
			
				|  |  | +#     int64_t nx; // number of parameter elements
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     bool just_initialized;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     float loss_before;
 | 
	
		
			
				|  |  | +#     float loss_after;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     struct {
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * m;  // first moment
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * v;  // second moment
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * pf; // past function values
 | 
	
		
			
				|  |  | +#         float fx_best;
 | 
	
		
			
				|  |  | +#         float fx_prev;
 | 
	
		
			
				|  |  | +#         int n_no_improvement;
 | 
	
		
			
				|  |  | +#     } adam;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     struct {
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * x;    // current parameters
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * xp;   // previous parameters
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * g;    // current gradient
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * gp;   // previous gradient
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * d;    // search direction
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * pf;   // past function values
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * lmal; // the L-BFGS memory alpha
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * lmys; // the L-BFGS memory ys
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * lms;  // the L-BFGS memory s
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * lmy;  // the L-BFGS memory y
 | 
	
		
			
				|  |  | +#         float fx_best;
 | 
	
		
			
				|  |  | +#         float step;
 | 
	
		
			
				|  |  | +#         int j;
 | 
	
		
			
				|  |  | +#         int k;
 | 
	
		
			
				|  |  | +#         int end;
 | 
	
		
			
				|  |  | +#         int n_no_improvement;
 | 
	
		
			
				|  |  | +#     } lbfgs;
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class ggml_opt_context_adam(ctypes.Structure):
 | 
	
		
			
				|  |  | +    _fields_ = [
 | 
	
		
			
				|  |  | +        ("m", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +        ("v", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +        ("pf", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +        ("fx_best", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("fx_prev", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("n_no_improvement", ctypes.c_int),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class ggml_opt_context_lbfgs(ctypes.Structure):
 | 
	
		
			
				|  |  | +    _fields_ = [
 | 
	
		
			
				|  |  | +        ("x", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +        ("xp", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +        ("g", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +        ("gp", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +        ("d", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +        ("pf", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +        ("lmal", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +        ("lmys", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +        ("lms", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +        ("lmy", ctypes.POINTER(ggml_tensor)),
 | 
	
		
			
				|  |  | +        ("fx_best", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("step", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("j", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("k", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("end", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("n_no_improvement", ctypes.c_int),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class ggml_opt_context(ctypes.Structure):
 | 
	
		
			
				|  |  | +    _fields_ = [
 | 
	
		
			
				|  |  | +        ("ctx", ggml_context_p),
 | 
	
		
			
				|  |  | +        ("params", ggml_opt_params),
 | 
	
		
			
				|  |  | +        ("iter", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("nx", ctypes.c_int64),
 | 
	
		
			
				|  |  | +        ("just_initialized", ctypes.c_bool),
 | 
	
		
			
				|  |  | +        ("loss_before", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("loss_after", ctypes.c_float),
 | 
	
		
			
				|  |  | +        ("adam", ggml_opt_context_adam),
 | 
	
		
			
				|  |  | +        ("lbfgs", ggml_opt_context_lbfgs),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ggml_opt_context_p = ctypes.POINTER(ggml_opt_context)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_opt_params ggml_opt_default_params(enum ggml_opt_type type);
 | 
	
		
			
				|  |  | +def ggml_opt_default_params(type: Union[ctypes.c_int, bool]) -> ggml_opt_params:
 | 
	
		
			
				|  |  | +    return lib.ggml_opt_default_params(type)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_opt_default_params.argtypes = [ctypes.c_int]
 | 
	
		
			
				|  |  | +lib.ggml_opt_default_params.restype = ggml_opt_params
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // optimize the function defined by the tensor f
 | 
	
		
			
				|  |  | +# GGML_API enum ggml_opt_result ggml_opt(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_opt_params params,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * f);
 | 
	
		
			
				|  |  | +def ggml_opt(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    params: ggml_opt_params,
 | 
	
		
			
				|  |  | +    f: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_opt(ctx, params, f)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_opt.argtypes = [ggml_context_p, ggml_opt_params, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_opt.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // initialize optimizer context
 | 
	
		
			
				|  |  | +# GGML_API void ggml_opt_init(
 | 
	
		
			
				|  |  | +#         struct ggml_context     * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_opt_context * opt,
 | 
	
		
			
				|  |  | +#         struct ggml_opt_params    params,
 | 
	
		
			
				|  |  | +#         int64_t                   nx);
 | 
	
		
			
				|  |  | +def ggml_opt_init(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    opt: "ctypes._Pointer[ggml_opt_context]",  # type: ignore
 | 
	
		
			
				|  |  | +    params: ggml_opt_params,
 | 
	
		
			
				|  |  | +    nx: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_opt_init(ctx, opt, params, nx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_opt_init.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_opt_context),
 | 
	
		
			
				|  |  | +    ggml_opt_params,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_opt_init.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // continue optimizing the function defined by the tensor f
 | 
	
		
			
				|  |  | +# GGML_API enum ggml_opt_result ggml_opt_resume(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_opt_context * opt,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * f);
 | 
	
		
			
				|  |  | +def ggml_opt_resume(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    opt: "ctypes._Pointer[ggml_opt_context]",  # type: ignore
 | 
	
		
			
				|  |  | +    f: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_opt_resume(ctx, opt, f)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_opt_resume.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_opt_context),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_opt_resume.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // continue optimizing the function defined by the tensor f
 | 
	
		
			
				|  |  | +# GGML_API enum ggml_opt_result ggml_opt_resume_g(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_opt_context * opt,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * f,
 | 
	
		
			
				|  |  | +#         struct ggml_cgraph * gf,
 | 
	
		
			
				|  |  | +#         struct ggml_cgraph * gb,
 | 
	
		
			
				|  |  | +#         ggml_opt_callback callback,
 | 
	
		
			
				|  |  | +#         void * callback_data);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // continue optimizing the function defined by the tensor f
 | 
	
		
			
				|  |  | +# GGML_API enum ggml_opt_result ggml_opt_resume_g(
 | 
	
		
			
				|  |  | +#         struct ggml_context * ctx,
 | 
	
		
			
				|  |  | +#         struct ggml_opt_context * opt,
 | 
	
		
			
				|  |  | +#         struct ggml_tensor * f,
 | 
	
		
			
				|  |  | +#         struct ggml_cgraph * gf,
 | 
	
		
			
				|  |  | +#         struct ggml_cgraph * gb);
 | 
	
		
			
				|  |  | +def ggml_opt_resume_g(
 | 
	
		
			
				|  |  | +    ctx: ggml_context_p,
 | 
	
		
			
				|  |  | +    opt: "ctypes._Pointer[ggml_opt_context]",  # type: ignore
 | 
	
		
			
				|  |  | +    f: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    gf: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +    gb: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +    callback: ggml_opt_callback = None,
 | 
	
		
			
				|  |  | +    callback_data: ctypes.c_void_p = None,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_opt_resume_g(ctx, opt, f, gf, gb, callback, callback_data)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_opt_resume_g.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_opt_context),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +    ggml_opt_callback,
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_opt_resume_g.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# // quantization
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t ggml_quantize_q4_0(const float * src, void * dst, int n, int k, int64_t * hist);
 | 
	
		
			
				|  |  | +def ggml_quantize_q4_0(
 | 
	
		
			
				|  |  | +    src: CFloatArray,
 | 
	
		
			
				|  |  | +    dst: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    n: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    k: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    hist: CInt64Array,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_quantize_q4_0(src, dst, n, k, hist)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_quantize_q4_0.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_float),
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_int64),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_quantize_q4_0.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t ggml_quantize_q4_1(const float * src, void * dst, int n, int k, int64_t * hist);
 | 
	
		
			
				|  |  | +def ggml_quantize_q4_1(
 | 
	
		
			
				|  |  | +    src: CFloatArray,
 | 
	
		
			
				|  |  | +    dst: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    n: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    k: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    hist: CInt64Array,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_quantize_q4_1(src, dst, n, k, hist)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_quantize_q4_1.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_float),
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_int64),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_quantize_q4_1.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t ggml_quantize_q5_0(const float * src, void * dst, int n, int k, int64_t * hist);
 | 
	
		
			
				|  |  | +def ggml_quantize_q5_0(
 | 
	
		
			
				|  |  | +    src: CFloatArray,
 | 
	
		
			
				|  |  | +    dst: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    n: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    k: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    hist: CInt64Array,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_quantize_q5_0(src, dst, n, k, hist)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_quantize_q5_0.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_float),
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_int64),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_quantize_q5_0.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t ggml_quantize_q5_1(const float * src, void * dst, int n, int k, int64_t * hist);
 | 
	
		
			
				|  |  | +def ggml_quantize_q5_1(
 | 
	
		
			
				|  |  | +    src: CFloatArray,
 | 
	
		
			
				|  |  | +    dst: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    n: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    k: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    hist: CInt64Array,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_quantize_q5_1(src, dst, n, k, hist)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_quantize_q5_1.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_float),
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_int64),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_quantize_q5_1.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t ggml_quantize_q8_0(const float * src, void * dst, int n, int k, int64_t * hist);
 | 
	
		
			
				|  |  | +def ggml_quantize_q8_0(
 | 
	
		
			
				|  |  | +    src: CFloatArray,
 | 
	
		
			
				|  |  | +    dst: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    n: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    k: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    hist: CInt64Array,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_quantize_q8_0(src, dst, n, k, hist)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_quantize_q8_0.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_float),
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_int64),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_quantize_q8_0.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t ggml_quantize_chunk(enum ggml_type type, const float * src, void * dst, int start, int n, int64_t * hist);
 | 
	
		
			
				|  |  | +def ggml_quantize_chunk(
 | 
	
		
			
				|  |  | +    type: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    src: CFloatArray,
 | 
	
		
			
				|  |  | +    dst: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    start: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    n: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    hist: CInt64Array,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_quantize_chunk(type, src, dst, start, n, hist)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_quantize_chunk.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_float),
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_int64),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_quantize_chunk.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# // gguf
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# enum gguf_type {
 | 
	
		
			
				|  |  | +#     GGUF_TYPE_UINT8   = 0,
 | 
	
		
			
				|  |  | +#     GGUF_TYPE_INT8    = 1,
 | 
	
		
			
				|  |  | +#     GGUF_TYPE_UINT16  = 2,
 | 
	
		
			
				|  |  | +#     GGUF_TYPE_INT16   = 3,
 | 
	
		
			
				|  |  | +#     GGUF_TYPE_UINT32  = 4,
 | 
	
		
			
				|  |  | +#     GGUF_TYPE_INT32   = 5,
 | 
	
		
			
				|  |  | +#     GGUF_TYPE_FLOAT32 = 6,
 | 
	
		
			
				|  |  | +#     GGUF_TYPE_BOOL    = 7,
 | 
	
		
			
				|  |  | +#     GGUF_TYPE_STRING  = 8,
 | 
	
		
			
				|  |  | +#     GGUF_TYPE_ARRAY   = 9,
 | 
	
		
			
				|  |  | +#     GGUF_TYPE_UINT64  = 10,
 | 
	
		
			
				|  |  | +#     GGUF_TYPE_INT64   = 11,
 | 
	
		
			
				|  |  | +#     GGUF_TYPE_FLOAT64 = 12,
 | 
	
		
			
				|  |  | +#     GGUF_TYPE_COUNT,       // marks the end of the enum
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +GGUF_TYPE_UINT8 = 0
 | 
	
		
			
				|  |  | +GGUF_TYPE_INT8 = 1
 | 
	
		
			
				|  |  | +GGUF_TYPE_UINT16 = 2
 | 
	
		
			
				|  |  | +GGUF_TYPE_INT16 = 3
 | 
	
		
			
				|  |  | +GGUF_TYPE_UINT32 = 4
 | 
	
		
			
				|  |  | +GGUF_TYPE_INT32 = 5
 | 
	
		
			
				|  |  | +GGUF_TYPE_FLOAT32 = 6
 | 
	
		
			
				|  |  | +GGUF_TYPE_BOOL = 7
 | 
	
		
			
				|  |  | +GGUF_TYPE_STRING = 8
 | 
	
		
			
				|  |  | +GGUF_TYPE_ARRAY = 9
 | 
	
		
			
				|  |  | +GGUF_TYPE_COUNT = 10
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# struct gguf_context;
 | 
	
		
			
				|  |  | +gguf_context_p = ctypes.c_void_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# struct gguf_init_params {
 | 
	
		
			
				|  |  | +#     bool no_alloc;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#     // if not NULL, create a ggml_context and allocate the tensor data in it
 | 
	
		
			
				|  |  | +#     struct ggml_context ** ctx;
 | 
	
		
			
				|  |  | +# };
 | 
	
		
			
				|  |  | +class gguf_init_params(ctypes.Structure):
 | 
	
		
			
				|  |  | +    _fields_ = [
 | 
	
		
			
				|  |  | +        ("no_alloc", ctypes.c_bool),
 | 
	
		
			
				|  |  | +        ("ctx", ctypes.POINTER(ggml_context_p)),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct gguf_context * gguf_init_empty(void);
 | 
	
		
			
				|  |  | +def gguf_init_empty() -> gguf_context_p:
 | 
	
		
			
				|  |  | +    return lib.gguf_init_empty()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_init_empty.argtypes = []
 | 
	
		
			
				|  |  | +lib.gguf_init_empty.restype = gguf_context_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_params params);
 | 
	
		
			
				|  |  | +def gguf_init_from_file(
 | 
	
		
			
				|  |  | +    fname: bytes,
 | 
	
		
			
				|  |  | +    params: gguf_init_params,
 | 
	
		
			
				|  |  | +) -> gguf_context_p:
 | 
	
		
			
				|  |  | +    return lib.gguf_init_from_file(fname, params)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_init_from_file.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    gguf_init_params,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_init_from_file.restype = gguf_context_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# //GGML_API struct gguf_context * gguf_init_from_buffer(..);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_free(struct gguf_context * ctx);
 | 
	
		
			
				|  |  | +def gguf_free(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_free(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_free.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_free.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API const char * gguf_type_name(enum gguf_type type);
 | 
	
		
			
				|  |  | +def gguf_type_name(
 | 
	
		
			
				|  |  | +    type: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> bytes:
 | 
	
		
			
				|  |  | +    return lib.gguf_type_name(type)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_type_name.argtypes = [
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_type_name.restype = ctypes.c_char_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int    gguf_get_version    (const struct gguf_context * ctx);
 | 
	
		
			
				|  |  | +def gguf_get_version(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_version(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_version.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_version.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t gguf_get_alignment  (const struct gguf_context * ctx);
 | 
	
		
			
				|  |  | +def gguf_get_alignment(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_alignment(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_alignment.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_alignment.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t gguf_get_data_offset(const struct gguf_context * ctx);
 | 
	
		
			
				|  |  | +def gguf_get_data_offset(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_data_offset(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_data_offset.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_data_offset.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void * gguf_get_data       (const struct gguf_context * ctx);
 | 
	
		
			
				|  |  | +def gguf_get_data(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +) -> ctypes.c_void_p:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_data(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_data.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_data.restype = ctypes.c_void_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int          gguf_get_n_kv(const struct gguf_context * ctx);
 | 
	
		
			
				|  |  | +def gguf_get_n_kv(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_n_kv(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_n_kv.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_n_kv.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int          gguf_find_key(const struct gguf_context * ctx, const char * key);
 | 
	
		
			
				|  |  | +def gguf_find_key(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_find_key(ctx, key)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_find_key.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_find_key.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API const char * gguf_get_key (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_key(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> bytes:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_key(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_key.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_key.restype = ctypes.c_char_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API enum gguf_type gguf_get_kv_type (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_kv_type(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_kv_type(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_kv_type.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_kv_type.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API enum gguf_type gguf_get_arr_type(const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_arr_type(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_arr_type(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_arr_type.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_arr_type.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // results are undefined if the wrong type is used for the key
 | 
	
		
			
				|  |  | +# GGML_API uint8_t      gguf_get_val_u8  (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_val_u8(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_val_u8(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_val_u8.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_val_u8.restype = ctypes.c_uint8
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int8_t       gguf_get_val_i8  (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_val_i8(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_val_i8(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_val_i8.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_val_i8.restype = ctypes.c_int8
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API uint16_t     gguf_get_val_u16 (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_val_u16(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_val_u16(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_val_u16.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_val_u16.restype = ctypes.c_uint16
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int16_t      gguf_get_val_i16 (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_val_i16(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_val_i16(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_val_i16.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_val_i16.restype = ctypes.c_int16
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API uint32_t     gguf_get_val_u32 (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_val_u32(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_val_u32(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_val_u32.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_val_u32.restype = ctypes.c_uint32
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int32_t      gguf_get_val_i32 (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_val_i32(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_val_i32(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_val_i32.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_val_i32.restype = ctypes.c_int32
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API float        gguf_get_val_f32 (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_val_f32(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> float:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_val_f32(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_val_f32.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_val_f32.restype = ctypes.c_float
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API uint64_t     gguf_get_val_u64 (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_val_u64(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_val_u64(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_val_u64.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_val_u64.restype = ctypes.c_uint64
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int64_t      gguf_get_val_i64 (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_val_i64(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_val_i64(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_val_i64.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_val_i64.restype = ctypes.c_int64
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API double       gguf_get_val_f64 (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_val_f64(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> float:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_val_f64(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_val_f64.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_val_f64.restype = ctypes.c_double
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API bool         gguf_get_val_bool(const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_val_bool(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> bool:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_val_bool(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_val_bool.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_val_bool.restype = ctypes.c_bool
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API const char * gguf_get_val_str (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_val_str(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> bytes:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_val_str(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_val_str.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_val_str.restype = ctypes.c_char_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int          gguf_get_arr_n   (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_arr_n(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_arr_n(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_arr_n.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_arr_n.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API const void * gguf_get_arr_data(const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_arr_data(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ctypes.c_void_p:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_arr_data(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_arr_data.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_arr_data.restype = ctypes.c_void_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API const char * gguf_get_arr_str (const struct gguf_context * ctx, int key_id, int i);
 | 
	
		
			
				|  |  | +def gguf_get_arr_str(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key_id: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> bytes:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_arr_str(ctx, key_id, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_arr_str.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_arr_str.restype = ctypes.c_char_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int    gguf_get_n_tensors    (const struct gguf_context * ctx);
 | 
	
		
			
				|  |  | +def gguf_get_n_tensors(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_n_tensors(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_n_tensors.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_n_tensors.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int    gguf_find_tensor      (const struct gguf_context * ctx, const char * name);
 | 
	
		
			
				|  |  | +def gguf_find_tensor(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    name: bytes,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_find_tensor(ctx, name)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_find_tensor.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_find_tensor.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t gguf_get_tensor_offset(const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_tensor_offset(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_tensor_offset(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_tensor_offset.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_tensor_offset.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API char * gguf_get_tensor_name  (const struct gguf_context * ctx, int i);
 | 
	
		
			
				|  |  | +def gguf_get_tensor_name(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    i: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> bytes:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_tensor_name(ctx, i)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_tensor_name.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_tensor_name.restype = ctypes.c_char_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // overrides existing values or adds a new one
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_val_u8  (struct gguf_context * ctx, const char * key, uint8_t  val);
 | 
	
		
			
				|  |  | +def gguf_set_val_u8(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +    val: Union[ctypes.c_uint8, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_val_u8(ctx, key, val)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_val_u8.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_uint8,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_val_u8.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_val_i8  (struct gguf_context * ctx, const char * key, int8_t   val);
 | 
	
		
			
				|  |  | +def gguf_set_val_i8(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +    val: Union[ctypes.c_int8, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_val_i8(ctx, key, val)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_val_i8.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int8,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_val_i8.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_val_u16 (struct gguf_context * ctx, const char * key, uint16_t val);
 | 
	
		
			
				|  |  | +def gguf_set_val_u16(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +    val: Union[ctypes.c_uint16, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_val_u16(ctx, key, val)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_val_u16.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_uint16,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_val_u16.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_val_i16 (struct gguf_context * ctx, const char * key, int16_t  val);
 | 
	
		
			
				|  |  | +def gguf_set_val_i16(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +    val: Union[ctypes.c_int16, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_val_i16(ctx, key, val)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_val_i16.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int16,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_val_i16.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_val_u32 (struct gguf_context * ctx, const char * key, uint32_t val);
 | 
	
		
			
				|  |  | +def gguf_set_val_u32(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +    val: Union[ctypes.c_uint32, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_val_u32(ctx, key, val)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_val_u32.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_uint32,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_val_u32.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_val_i32 (struct gguf_context * ctx, const char * key, int32_t  val);
 | 
	
		
			
				|  |  | +def gguf_set_val_i32(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +    val: Union[ctypes.c_int32, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_val_i32(ctx, key, val)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_val_i32.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int32,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_val_i32.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_val_f32 (struct gguf_context * ctx, const char * key, float    val);
 | 
	
		
			
				|  |  | +def gguf_set_val_f32(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +    val: Union[ctypes.c_float, float],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_val_f32(ctx, key, val)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_val_f32.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_float,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_val_f32.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_val_u64 (struct gguf_context * ctx, const char * key, uint64_t val);
 | 
	
		
			
				|  |  | +def gguf_set_val_u64(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +    val: Union[ctypes.c_uint64, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_val_u64(ctx, key, val)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_val_u64.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_uint64,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_val_u64.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_val_i64 (struct gguf_context * ctx, const char * key, int64_t  val);
 | 
	
		
			
				|  |  | +def gguf_set_val_i64(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +    val: Union[ctypes.c_int64, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_val_i64(ctx, key, val)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_val_i64.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int64,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_val_i64.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_val_f64 (struct gguf_context * ctx, const char * key, double   val);
 | 
	
		
			
				|  |  | +def gguf_set_val_f64(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +    val: Union[ctypes.c_double, float],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_val_f64(ctx, key, val)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_val_f64.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_double,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_val_f64.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_val_bool(struct gguf_context * ctx, const char * key, bool     val);
 | 
	
		
			
				|  |  | +def gguf_set_val_bool(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +    val: Union[ctypes.c_bool, bool],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_val_bool(ctx, key, val)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_val_bool.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_bool,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_val_bool.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_val_str (struct gguf_context * ctx, const char * key, const char * val);
 | 
	
		
			
				|  |  | +def gguf_set_val_str(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +    val: bytes,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_val_str(ctx, key, val)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_val_str.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_val_str.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_arr_data(struct gguf_context * ctx, const char * key, enum gguf_type type, const void * data, int n);
 | 
	
		
			
				|  |  | +def gguf_set_arr_data(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +    type: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    data: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    n: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_arr_data(ctx, key, type, data, n)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_arr_data.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_arr_data.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_arr_str (struct gguf_context * ctx, const char * key, const char ** data, int n);
 | 
	
		
			
				|  |  | +def gguf_set_arr_str(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    key: bytes,
 | 
	
		
			
				|  |  | +    data: CCharPointer,
 | 
	
		
			
				|  |  | +    n: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_arr_str(ctx, key, data, n)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_arr_str.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_char_p),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_arr_str.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // set or add KV pairs from another context
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_kv(struct gguf_context * ctx, struct gguf_context * src);
 | 
	
		
			
				|  |  | +def gguf_set_kv(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    src: gguf_context_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_kv(ctx, src)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_kv.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_kv.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // manage tensor info
 | 
	
		
			
				|  |  | +# GGML_API void gguf_add_tensor(struct gguf_context * ctx, const struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def gguf_add_tensor(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_add_tensor(ctx, tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_add_tensor.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_add_tensor.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_tensor_type(struct gguf_context * ctx, const char * name, enum ggml_type type);
 | 
	
		
			
				|  |  | +def gguf_set_tensor_type(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    name: bytes,
 | 
	
		
			
				|  |  | +    type: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_tensor_type(ctx, name, type)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_tensor_type.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_tensor_type.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void gguf_set_tensor_data(struct gguf_context * ctx, const char * name, const void * data, size_t size);
 | 
	
		
			
				|  |  | +def gguf_set_tensor_data(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    name: bytes,
 | 
	
		
			
				|  |  | +    data: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    size: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_set_tensor_data(ctx, name, data, size)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_set_tensor_data.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    ctypes.c_size_t,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_set_tensor_data.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // writing gguf files can be done in 2 ways:
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# // - write the entire gguf_context to a binary file in a single pass:
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# //   gguf_write_to_file(ctx, fname);
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# // - first prepare a file with a placeholder for the meta data, write the tensor data, then write the meta data:
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# //   FILE * f = fopen(fname, "wb");
 | 
	
		
			
				|  |  | +# //   fseek(f, gguf_get_meta_size(ctx), SEEK_SET);
 | 
	
		
			
				|  |  | +# //   fwrite(f, ...);
 | 
	
		
			
				|  |  | +# //   void * data = gguf_meta_get_meta_data(ctx);
 | 
	
		
			
				|  |  | +# //   fseek(f, 0, SEEK_SET);
 | 
	
		
			
				|  |  | +# //   fwrite(f, data, gguf_get_meta_size(ctx));
 | 
	
		
			
				|  |  | +# //   free(data);
 | 
	
		
			
				|  |  | +# //   fclose(f);
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // write the entire context to a binary file
 | 
	
		
			
				|  |  | +# GGML_API void gguf_write_to_file(const struct gguf_context * ctx, const char * fname, bool only_meta);
 | 
	
		
			
				|  |  | +def gguf_write_to_file(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    fname: bytes,
 | 
	
		
			
				|  |  | +    only_meta: Union[ctypes.c_bool, bool],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_write_to_file(ctx, fname, only_meta)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_write_to_file.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_char_p,
 | 
	
		
			
				|  |  | +    ctypes.c_bool,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_write_to_file.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // get the size in bytes of the meta data (header, kv pairs, tensor info) including padding
 | 
	
		
			
				|  |  | +# GGML_API size_t gguf_get_meta_size(const struct gguf_context * ctx);
 | 
	
		
			
				|  |  | +def gguf_get_meta_size(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.gguf_get_meta_size(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_meta_size.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_meta_size.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void   gguf_get_meta_data(const struct gguf_context * ctx, void * data);
 | 
	
		
			
				|  |  | +def gguf_get_meta_data(
 | 
	
		
			
				|  |  | +    ctx: gguf_context_p,
 | 
	
		
			
				|  |  | +    data: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.gguf_get_meta_data(ctx, data)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.gguf_get_meta_data.argtypes = [
 | 
	
		
			
				|  |  | +    gguf_context_p,
 | 
	
		
			
				|  |  | +    ctypes.c_void_p,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.gguf_get_meta_data.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# // system info
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_avx        (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_avx() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_avx()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_avx.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_avx.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_avx2       (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_avx2() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_avx2()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_avx2.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_avx2.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_avx512     (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_avx512() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_avx512()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_avx512.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_avx512.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_avx512_vbmi(void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_avx512_vbmi() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_avx512_vbmi()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_avx512_vbmi.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_avx512_vbmi.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_avx512_vnni(void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_avx512_vnni() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_avx512_vnni()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_avx512_vnni.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_avx512_vnni.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_fma        (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_fma() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_fma()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_fma.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_fma.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_neon       (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_neon() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_neon()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_neon.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_neon.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_arm_fma    (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_arm_fma() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_arm_fma()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_arm_fma.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_arm_fma.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_f16c       (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_f16c() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_f16c()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_f16c.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_f16c.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_fp16_va    (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_fp16_va() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_fp16_va()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_fp16_va.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_fp16_va.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_wasm_simd  (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_wasm_simd() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_wasm_simd()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_wasm_simd.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_wasm_simd.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_blas       (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_blas() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_blas()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_blas.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_blas.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_cublas     (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_cublas() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_cublas()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_cublas.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_cublas.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_clblast    (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_clblast() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_clblast()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_clblast.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_clblast.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_gpublas    (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_gpublas() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_gpublas()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_gpublas.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_gpublas.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_sse3       (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_sse3() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_sse3()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_sse3.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_sse3.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_ssse3      (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_ssse3() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_ssse3()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_ssse3.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_ssse3.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int ggml_cpu_has_vsx        (void);
 | 
	
		
			
				|  |  | +def ggml_cpu_has_vsx() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cpu_has_vsx()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_vsx.argtypes = []
 | 
	
		
			
				|  |  | +lib.ggml_cpu_has_vsx.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# // Internal types and functions exposed for tests and benchmarks
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# typedef void (*ggml_to_float_t)(const void * x, float * y, int k);
 | 
	
		
			
				|  |  | +ggml_to_float_t = ctypes.CFUNCTYPE(
 | 
	
		
			
				|  |  | +    None, ctypes.c_void_p, ctypes.POINTER(ctypes.c_float), ctypes.c_int
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# typedef void (*ggml_from_float_t)(const float * x, void * y, int k);
 | 
	
		
			
				|  |  | +ggml_from_float_t = ctypes.CFUNCTYPE(
 | 
	
		
			
				|  |  | +    None, ctypes.POINTER(ctypes.c_float), ctypes.c_void_p, ctypes.c_int
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# typedef void (*ggml_vec_dot_t)(const int n, float * s, const void * x, const void * y);
 | 
	
		
			
				|  |  | +ggml_vec_dot_t = ctypes.CFUNCTYPE(
 | 
	
		
			
				|  |  | +    None, ctypes.c_int, ctypes.POINTER(ctypes.c_float), ctypes.c_void_p, ctypes.c_void_p
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# typedef struct {
 | 
	
		
			
				|  |  | +#     const char      * type_name;
 | 
	
		
			
				|  |  | +#     int               blck_size;
 | 
	
		
			
				|  |  | +#     size_t            type_size;
 | 
	
		
			
				|  |  | +#     bool              is_quantized;
 | 
	
		
			
				|  |  | +#     ggml_to_float_t   to_float;
 | 
	
		
			
				|  |  | +#     ggml_from_float_t from_float;
 | 
	
		
			
				|  |  | +#     ggml_from_float_t from_float_reference;
 | 
	
		
			
				|  |  | +#     ggml_vec_dot_t    vec_dot;
 | 
	
		
			
				|  |  | +#     enum ggml_type    vec_dot_type;
 | 
	
		
			
				|  |  | +# } ggml_type_traits_t;
 | 
	
		
			
				|  |  | +class ggml_type_traits_t(ctypes.Structure):
 | 
	
		
			
				|  |  | +    _fields_ = [
 | 
	
		
			
				|  |  | +        ("type_name", ctypes.c_char_p),
 | 
	
		
			
				|  |  | +        ("blck_size", ctypes.c_int),
 | 
	
		
			
				|  |  | +        ("type_size", ctypes.c_size_t),
 | 
	
		
			
				|  |  | +        ("is_quantized", ctypes.c_bool),
 | 
	
		
			
				|  |  | +        ("to_float", ggml_to_float_t),
 | 
	
		
			
				|  |  | +        ("from_float", ggml_from_float_t),
 | 
	
		
			
				|  |  | +        ("from_float_reference", ggml_from_float_t),
 | 
	
		
			
				|  |  | +        ("vec_dot", ggml_vec_dot_t),
 | 
	
		
			
				|  |  | +        ("vec_dot_type", ctypes.c_int),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# ggml_type_traits_t ggml_internal_get_type_traits(enum ggml_type type);
 | 
	
		
			
				|  |  | +def ggml_internal_get_type_traits(type: Union[ctypes.c_int, int]) -> ggml_type_traits_t:
 | 
	
		
			
				|  |  | +    return lib.ggml_internal_get_type_traits(type)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_internal_get_type_traits.argtypes = [ctypes.c_int]
 | 
	
		
			
				|  |  | +lib.ggml_internal_get_type_traits.restype = ggml_type_traits_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#####################################################
 | 
	
		
			
				|  |  | +# GGML ALLOC API
 | 
	
		
			
				|  |  | +# source: ggml-alloc.h
 | 
	
		
			
				|  |  | +#####################################################
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ggml_allocr_p = ctypes.c_void_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_allocr * ggml_allocr_new(void * data, size_t size, size_t alignment);
 | 
	
		
			
				|  |  | +def ggml_allocr_new(
 | 
	
		
			
				|  |  | +    data: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    size: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    alignment: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> ggml_allocr_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_allocr_new(data, size, alignment)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_allocr_new.argtypes = [ctypes.c_void_p, ctypes.c_size_t, ctypes.c_size_t]
 | 
	
		
			
				|  |  | +lib.ggml_allocr_new.restype = ggml_allocr_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API struct ggml_allocr * ggml_allocr_new_measure(size_t alignment);
 | 
	
		
			
				|  |  | +def ggml_allocr_new_measure(
 | 
	
		
			
				|  |  | +    alignment: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> ggml_allocr_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_allocr_new_measure(alignment)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_allocr_new_measure.argtypes = [ctypes.c_size_t]
 | 
	
		
			
				|  |  | +lib.ggml_allocr_new_measure.restype = ggml_allocr_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // tell the allocator to parse nodes following the order described in the list
 | 
	
		
			
				|  |  | +# // you should call this if your graph are optimized to execute out-of-order
 | 
	
		
			
				|  |  | +# GGML_API void   ggml_allocr_set_parse_seq(struct ggml_allocr * alloc, const int * list, int n);
 | 
	
		
			
				|  |  | +def ggml_allocr_set_parse_seq(
 | 
	
		
			
				|  |  | +    alloc: ggml_allocr_p,
 | 
	
		
			
				|  |  | +    list: CIntPointer,
 | 
	
		
			
				|  |  | +    n: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_allocr_set_parse_seq(alloc, list, n)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_allocr_set_parse_seq.argtypes = [
 | 
	
		
			
				|  |  | +    ggml_allocr_p,
 | 
	
		
			
				|  |  | +    ctypes.POINTER(ctypes.c_int),
 | 
	
		
			
				|  |  | +    ctypes.c_int,
 | 
	
		
			
				|  |  | +]
 | 
	
		
			
				|  |  | +lib.ggml_allocr_set_parse_seq.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void   ggml_allocr_free(struct ggml_allocr * alloc);
 | 
	
		
			
				|  |  | +def ggml_allocr_free(
 | 
	
		
			
				|  |  | +    alloc: ggml_allocr_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_allocr_free(alloc)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_allocr_free.argtypes = [ggml_allocr_p]
 | 
	
		
			
				|  |  | +lib.ggml_allocr_free.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API bool   ggml_allocr_is_measure(struct ggml_allocr * alloc);
 | 
	
		
			
				|  |  | +def ggml_allocr_is_measure(
 | 
	
		
			
				|  |  | +    alloc: ggml_allocr_p,
 | 
	
		
			
				|  |  | +) -> bool:
 | 
	
		
			
				|  |  | +    return lib.ggml_allocr_is_measure(alloc)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_allocr_is_measure.argtypes = [ggml_allocr_p]
 | 
	
		
			
				|  |  | +lib.ggml_allocr_is_measure.restype = ctypes.c_bool
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void   ggml_allocr_reset(struct ggml_allocr * alloc);
 | 
	
		
			
				|  |  | +def ggml_allocr_reset(
 | 
	
		
			
				|  |  | +    alloc: ggml_allocr_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_allocr_reset(alloc)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_allocr_reset.argtypes = [ggml_allocr_p]
 | 
	
		
			
				|  |  | +lib.ggml_allocr_reset.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void   ggml_allocr_alloc(struct ggml_allocr * alloc, struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_allocr_alloc(
 | 
	
		
			
				|  |  | +    alloc: ggml_allocr_p,
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_allocr_alloc(alloc, tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_allocr_alloc.argtypes = [ggml_allocr_p, ctypes.POINTER(ggml_tensor)]
 | 
	
		
			
				|  |  | +lib.ggml_allocr_alloc.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API size_t ggml_allocr_alloc_graph(struct ggml_allocr * alloc, struct ggml_cgraph * graph);
 | 
	
		
			
				|  |  | +def ggml_allocr_alloc_graph(
 | 
	
		
			
				|  |  | +    alloc: ggml_allocr_p,
 | 
	
		
			
				|  |  | +    graph: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_allocr_alloc_graph(alloc, graph)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +lib.ggml_allocr_alloc_graph.argtypes = [ggml_allocr_p, ctypes.POINTER(ggml_cgraph)]
 | 
	
		
			
				|  |  | +lib.ggml_allocr_alloc_graph.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#####################################################
 | 
	
		
			
				|  |  | +# GGML CUDA API
 | 
	
		
			
				|  |  | +# source: ggml-cuda.h
 | 
	
		
			
				|  |  | +#####################################################
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +GGML_USE_CUBLAS = hasattr(lib, "ggml_init_cublas")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +GGML_CUDA_MAX_DEVICES = 16
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void   ggml_init_cublas(void);
 | 
	
		
			
				|  |  | +def ggml_init_cublas():
 | 
	
		
			
				|  |  | +    return lib.ggml_init_cublas()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_init_cublas.argtypes = []
 | 
	
		
			
				|  |  | +    lib.ggml_init_cublas.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void * ggml_cuda_host_malloc(size_t size);
 | 
	
		
			
				|  |  | +def ggml_cuda_host_malloc(
 | 
	
		
			
				|  |  | +    size: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> Optional[ctypes.c_void_p]:
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_host_malloc(size)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_host_malloc.argtypes = [ctypes.c_size_t]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_host_malloc.restype = ctypes.c_void_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void   ggml_cuda_host_free(void * ptr);
 | 
	
		
			
				|  |  | +def ggml_cuda_host_free(
 | 
	
		
			
				|  |  | +    ptr: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_host_free(ptr)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_host_free.argtypes = [ctypes.c_void_p]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_host_free.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API bool   ggml_cuda_can_mul_mat(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst);
 | 
	
		
			
				|  |  | +def ggml_cuda_can_mul_mat(
 | 
	
		
			
				|  |  | +    src0: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    src1: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    dst: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> bool:
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_can_mul_mat(src0, src1, dst)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_can_mul_mat.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_can_mul_mat.restype = ctypes.c_bool
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void   ggml_cuda_set_tensor_split(const float * tensor_split);
 | 
	
		
			
				|  |  | +def ggml_cuda_set_tensor_split(
 | 
	
		
			
				|  |  | +    tensor_split: CFloatArray,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_set_tensor_split(tensor_split)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_set_tensor_split.argtypes = [ctypes.POINTER(ctypes.c_float)]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_set_tensor_split.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void   ggml_cuda_transform_tensor(void * data, struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_cuda_transform_tensor(
 | 
	
		
			
				|  |  | +    data: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_transform_tensor(data, tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_transform_tensor.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.c_void_p,
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_transform_tensor.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void   ggml_cuda_free_data(struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_cuda_free_data(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_free_data(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_free_data.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_free_data.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void   ggml_cuda_assign_buffers(struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_cuda_assign_buffers(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_assign_buffers(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_assign_buffers.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_assign_buffers.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void   ggml_cuda_assign_buffers_no_scratch(struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_cuda_assign_buffers_no_scratch(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_assign_buffers_no_scratch(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_assign_buffers_no_scratch.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_assign_buffers_no_scratch.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void   ggml_cuda_assign_buffers_force_inplace(struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_cuda_assign_buffers_force_inplace(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_assign_buffers_force_inplace(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_assign_buffers_force_inplace.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_assign_buffers_force_inplace.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void   ggml_cuda_assign_buffers_no_alloc(struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_cuda_assign_buffers_no_alloc(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_assign_buffers_no_alloc(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_assign_buffers_no_alloc.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_assign_buffers_no_alloc.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void   ggml_cuda_assign_scratch_offset(struct ggml_tensor * tensor, size_t offset);
 | 
	
		
			
				|  |  | +def ggml_cuda_assign_scratch_offset(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    offset: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_assign_scratch_offset(tensor, offset)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_assign_scratch_offset.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +        ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_assign_scratch_offset.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void   ggml_cuda_set_main_device(int main_device);
 | 
	
		
			
				|  |  | +def ggml_cuda_set_main_device(
 | 
	
		
			
				|  |  | +    main_device: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_set_main_device(main_device)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_set_main_device.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.c_int,
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_set_main_device.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void   ggml_cuda_set_mul_mat_q(bool mul_mat_q);
 | 
	
		
			
				|  |  | +def ggml_cuda_set_mul_mat_q(
 | 
	
		
			
				|  |  | +    mul_mat_q: Union[ctypes.c_bool, bool],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_set_mul_mat_q(mul_mat_q)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_set_mul_mat_q.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.c_bool,
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_set_mul_mat_q.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void   ggml_cuda_set_scratch_size(size_t scratch_size);
 | 
	
		
			
				|  |  | +def ggml_cuda_set_scratch_size(
 | 
	
		
			
				|  |  | +    scratch_size: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_set_scratch_size(scratch_size)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_set_scratch_size.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_set_scratch_size.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void   ggml_cuda_free_scratch(void);
 | 
	
		
			
				|  |  | +def ggml_cuda_free_scratch():
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_free_scratch()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_free_scratch.argtypes = []
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_free_scratch.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API bool   ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_cuda_compute_forward(
 | 
	
		
			
				|  |  | +    params: ggml_compute_params_p,
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> bool:
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_compute_forward(params, tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_compute_forward.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_compute_params),
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_compute_forward.restype = ctypes.c_bool
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API int    ggml_cuda_get_device_count(void);
 | 
	
		
			
				|  |  | +def ggml_cuda_get_device_count() -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_get_device_count()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_get_device_count.argtypes = []
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_get_device_count.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# GGML_API void   ggml_cuda_get_device_description(int device, char * description, size_t description_size);
 | 
	
		
			
				|  |  | +def ggml_cuda_get_device_description(
 | 
	
		
			
				|  |  | +    device: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +    description: bytes,
 | 
	
		
			
				|  |  | +    description_size: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cuda_get_device_description(device, description, description_size)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CUBLAS:
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_get_device_description.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.c_int,
 | 
	
		
			
				|  |  | +        ctypes.c_char_p,
 | 
	
		
			
				|  |  | +        ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cuda_get_device_description.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#####################################################
 | 
	
		
			
				|  |  | +# GGML METAL API
 | 
	
		
			
				|  |  | +# source: ggml-metal.h
 | 
	
		
			
				|  |  | +#####################################################
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +GGML_USE_METAL = hasattr(lib, "ggml_metal_init")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // max memory buffers that can be mapped to the device
 | 
	
		
			
				|  |  | +# #define GGML_METAL_MAX_BUFFERS 16
 | 
	
		
			
				|  |  | +GGML_METAL_MAX_BUFFERS = 16
 | 
	
		
			
				|  |  | +# #define GGML_METAL_MAX_COMMAND_BUFFERS 32
 | 
	
		
			
				|  |  | +GGML_METAL_MAX_COMMAND_BUFFERS = 32
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# struct ggml_metal_context;
 | 
	
		
			
				|  |  | +ggml_metal_context_p = ctypes.c_void_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# struct ggml_metal_context * ggml_metal_init(int n_cb);
 | 
	
		
			
				|  |  | +def ggml_metal_init(
 | 
	
		
			
				|  |  | +    n_cb: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +) -> ggml_metal_context_p:
 | 
	
		
			
				|  |  | +    return lib.ggml_metal_init(n_cb)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_METAL:
 | 
	
		
			
				|  |  | +    lib.ggml_metal_init.argtypes = [ctypes.c_int]
 | 
	
		
			
				|  |  | +    lib.ggml_metal_init.restype = ggml_metal_context_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void ggml_metal_free(struct ggml_metal_context * ctx);
 | 
	
		
			
				|  |  | +def ggml_metal_free(
 | 
	
		
			
				|  |  | +    ctx: ggml_metal_context_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_metal_free(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_METAL:
 | 
	
		
			
				|  |  | +    lib.ggml_metal_free.argtypes = [ggml_metal_context_p]
 | 
	
		
			
				|  |  | +    lib.ggml_metal_free.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // set the number of command buffers to use
 | 
	
		
			
				|  |  | +# void ggml_metal_set_n_cb(struct ggml_metal_context * ctx, int n_cb);
 | 
	
		
			
				|  |  | +def ggml_metal_set_n_cb(
 | 
	
		
			
				|  |  | +    ctx: ggml_metal_context_p,
 | 
	
		
			
				|  |  | +    n_cb: Union[ctypes.c_int, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_metal_set_n_cb(ctx, n_cb)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_METAL:
 | 
	
		
			
				|  |  | +    lib.ggml_metal_set_n_cb.argtypes = [ggml_metal_context_p, ctypes.c_int]
 | 
	
		
			
				|  |  | +    lib.ggml_metal_set_n_cb.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // creates a mapping between a host memory buffer and a device memory buffer
 | 
	
		
			
				|  |  | +# // - make sure to map all buffers used in the graph before calling ggml_metal_graph_compute
 | 
	
		
			
				|  |  | +# // - the mapping is used during computation to determine the arguments of the compute kernels
 | 
	
		
			
				|  |  | +# // - you don't need to keep the host memory buffer allocated as it is never accessed by Metal
 | 
	
		
			
				|  |  | +# // - max_size specifies the maximum size of a tensor and is used to create shared views such
 | 
	
		
			
				|  |  | +# //   that it is guaranteed that the tensor will fit in at least one of the views
 | 
	
		
			
				|  |  | +# //
 | 
	
		
			
				|  |  | +# bool ggml_metal_add_buffer(
 | 
	
		
			
				|  |  | +#         struct ggml_metal_context * ctx,
 | 
	
		
			
				|  |  | +#                        const char * name,
 | 
	
		
			
				|  |  | +#                              void * data,
 | 
	
		
			
				|  |  | +#                            size_t   size,
 | 
	
		
			
				|  |  | +#                            size_t   max_size);
 | 
	
		
			
				|  |  | +def ggml_metal_add_buffer(
 | 
	
		
			
				|  |  | +    ctx: ggml_metal_context_p,
 | 
	
		
			
				|  |  | +    name: bytes,
 | 
	
		
			
				|  |  | +    data: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    size: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +    max_size: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> bool:
 | 
	
		
			
				|  |  | +    return lib.ggml_metal_add_buffer(ctx, name, data, size, max_size)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_METAL:
 | 
	
		
			
				|  |  | +    lib.ggml_metal_add_buffer.argtypes = [
 | 
	
		
			
				|  |  | +        ggml_metal_context_p,
 | 
	
		
			
				|  |  | +        ctypes.c_char_p,
 | 
	
		
			
				|  |  | +        ctypes.c_void_p,
 | 
	
		
			
				|  |  | +        ctypes.c_size_t,
 | 
	
		
			
				|  |  | +        ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_metal_add_buffer.restype = ctypes.c_bool
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // set data from host memory into the device
 | 
	
		
			
				|  |  | +# void ggml_metal_set_tensor(struct ggml_metal_context * ctx, struct ggml_tensor * t);
 | 
	
		
			
				|  |  | +def ggml_metal_set_tensor(
 | 
	
		
			
				|  |  | +    ctx: ggml_metal_context_p,
 | 
	
		
			
				|  |  | +    t: ggml_tensor_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_metal_set_tensor(ctx, t)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_METAL:
 | 
	
		
			
				|  |  | +    lib.ggml_metal_set_tensor.argtypes = [
 | 
	
		
			
				|  |  | +        ggml_metal_context_p,
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_metal_set_tensor.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // get data from the device into host memory
 | 
	
		
			
				|  |  | +# void ggml_metal_get_tensor(struct ggml_metal_context * ctx, struct ggml_tensor * t);
 | 
	
		
			
				|  |  | +def ggml_metal_get_tensor(
 | 
	
		
			
				|  |  | +    ctx: ggml_metal_context_p,
 | 
	
		
			
				|  |  | +    t: ggml_tensor_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_metal_get_tensor(ctx, t)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_METAL:
 | 
	
		
			
				|  |  | +    lib.ggml_metal_get_tensor.argtypes = [
 | 
	
		
			
				|  |  | +        ggml_metal_context_p,
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_metal_get_tensor.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // try to find operations that can be run concurrently in the graph
 | 
	
		
			
				|  |  | +# // you should run it again if the topology of your graph changes
 | 
	
		
			
				|  |  | +# void ggml_metal_graph_find_concurrency(struct ggml_metal_context * ctx, struct ggml_cgraph * gf, bool check_mem);
 | 
	
		
			
				|  |  | +def ggml_metal_graph_find_concurrency(
 | 
	
		
			
				|  |  | +    ctx: ggml_metal_context_p,
 | 
	
		
			
				|  |  | +    gf: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +    check_mem: Union[ctypes.c_bool, bool],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_metal_graph_find_concurrency(ctx, gf, check_mem)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_METAL:
 | 
	
		
			
				|  |  | +    lib.ggml_metal_graph_find_concurrency.argtypes = [
 | 
	
		
			
				|  |  | +        ggml_metal_context_p,
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +        ctypes.c_bool,
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_metal_graph_find_concurrency.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // if the graph has been optimized for concurrently dispatch, return length of the concur_list if optimized
 | 
	
		
			
				|  |  | +# int ggml_metal_if_optimized(struct ggml_metal_context * ctx);
 | 
	
		
			
				|  |  | +def ggml_metal_if_optimized(
 | 
	
		
			
				|  |  | +    ctx: ggml_metal_context_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_metal_if_optimized(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_METAL:
 | 
	
		
			
				|  |  | +    lib.ggml_metal_if_optimized.argtypes = [
 | 
	
		
			
				|  |  | +        ggml_metal_context_p,
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_metal_if_optimized.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // output the concur_list for ggml_alloc
 | 
	
		
			
				|  |  | +# int * ggml_metal_get_concur_list(struct ggml_metal_context * ctx);
 | 
	
		
			
				|  |  | +def ggml_metal_get_concur_list(
 | 
	
		
			
				|  |  | +    ctx: ggml_metal_context_p,
 | 
	
		
			
				|  |  | +) -> CIntPointer:
 | 
	
		
			
				|  |  | +    return lib.ggml_metal_get_concur_list(ctx)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_METAL:
 | 
	
		
			
				|  |  | +    lib.ggml_metal_get_concur_list.argtypes = [
 | 
	
		
			
				|  |  | +        ggml_metal_context_p,
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_metal_get_concur_list.restype = ctypes.POINTER(ctypes.c_int)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# // same as ggml_graph_compute but uses Metal
 | 
	
		
			
				|  |  | +# // creates gf->n_threads command buffers in parallel
 | 
	
		
			
				|  |  | +# void ggml_metal_graph_compute(struct ggml_metal_context * ctx, struct ggml_cgraph * gf);
 | 
	
		
			
				|  |  | +def ggml_metal_graph_compute(
 | 
	
		
			
				|  |  | +    ctx: ggml_metal_context_p,
 | 
	
		
			
				|  |  | +    gf: ggml_cgraph_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_metal_graph_compute(ctx, gf)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_METAL:
 | 
	
		
			
				|  |  | +    lib.ggml_metal_graph_compute.argtypes = [
 | 
	
		
			
				|  |  | +        ggml_metal_context_p,
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_cgraph),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_metal_graph_compute.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#####################################################
 | 
	
		
			
				|  |  | +# GGML OPENCL API
 | 
	
		
			
				|  |  | +# source: ggml-opencl.h
 | 
	
		
			
				|  |  | +#####################################################
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +GGML_USE_CLBLAST = hasattr(lib, "ggml_cl_init")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void ggml_cl_init(void);
 | 
	
		
			
				|  |  | +def ggml_cl_init():
 | 
	
		
			
				|  |  | +    return lib.ggml_cl_init()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CLBLAST:
 | 
	
		
			
				|  |  | +    lib.ggml_cl_init.argtypes = []
 | 
	
		
			
				|  |  | +    lib.ggml_cl_init.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void   ggml_cl_mul(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst);
 | 
	
		
			
				|  |  | +def ggml_cl_mul(
 | 
	
		
			
				|  |  | +    src0: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    src1: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    dst: ggml_tensor_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cl_mul(src0, src1, dst)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CLBLAST:
 | 
	
		
			
				|  |  | +    lib.ggml_cl_mul.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cl_mul.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# bool   ggml_cl_can_mul_mat(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst);
 | 
	
		
			
				|  |  | +def ggml_cl_can_mul_mat(
 | 
	
		
			
				|  |  | +    src0: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    src1: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    dst: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> bool:
 | 
	
		
			
				|  |  | +    return lib.ggml_cl_can_mul_mat(src0, src1, dst)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CLBLAST:
 | 
	
		
			
				|  |  | +    lib.ggml_cl_can_mul_mat.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cl_can_mul_mat.restype = ctypes.c_bool
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# size_t ggml_cl_mul_mat_get_wsize(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst);
 | 
	
		
			
				|  |  | +def ggml_cl_mul_mat_get_wsize(
 | 
	
		
			
				|  |  | +    src0: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    src1: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    dst: ggml_tensor_p,
 | 
	
		
			
				|  |  | +) -> int:
 | 
	
		
			
				|  |  | +    return lib.ggml_cl_mul_mat_get_wsize(src0, src1, dst)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CLBLAST:
 | 
	
		
			
				|  |  | +    lib.ggml_cl_mul_mat_get_wsize.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cl_mul_mat_get_wsize.restype = ctypes.c_size_t
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void   ggml_cl_mul_mat(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst, void * wdata, size_t wsize);
 | 
	
		
			
				|  |  | +def ggml_cl_mul_mat(
 | 
	
		
			
				|  |  | +    src0: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    src1: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    dst: ggml_tensor_p,
 | 
	
		
			
				|  |  | +    wdata: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    wsize: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cl_mul_mat(src0, src1, dst, wdata, wsize)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CLBLAST:
 | 
	
		
			
				|  |  | +    lib.ggml_cl_mul_mat.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +        ctypes.c_void_p,
 | 
	
		
			
				|  |  | +        ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cl_mul_mat.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void * ggml_cl_host_malloc(size_t size);
 | 
	
		
			
				|  |  | +def ggml_cl_host_malloc(
 | 
	
		
			
				|  |  | +    size: Union[ctypes.c_size_t, int],
 | 
	
		
			
				|  |  | +) -> Optional[ctypes.c_void_p]:
 | 
	
		
			
				|  |  | +    return lib.ggml_cl_host_malloc(size)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CLBLAST:
 | 
	
		
			
				|  |  | +    lib.ggml_cl_host_malloc.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.c_size_t,
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cl_host_malloc.restype = ctypes.c_void_p
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void   ggml_cl_host_free(void * ptr);
 | 
	
		
			
				|  |  | +def ggml_cl_host_free(
 | 
	
		
			
				|  |  | +    ptr: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cl_host_free(ptr)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CLBLAST:
 | 
	
		
			
				|  |  | +    lib.ggml_cl_host_free.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cl_host_free.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void ggml_cl_free_data(const struct ggml_tensor* tensor);
 | 
	
		
			
				|  |  | +def ggml_cl_free_data(
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cl_free_data(tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CLBLAST:
 | 
	
		
			
				|  |  | +    lib.ggml_cl_free_data.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cl_free_data.restype = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# void ggml_cl_transform_tensor(void * data, struct ggml_tensor * tensor);
 | 
	
		
			
				|  |  | +def ggml_cl_transform_tensor(
 | 
	
		
			
				|  |  | +    data: ctypes.c_void_p,
 | 
	
		
			
				|  |  | +    tensor: ggml_tensor_p,
 | 
	
		
			
				|  |  | +):
 | 
	
		
			
				|  |  | +    return lib.ggml_cl_transform_tensor(data, tensor)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if GGML_USE_CLBLAST:
 | 
	
		
			
				|  |  | +    lib.ggml_cl_transform_tensor.argtypes = [
 | 
	
		
			
				|  |  | +        ctypes.c_void_p,
 | 
	
		
			
				|  |  | +        ctypes.POINTER(ggml_tensor),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    lib.ggml_cl_transform_tensor.restype = None
 |