首页 > 其他分享 >GGML 非官方中文文档

GGML 非官方中文文档

时间:2024-05-13 16:32:40浏览次数:7  
标签:const struct 张量 文档 ggml GGML 描述 非官方 tensor

_CRT_SECURE_NO_DEPRECATE

类型:宏定义

描述:禁用 Windows 上荒谬的“不安全”警告。

_USE_MATH_DEFINES

类型:宏定义

描述:在 MSVC 上使用 M_PI。

GGML_DEBUG

类型:宏定义

描述:定义调试级别。

GGML_GELU_FP16

类型:宏定义

描述:定义 GELU 函数的浮点数精度为 16 位。

GGML_GELU_QUICK_FP16

类型:宏定义

描述:定义快速 GELU 函数的浮点数精度为 16 位。

GGML_SILU_FP16

类型:宏定义

描述:定义 SILU 函数的浮点数精度为 16 位。

GGML_SOFT_MAX_UNROLL

类型:宏定义

描述:定义 SoftMax 函数的展开次数。

GGML_VEC_DOT_UNROLL

类型:宏定义

描述:定义向量点积函数的展开次数。

GGML_VEC_MAD_UNROLL

类型:宏定义

描述:定义向量乘加函数的展开次数。

GGML_MEM_ALIGN

类型:宏定义

描述:定义内存对齐大小。

CACHE_LINE_SIZE

类型:宏定义

描述:定义缓存行大小。

CACHE_LINE_SIZE_F32

类型:宏定义

描述:定义单精度浮点数缓存行大小。

GGML_TYPE_COUNT

类型:宏定义

描述:定义类型特性的数量。

GGML_TYPE_I8

类型:宏定义

描述:定义 8 位整数类型。

GGML_TYPE_I16

类型:宏定义

描述:定义 16 位整数类型。

GGML_TYPE_I32

类型:宏定义

描述:定义 32 位整数类型。

GGML_TYPE_F32

类型:宏定义

描述:定义 32 位浮点数类型。

atomic_int

描述:定义原子整型。

字段 类型 描述

atomic_bool

描述:定义原子布尔型。

字段 类型 描述

pthread_t

描述:定义线程句柄类型。

字段 类型 描述

thread_ret_t

描述:定义线程返回类型。

字段 类型 描述

ggml_type_traits_t

描述:定义类型特性结构体。

字段 类型 描述
type_name char[] 类型名称
blck_size size_t 块大小
type_size size_t 类型大小
is_quantized bool 是否量化

atomic_store

void atomic_store(atomic_int * ptr, LONG val)

描述:原子操作:存储。

参数:

  • ptr:指向原子整型的指针。

  • val:要存储的值。

返回值:无。

atomic_load

LONG atomic_load(atomic_int * ptr)

描述:原子操作:加载。

参数:

  • ptr:指向原子整型的指针。

返回值:加载的值。

atomic_fetch_add

LONG atomic_fetch_add(atomic_int * ptr, LONG inc)

描述:原子操作:加法。

参数:

  • ptr:指向原子整型的指针。

  • inc:要增加的值。

返回值:增加前的值。

atomic_fetch_sub

LONG atomic_fetch_sub(atomic_int * ptr, LONG dec)

描述:原子操作:减法。

参数:

  • ptr:指向原子整型的指针。

  • dec:要减少的值。

返回值:减少前的值。

pthread_create

int pthread_create(pthread_t * out, void * unused, thread_ret_t(*func)(void *), void * arg)

描述:创建线程。

参数:

  • out:输出参数,用于存储新创建线程的句柄。

  • unused:未使用的参数。

  • func:线程函数。

  • arg:传递给线程函数的参数。

返回值:线程创建结果。

pthread_join

int pthread_join(pthread_t thread, void * unused)

描述:等待线程结束。

参数:

  • thread:要等待的线程句柄。

  • unused:未使用的参数。

返回值:等待结果。

sched_yield

int sched_yield (void)

描述:在当前线程放弃 CPU 时间片,使得其他线程有机会执行。

参数:无。

返回值:0。

ggml_aligned_malloc

void * ggml_aligned_malloc(size_t size)

描述:分配对齐的内存。

参数:

  • size:要分配的内存大小。

返回值:指向分配内存的指针,如果分配失败则返回 NULL。

ggml_fp16_to_fp32

float ggml_fp16_to_fp32(ggml_fp16_t x)

描述:将 f16 转换为 f32。

参数:

  • x:要转换的 f16 值。

返回值:转换后的 f32 值。

ggml_fp32_to_fp16

ggml_fp16_t ggml_fp32_to_fp16(float x)

描述:将 f32 转换为 f16。

参数:

  • x:要转换的 f32 值。

返回值:转换后的 f16 值。

ggml_fp16_to_fp32_row

void ggml_fp16_to_fp32_row(const ggml_fp16_t * x, float * y, int n)

描述:将 f16 数组转换为 f32 数组。

参数:

  • x:输入的 f16 数组。

  • y:输出的 f32 数组。

  • n:数组大小。

返回值:无。

ggml_fp32_to_fp16_row

void ggml_fp32_to_fp16_row(const float * x, ggml_fp16_t * y, int n)

描述:将 f32 数组转换为 f16 数组。

参数:

  • x:输入的 f32 数组。

  • y:输出的 f16 数组。

  • n:数组大小。

返回值:无。

ggml_time_init

void ggml_time_init(void)

描述:初始化定时器。

参数:无。

返回值:无。

ggml_time_ms

int64_t ggml_time_ms(void)

描述:获取毫秒级时间。

参数:无。

返回值:当前时间(毫秒)。

ggml_time_us

int64_t ggml_time_us(void)

描述:获取微秒级时间。

参数:无。

返回值:当前时间(微秒)。

ggml_cycles

int64_t ggml_cycles(void)

描述:获取时钟周期数。

参数:无。

返回值:当前时钟周期数。

ggml_cycles_per_ms

int64_t ggml_cycles_per_ms(void)

描述:获取每毫秒的时钟周期数。

参数:无。

返回值:每毫秒的时钟周期数。

ggml_vec_dot_f32

static void ggml_vec_dot_f32(const int n, float * restrict s, const float * restrict x, const float * restrict y)

描述:计算两个 float 数组的点积。

参数:

  • n:数组大小。

  • s:输出参数,用于存储点积结果。

  • x:第一个输入数组。

  • y:第二个输入数组。

返回值:无。

ggml_vec_dot_f16

static void ggml_vec_dot_f16(const int n, float * restrict s, ggml_fp16_t * restrict x, ggml_fp16_t * restrict y)

描述:计算两个 ggml_fp16_t 类型数组的点积。

参数:

  • n:数组大小。

  • s:输出参数,用于存储点积结果。

  • x:第一个输入数组。

  • y:第二个输入数组。

返回值:无。

GGML_TYPE_F32

类型:枚举值

描述:表示数据类型为32位浮点数。

GGML_TYPE_F16

类型:枚举值

描述:表示数据类型为16位浮点数。

GGML_TYPE_Q4_0

类型:枚举值

描述:表示数据类型为量化类型Q4_0。

GGML_TYPE_Q4_1

类型:枚举值

描述:表示数据类型为量化类型Q4_1。

GGML_TYPE_Q5_0

类型:枚举值

描述:表示数据类型为量化类型Q5_0。

GGML_TYPE_Q5_1

类型:枚举值

描述:表示数据类型为量化类型Q5_1。

GGML_TYPE_Q8_0

类型:枚举值

描述:表示数据类型为量化类型Q8_0。

GGML_TYPE_Q8_1

类型:枚举值

描述:表示数据类型为量化类型Q8_1。

GGML_TYPE_Q2_K

类型:枚举值

描述:表示数据类型为量化类型Q2_K。

GGML_TYPE_Q3_K

类型:枚举值

描述:表示数据类型为量化类型Q3_K。

GGML_TYPE_Q4_K

类型:枚举值

描述:表示数据类型为量化类型Q4_K。

GGML_TYPE_Q5_K

类型:枚举值

描述:表示数据类型为量化类型Q5_K。

GGML_TYPE_Q6_K

类型:枚举值

描述:表示数据类型为量化类型Q6_K。

GGML_TYPE_Q8_K

类型:枚举值

描述:表示数据类型为量化类型Q8_K。

ggml_type_traits_t

描述:包含特定数据类型的属性,如名称、块大小、类型大小、是否量化、转换函数等。

字段 类型 描述
type_name char* 类型名称
blck_size int 块大小
type_size size_t 类型大小
is_quantized 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 enum ggml_type 向量点积类型

ggml_internal_get_type_traits

ggml_type_traits_t ggml_internal_get_type_traits(enum ggml_type type)

描述:获取特定数据类型的属性。

参数:

  • type:数据类型枚举值

返回值:ggml_type_traits_t结构体,包含特定数据类型的属性。

vaddvq_f32

inline static float vaddvq_f32(float32x4_t v)

描述:将四个单精度浮点数向量相加。

参数:

  • v:包含四个单精度浮点数的向量

返回值:四个单精度浮点数之和。

dequantize_row_q4_0

ggml_to_float_t dequantize_row_q4_0

描述:将量化类型Q4_0转换为浮点数的函数。

参数:未提供,根据上下文推断可能需要一个量化类型的数组。

返回值:转换后的浮点数数组。

quantize_row_q4_0

quantize_row_q4_0

描述:将浮点数转换为量化类型Q4_0的函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q4_0数组。

quantize_row_q4_0_reference

ggml_from_float_t quantize_row_q4_0_reference

描述:将浮点数转换为量化类型Q4_0的参考函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q4_0数组。

ggml_vec_dot_q4_0_q8_0

ggml_vec_dot_t ggml_vec_dot_q4_0_q8_0

描述:量化类型Q4_0与Q8_0的向量点乘函数。

参数:未提供,根据上下文推断可能需要两个向量。

返回值:向量点乘的结果。

dequantize_row_q4_1

ggml_to_float_t dequantize_row_q4_1

描述:将量化类型Q4_1转换为浮点数的函数。

参数:未提供,根据上下文推断可能需要一个量化类型的数组。

返回值:转换后的浮点数数组。

quantize_row_q4_1

quantize_row_q4_1

描述:将浮点数转换为量化类型Q4_1的函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q4_1数组。

quantize_row_q4_1_reference

ggml_from_float_t quantize_row_q4_1_reference

描述:将浮点数转换为量化类型Q4_1的参考函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q4_1数组。

ggml_vec_dot_q4_1_q8_1

ggml_vec_dot_t ggml_vec_dot_q4_1_q8_1

描述:量化类型Q4_1与Q8_1的向量点乘函数。

参数:未提供,根据上下文推断可能需要两个向量。

返回值:向量点乘的结果。

dequantize_row_q5_0

ggml_to_float_t dequantize_row_q5_0

描述:将量化类型Q5_0转换为浮点数的函数。

参数:未提供,根据上下文推断可能需要一个量化类型的数组。

返回值:转换后的浮点数数组。

quantize_row_q5_0

quantize_row_q5_0

描述:将浮点数转换为量化类型Q5_0的函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q5_0数组。

quantize_row_q5_0_reference

ggml_from_float_t quantize_row_q5_0_reference

描述:将浮点数转换为量化类型Q5_0的参考函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q5_0数组。

ggml_vec_dot_q5_0_q8_0

ggml_vec_dot_t ggml_vec_dot_q5_0_q8_0

描述:量化类型Q5_0与Q8_0的向量点乘函数。

参数:未提供,根据上下文推断可能需要两个向量。

返回值:向量点乘的结果。

dequantize_row_q5_1

ggml_to_float_t dequantize_row_q5_1

描述:将量化类型Q5_1转换为浮点数的函数。

参数:未提供,根据上下文推断可能需要一个量化类型的数组。

返回值:转换后的浮点数数组。

quantize_row_q5_1

quantize_row_q5_1

描述:将浮点数转换为量化类型Q5_1的函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q5_1数组。

quantize_row_q5_1_reference

ggml_from_float_t quantize_row_q5_1_reference

描述:将浮点数转换为量化类型Q5_1的参考函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q5_1数组。

ggml_vec_dot_q5_1_q8_1

ggml_vec_dot_t ggml_vec_dot_q5_1_q8_1

描述:量化类型Q5_1与Q8_1的向量点乘函数。

参数:未提供,根据上下文推断可能需要两个向量。

返回值:向量点乘的结果。

dequantize_row_q8_0

ggml_to_float_t dequantize_row_q8_0

描述:将量化类型Q8_0转换为浮点数的函数。

参数:未提供,根据上下文推断可能需要一个量化类型的数组。

返回值:转换后的浮点数数组。

quantize_row_q8_0

quantize_row_q8_0

描述:将浮点数转换为量化类型Q8_0的函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q8_0数组。

quantize_row_q8_0_reference

ggml_from_float_t quantize_row_q8_0_reference

描述:将浮点数转换为量化类型Q8_0的参考函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q8_0数组。

ggml_vec_dot_q8_0_q8_0

ggml_vec_dot_t ggml_vec_dot_q8_0_q8_0

描述:量化类型Q8_0与Q8_0的向量点乘函数。

参数:未提供,根据上下文推断可能需要两个向量。

返回值:向量点乘的结果。

quantize_row_q8_1

quantize_row_q8_1

描述:将浮点数转换为量化类型Q8_1的函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q8_1数组。

quantize_row_q8_1_reference

ggml_from_float_t quantize_row_q8_1_reference

描述:将浮点数转换为量化类型Q8_1的参考函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q8_1数组。

dequantize_row_q2_K

ggml_to_float_t dequantize_row_q2_K

描述:将量化类型Q2_K转换为浮点数的函数。

参数:未提供,根据上下文推断可能需要一个量化类型的数组。

返回值:转换后的浮点数数组。

quantize_row_q2_K

quantize_row_q2_K

描述:将浮点数转换为量化类型Q2_K的函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q2_K数组。

quantize_row_q2_K_reference

ggml_from_float_t quantize_row_q2_K_reference

描述:将浮点数转换为量化类型Q2_K的参考函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q2_K数组。

ggml_vec_dot_q2_K_q8_K

ggml_vec_dot_t ggml_vec_dot_q2_K_q8_K

描述:量化类型Q2_K与Q8_K的向量点乘函数。

参数:未提供,根据上下文推断可能需要两个向量。

返回值:向量点乘的结果。

dequantize_row_q3_K

ggml_to_float_t dequantize_row_q3_K

描述:将量化类型Q3_K转换为浮点数的函数。

参数:未提供,根据上下文推断可能需要一个量化类型的数组。

返回值:转换后的浮点数数组。

quantize_row_q3_K

quantize_row_q3_K

描述:将浮点数转换为量化类型Q3_K的函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q3_K数组。

quantize_row_q3_K_reference

ggml_from_float_t quantize_row_q3_K_reference

描述:将浮点数转换为量化类型Q3_K的参考函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q3_K数组。

ggml_vec_dot_q3_K_q8_K

ggml_vec_dot_t ggml_vec_dot_q3_K_q8_K

描述:量化类型Q3_K与Q8_K的向量点乘函数。

参数:未提供,根据上下文推断可能需要两个向量。

返回值:向量点乘的结果。

dequantize_row_q4_K

ggml_to_float_t dequantize_row_q4_K

描述:将量化类型Q4_K转换为浮点数的函数。

参数:未提供,根据上下文推断可能需要一个量化类型的数组。

返回值:转换后的浮点数数组。

quantize_row_q4_K

quantize_row_q4_K

描述:将浮点数转换为量化类型Q4_K的函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q4_K数组。

quantize_row_q4_K_reference

ggml_from_float_t quantize_row_q4_K_reference

描述:将浮点数转换为量化类型Q4_K的参考函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q4_K数组。

ggml_vec_dot_q4_K_q8_K

ggml_vec_dot_t ggml_vec_dot_q4_K_q8_K

描述:量化类型Q4_K与Q8_K的向量点乘函数。

参数:未提供,根据上下文推断可能需要两个向量。

返回值:向量点乘的结果。

dequantize_row_q5_K

ggml_to_float_t dequantize_row_q5_K

描述:将量化类型Q5_K转换为浮点数的函数。

参数:未提供,根据上下文推断可能需要一个量化类型的数组。

返回值:转换后的浮点数数组。

quantize_row_q5_K

quantize_row_q5_K

描述:将浮点数转换为量化类型Q5_K的函数。

参数:未提供,根据上下文推断可能需要一个浮点数数组。

返回值:转换后的量化类型Q5_K数组。

quantize_row_q5_K_reference

ggml_from_float_t quantize_row_q5_K_reference

描述:

GGML_F32x8

类型:宏定义

描述:定义 F32 向量类型为 GGML_F32x8,即 GGML_F32x8 被定义为 GGML_F32x8。

GGML_F32x8_ZERO

类型:宏定义

描述:定义 F32 向量零初始化宏,即 GGML_F32x8_ZERO 被定义为 GGML_F32x8_ZERO。

GGML_F32x8_SET1

类型:宏定义

描述:定义 F32 向量设置单个值的宏,即 GGML_F32x8_SET1 被定义为 GGML_F32x8_SET1。

GGML_F32x8_LOAD

类型:宏定义

描述:定义 F32 向量加载数据的宏,即 GGML_F32x8_LOAD 被定义为 GGML_F32x8_LOAD。

GGML_F32x8_STORE

类型:宏定义

描述:定义 F32 向量存储数据的宏,即 GGML_F32x8_STORE 被定义为 GGML_F32x8_STORE。

GGML_F32x8_FMA

类型:宏定义

描述:定义 F32 向量 FMA(fused multiply-add)操作的宏,即 GGML_F32x8_FMA 被定义为 GGML_F32x8_FMA。

GGML_F32x8_ADD

类型:宏定义

描述:定义 F32 向量加法的宏,即 GGML_F32x8_ADD 被定义为 GGML_F32x8_ADD。

GGML_F32x8_MUL

类型:宏定义

描述:定义 F32 向量乘法的宏,即 GGML_F32x8_MUL 被定义为 GGML_F32x8_MUL。

GGML_F32x8_REDUCE

类型:宏定义

描述:定义 F32 向量规约操作的宏,即 GGML_F32x8_REDUCE 被定义为 GGML_F32x8_REDUCE。

GGML_F16_STEP

类型:宏定义

描述:定义 F16 步长为 32,即 GGML_F16_STEP 被定义为 32。

GGML_F16_EPR

类型:宏定义

描述:定义 F16 每个寄存器的元素个数为 8,即 GGML_F16_EPR 被定义为 8。

GGML_F32Cx8

类型:宏定义

描述:定义 F32Cx8 类型为 __m256,即 GGML_F32Cx8 被定义为 __m256。

GGML_F32Cx8_ZERO

类型:宏定义

描述:定义 F32Cx8 类型的零初始化宏,即 GGML_F32Cx8_ZERO 被定义为 _mm256_setzero_ps()。

GGML_F32Cx8_SET1

类型:宏定义

描述:定义 F32Cx8 类型设置单个值的宏,即 GGML_F32Cx8_SET1 被定义为 _mm256_set1_ps(x)。

GGML_F32Cx8_LOAD

类型:宏定义

描述:定义 F32Cx8 类型加载数据的宏,即 GGML_F32Cx8_LOAD 被定义为 _mm256_cvtph_ps(_mm_loadu_si128((__m128i *)(x)))。

GGML_F32Cx8_STORE

类型:宏定义

描述:定义 F32Cx8 类型存储数据的宏,即 GGML_F32Cx8_STORE 被定义为 _mm_storeu_si128((__m128i *)(x), _mm256_cvtps_ph(y, 0))。

GGML_F32Cx8_FMA

类型:宏定义

描述:定义 F32Cx8 类型 FMA 操作的宏,即 GGML_F32Cx8_FMA 被定义为 GGML_F32x8_FMA。

GGML_F32Cx8_ADD

类型:宏定义

描述:定义 F32Cx8 类型加法的宏,即 GGML_F32Cx8_ADD 被定义为 _mm256_add_ps。

GGML_F32Cx8_MUL

类型:宏定义

描述:定义 F32Cx8 类型乘法的宏,即 GGML_F32Cx8_MUL 被定义为 _mm256_mul_ps。

GGML_F32Cx8_REDUCE

类型:宏定义

描述:定义 F32Cx8 类型规约操作的宏,即 GGML_F32Cx8_REDUCE 被定义为 GGML_F32x8_REDUCE。

GGML_F16_VEC

类型:宏定义

描述:定义 F16 向量类型为 GGML_F32Cx8,即 GGML_F16_VEC 被定义为 GGML_F32Cx8。

GGML_F16_VEC_ZERO

类型:宏定义

描述:定义 F16 向量零初始化宏,即 GGML_F16_VEC_ZERO 被定义为 GGML_F32Cx8_ZERO。

GGML_F16_VEC_SET1

类型:宏定义

描述:定义 F16 向量设置单个值的宏,即 GGML_F16_VEC_SET1 被定义为 GGML_F32Cx8_SET1。

GGML_F16_VEC_LOAD

类型:宏定义

描述:定义 F16 向量加载数据的宏,即 GGML_F16_VEC_LOAD 被定义为 GGML_F32Cx8_LOAD(p)。

GGML_F16_VEC_STORE

类型:宏定义

描述:定义 F16 向量存储数据的宏,即 GGML_F16_VEC_STORE 被定义为 GGML_F32Cx8_STORE(p, r[i])。

GGML_F16_VEC_FMA

类型:宏定义

描述:定义 F16 向量 FMA 操作的宏,即 GGML_F16_VEC_FMA 被定义为 GGML_F32Cx8_FMA。

GGML_F16_VEC_ADD

类型:宏定义

描述:定义 F16 向量加法为 F32x8 加法,即 GGML_F16_VEC_ADD 被定义为 GGML_F32Cx8_ADD。

GGML_F16_VEC_MUL

类型:宏定义

描述:定义 F16 向量乘法为 F32x8 乘法,即 GGML_F16_VEC_MUL 被定义为 GGML_F32Cx8_MUL。

GGML_F16_VEC_REDUCE

类型:宏定义

描述:定义 F16 向量归约为 F32x8 归约,即 GGML_F16_VEC_REDUCE 被定义为 GGML_F32Cx8_REDUCE。

无结构体定义。

无公开函数定义。

以上是对给定代码段中的常量、结构体、公开函数的提取和总结。由于代码中主要包含的是宏定义,因此没有结构体和公开函数的定义。

GGML_F16_VEC_MUL

类型:宏定义

描述:定义 GGML_F16_VEC_MUL 为 GGML_F32Cx4_MUL,用于半精度浮点数向量乘法。

GGML_F16_VEC_REDUCE

类型:宏定义

描述:定义 GGML_F16_VEC_REDUCE 为 GGML_F32Cx4_REDUCE,用于半精度浮点数向量缩减操作。

GGML_F32_ARR

类型:宏定义

描述:在使用 SIMD 指令集时,定义每个步骤要使用的寄存器数量。

GGML_F16_ARR

类型:宏定义

描述:在使用 SIMD 指令集时,定义每个步骤要使用的寄存器数量。

无结构体定义。

ggml_vec_set_i8

void ggml_vec_set_i8(const int n, int8_t * x, const int8_t v)

描述:设置 int8_t 类型数组的值为 v。

参数:

  • n:数组大小。

  • x:目标数组。

  • v:要设置的值。

ggml_vec_set_i16

void ggml_vec_set_i16(const int n, int16_t * x, const int16_t v)

描述:设置 int16_t 类型数组的值为 v。

参数:

  • n:数组大小。

  • x:目标数组。

  • v:要设置的值。

ggml_vec_set_i32

void ggml_vec_set_i32(const int n, int32_t * x, const int32_t v)

描述:设置 int32_t 类型数组的值为 v。

参数:

  • n:数组大小。

  • x:目标数组。

  • v:要设置的值。

ggml_vec_set_f16

void ggml_vec_set_f16(const int n, ggml_fp16_t * x, const int32_t v)

描述:设置 ggml_fp16_t 类型数组的值为 v。

参数:

  • n:数组大小。

  • x:目标数组。

  • v:要设置的值。

ggml_vec_add_f32

void ggml_vec_add_f32(const int n, float * z, const float * x, const float * y)

描述:将两个 float 类型数组相加,结果存入第三个数组。

参数:

  • n:数组大小。

  • z:结果数组。

  • x:第一个数组。

  • y:第二个数组。

ggml_vec_add1_f32

void ggml_vec_add1_f32(const int n, float * z, const float * x, const float v)

描述:将一个 float 类型数组和一个常量值相加,结果存入另一个数组。

参数:

  • n:数组大小。

  • z:结果数组。

  • x:数组。

  • v:常量值。

ggml_vec_acc_f32

void ggml_vec_acc_f32(const int n, float * y, const float * x)

描述:将一个 float 类型数组和另一个数组相加,结果存入第一个数组。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_vec_acc1_f32

void ggml_vec_acc1_f32(const int n, float * y, const float v)

描述:将一个 float 类型数组和一个常量值相加,结果存入第一个数组。

参数:

  • n:数组大小。

  • y:目标数组。

  • v:常量值。

ggml_vec_sub_f32

void ggml_vec_sub_f32(const int n, float * z, const float * x, const float * y)

描述:将两个 float 类型数组相减,结果存入第三个数组。

参数:

  • n:数组大小。

  • z:结果数组。

  • x:第一个数组。

  • y:第二个数组。

ggml_vec_set_f32

void ggml_vec_set_f32(const int n, float * x, const float v)

描述:设置 float 类型数组的值为 v。

参数:

  • n:数组大小。

  • x:目标数组。

  • v:要设置的值。

ggml_vec_cpy_f32

void ggml_vec_cpy_f32(const int n, float * y, const float * x)

描述:复制一个 float 类型数组的值到另一个数组。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_vec_neg_f32

void ggml_vec_neg_f32(const int n, float * y, const float * x)

描述:将一个 float 类型数组的值取反,结果存入另一个数组。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_vec_mul_f32

void ggml_vec_mul_f32(const int n, float * z, const float * x, const float * y)

描述:用于计算两个 float 数组的元素对应位置相乘,结果存入第三个数组。

参数:

  • n:数组大小。

  • z:结果数组。

  • x:第一个数组。

  • y:第二个数组。

ggml_vec_div_f32

void ggml_vec_div_f32(const int n, float * z, const float * x, const float * y)

描述:用于计算两个 float 数组的元素对应位置相除,结果存入第三个数组。

参数:

  • n:数组大小。

  • z:结果数组。

  • x:第一个数组。

  • y:第二个数组。

ggml_vec_dot_f32

void ggml_vec_dot_f32(const int n, float * restrict s, const float * restrict x, const float * restrict y)

描述:用于计算两个 float 数组的点积。

参数:

  • n:数组大小。

  • s:存储点积结果的地址。

  • x:第一个数组。

  • y:第二个数组。

ggml_vec_dot_f16

void ggml_vec_dot_f16(const int n, float * restrict s, ggml_fp16_t * restrict x, ggml_fp16_t * restrict y)

描述:用于计算两个 ggml_fp16_t 数组的点积。

参数:

  • n:数组大小。

  • s:存储点积结果的地址。

  • x:第一个数组。

  • y:第二个数组。

ggml_vec_dot_f16_unroll

void ggml_vec_dot_f16_unroll(const int n, const int xs, float * restrict s, void * restrict xv, ggml_fp16_t * restrict y)

描述:一次计算 GGML_VEC_DOT_UNROLL 个点积。

参数:

  • n:数组大小。

  • xs:x 的行跨度(以字节为单位)。

  • s:存储点积结果的地址。

  • xv:x 的指针。

  • y:第二个数组。

ggml_vec_mad_f32

void ggml_vec_mad_f32(const int n, float * restrict y, const float * restrict x, const float v)

描述:计算 GGML_VEC_MAD_F32。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

  • v:常量值。

ggml_vec_mad_f32_unroll

void ggml_vec_mad_f32_unroll(const int n, const int xs, const int vs, float * restrict y, const float * restrict xv, const float * restrict vv)

描述:对于给定的 x 和 v,xs 和 vs 分别是它们的字节步长。

参数:

  • n:数组大小。

  • xs:x 的字节步长。

  • vs:v 的字节步长。

  • y:目标数组。

  • xv:x 的指针。

  • vv:v 的指针。

ggml_vec_scale_f32

void ggml_vec_scale_f32(const int n, float * y, const float v)

描述:对给定的 y 和 v,将 y 中的每个元素乘以 v。

参数:

  • n:数组大小。

  • y:目标数组。

  • v:常量值。

ggml_vec_norm_f32

void ggml_vec_norm_f32(const int n, float * s, const float * x)

描述:计算向量的 L2 范数。

参数:

  • n:数组大小。

  • s:存储范数结果的地址。

  • x:源数组。

ggml_vec_sqr_f32

void ggml_vec_sqr_f32(const int n, float * y, const float * x)

描述:计算向量的每个元素的平方。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_vec_sqrt_f32

void ggml_vec_sqrt_f32(const int n, float * y, const float * x)

描述:计算向量的每个元素的平方根。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_vec_log_f32

void ggml_vec_log_f32(const int n, float * y, const float * x)

描述:计算向量的每个元素的自然对数。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_vec_abs_f32

void ggml_vec_abs_f32(const int n, float * y, const float * x)

描述:计算向量的每个元素的绝对值。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_vec_sgn_f32

void ggml_vec_sgn_f32(const int n, float * y, const float * x)

描述:计算向量的每个元素的符号函数。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_vec_step_f32

void ggml_vec_step_f32(const int n, float * y, const float * x)

描述:计算向量的每个元素的阶跃函数。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_vec_tanh_f32

void ggml_vec_tanh_f32(const int n, float * y, const float * x)

描述:计算向量的每个元素的双曲正切函数。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_vec_elu_f32

void ggml_vec_elu_f32(const int n, float * y, const float * x)

描述:计算向量的每个元素的 ELU 函数。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_vec_relu_f32

void ggml_vec_relu_f32(const int n, float * y, const float * x)

描述:计算向量的每个元素的 ReLU 函数。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_vec_leaky_relu_f32

void ggml_vec_leaky_relu_f32(const int n, float * y, const float * x, const float ns)

描述:计算向量的每个元素的 Leaky ReLU 函数。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

  • ns:Leaky ReLU 的斜率。

ggml_gelu_f32

float ggml_gelu_f32(float x)

描述:计算 GELU 函数。

参数:

  • x:输入值。

返回值:GELU 函数的计算结果。

ggml_vec_gelu_f16

void ggml_vec_gelu_f16(const int n, ggml_fp16_t * y, const ggml_fp16_t * x)

描述:对输入的半精度浮点数数组进行 GELU 激活函数操作。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_vec_gelu_f32

void ggml_vec_gelu_f32(const int n, float * y, const float * x)

描述:对输入的单精度浮点数数组进行 GELU 激活函数操作。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_gelu_quick_f32

float ggml_gelu_quick_f32(float x)

描述:计算快速 GELU 激活函数。

参数:

  • x:输入值。

返回值:快速 GELU 函数的计算结果。

ggml_vec_gelu_quick_f32

void ggml_vec_gelu_quick_f32(const int n, float * y, const float * x)

描述:对输入的单精度浮点数数组进行快速 GELU 激活函数操作。

参数:

  • n:数组大小。

  • y:目标数组。

  • x:源数组。

ggml_silu_f32

float ggml_silu_f32(float x)

描述:计算 Sigmoid Linear Unit (SiLU) 函数。

参数:

  • x:输入值。

返回值:SiLU 函数的计算结果。

ggml_vec_silu_f32

void ggml_vec_silu_f32(const int n, float * y, const float * x)

描述:对输入的单精度浮点数数组进行 SiLU 激活函数操作。

参数:

  • n:数组大小。

  • `

GGML_OP_COUNT

类型:整数

描述:表示操作的总数,用于断言检查操作数组的大小是否正确。

GGML_OP_POOL_COUNT

类型:整数

描述:表示操作池的总数,用于断言检查操作池数组的大小是否正确。

GGML_UNARY_OP_COUNT

类型:整数

描述:表示一元操作的总数,用于断言检查一元操作数组的大小是否正确。

GGML_MEM_ALIGN

类型:整数

描述:表示内存对齐的大小,用于断言检查结构体大小是否为内存对齐的倍数。

GGML_MAX_CONTEXTS

类型:整数

描述:表示上下文容器的最大数量。

GGML_NUMA_MAX_NODES

类型:整数

描述:表示NUMA节点的最大数量。

GGML_NUMA_MAX_CPUS

类型:整数

描述:表示NUMA节点上CPU的最大数量。

ggml_object

描述:表示ggml库中的一个对象,包含类型、偏移量、大小和下一个对象的地址等信息。

字段 类型 描述
type int 对象类型
offs size_t 偏移量
size size_t 大小
next struct ggml_object * 下一个对象的地址

ggml_tensor

描述:表示ggml库中的一个张量,包含元素数量、块大小、类型等信息。

字段 类型 描述
ne int64_t[GGML_MAX_DIMS] 元素数量
nb int64_t[GGML_MAX_DIMS] 块大小
type enum ggml_type 类型

ggml_context

描述:表示ggml库的上下文,包含内存大小、缓冲区、对象链表等信息。

字段 类型 描述
mem_size size_t 内存大小
mem_buffer void * 内存缓冲区
mem_buffer_owned bool 是否拥有内存缓冲区
no_alloc bool 是否禁用分配
no_alloc_save bool 保存禁用分配状态
n_objects int 对象数量
objects_begin struct ggml_object * 对象链表开始
objects_end struct ggml_object * 对象链表结束
scratch struct ggml_scratch 临时空间
scratch_save struct ggml_scratch 保存的临时空间

ggml_context_container

描述:表示ggml库的上下文容器,包含是否使用和上下文信息。

字段 类型 描述
used bool 是否使用
context struct ggml_context 上下文信息

ggml_numa_node

描述:表示NUMA节点,包含该节点上的硬件线程信息。

字段 类型 描述
cpus uint32_t[GGML_NUMA_MAX_CPUS] 硬件线程数组
n_cpus uint32_t 硬件线程数量

ggml_numa_nodes

描述:表示NUMA节点集合,包含节点数组和总CPU数量。

字段 类型 描述
nodes struct ggml_numa_node[GGML_NUMA_MAX_NODES] NUMA节点数组
n_nodes uint32_t 节点数量
total_cpus uint32_t 总CPU数量

ggml_state

描述:表示ggml库的全局状态,包含上下文容器数组和NUMA节点信息。

字段 类型 描述
contexts struct ggml_context_container[GGML_MAX_CONTEXTS] 上下文容器数组
numa struct ggml_numa_nodes NUMA节点信息

ggml_vec_sum_f32

void ggml_vec_sum_f32(const int n, float * s, const float * x);

描述:计算float类型数组x中所有元素的和,并将结果存储到s指向的地址中。

参数:

  • n:数组x的元素数量。

  • s:指向存储结果的地址。

  • x:输入数组。

返回值:无。

ggml_vec_sum_f32_ggf

inline static void ggml_vec_sum_f32_ggf(const int n, ggml_float * s, const float * x);

描述:计算float类型数组x中所有元素的和,并将结果存储到s指向的地址中。

参数:

  • n:数组x的元素数量。

  • s:指向存储结果的地址。

  • x:输入数组。

返回值:无。

ggml_vec_sum_f16_ggf

inline static void ggml_vec_sum_f16_ggf(const int n, float * s, const ggml_fp16_t * x);

描述:计算fp16类型数组x中所有元素的和,并将结果存储到s指向的地址中。

参数:

  • n:数组x的元素数量。

  • s:指向存储结果的地址。

  • x:输入数组。

返回值:无。

ggml_vec_max_f32

inline static void ggml_vec_max_f32(const int n, float * s, const float * x);

描述:计算float类型数组x中的最大值,并将结果存储到s指向的地址中。

参数:

  • n:数组x的元素数量。

  • s:指向存储结果的地址。

  • x:输入数组。

返回值:无。

ggml_vec_norm_inv_f32

inline static void ggml_vec_norm_inv_f32(const int n, float * s, const float * x);

描述:计算float类型数组x的逆范数,并将结果存储到s指向的地址中。

参数:

  • n:数组x的元素数量。

  • s:指向存储结果的地址。

  • x:输入数组。

返回值:无。

ggml_vec_argmax_f32

inline static void ggml_vec_argmax_f32(const int n, int * s, const float * x);

描述:计算float类型数组x中最大值的索引,并将结果存储到s指向的地址中。

参数:

  • n:数组x的元素数量。

  • s:指向存储结果的地址。

  • x:输入数组。

返回值:无。

ggml_setup_op_has_task_pass

static void ggml_setup_op_has_task_pass(void);

描述:设置操作是否需要进行初始化或结束处理的任务通行证。

参数:无。

返回值:无。

ggml_numa_init

void ggml_numa_init(void);

描述:初始化NUMA支持。

参数:无。

返回值:无。

ggml_is_numa

bool ggml_is_numa(void);

描述:检查是否支持NUMA。

参数:无。

返回值:是否支持NUMA。

ggml_print_object

void ggml_print_object(const struct ggml_object * obj);

描述:打印ggml_object的信息。

参数:

  • obj:要打印的ggml_object对象。

返回值:无。

ggml_print_objects

void ggml_print_objects(const struct ggml_context * ctx);

描述:打印上下文中的所有对象信息。

参数:

  • ctx:上下文指针。

返回值:无。

ggml_nelements

int64_t ggml_nelements(const struct ggml_tensor * tensor);

描述:返回张量中元素的总数。

参数:

  • tensor:张量指针。

返回值:元素总数。

ggml_nrows

int64_t ggml_nrows(const struct ggml_tensor * tensor);

描述:返回张量中的行数。

参数:

  • tensor:张量指针。

返回值:行数。

ggml_nbytes

size_t ggml_nbytes(const struct ggml_tensor * tensor);

描述:返回张量占用的字节数。

参数:

  • tensor:张量指针。

返回值:占用的字节数。

ggml_nbytes_pad

size_t ggml_nbytes_pad(const struct ggml_tensor * tensor);

描述:返回张量占用的字节数,按照内存对齐方式进行填充。

参数:

  • tensor:张量指针。

返回值:填充后的字节数。

ggml_blck_size

int ggml_blck_size(enum ggml_type type);

描述:返回给定类型的块大小。

参数:

  • type:类型枚举。

返回值:块大小。

ggml_type_size

size_t ggml_type_size(enum ggml_type type);

描述:返回给定类型的大小。

参数:

  • type:类型枚举。

返回值:类型大小。

ggml_row_size

size_t ggml_row_size(enum ggml_type type, int64_t ne);

描述:计算给定类型和元素数量的行大小。

参数:

  • type:类型枚举。

  • ne:元素数量。

返回值:行大小。

ggml_type_sizef

double ggml_type_sizef(enum ggml_type type);

描述:返回给定类型的大小(浮点数形式)。

参数:

  • type:类型枚举。

返回值:类型大小(浮点数)。

ggml_type_name

const char * ggml_type_name(enum ggml_type type);

描述:返回给定类型的名称。

参数:

  • type:类型枚举。

返回值:类型名称。

ggml_is_quantized

bool ggml_is_quantized(enum ggml_type type);

描述:返回给定类型是否是量化的。

参数:

  • type:类型枚举。

返回值:是否量化。

ggml_op_name

const char * ggml_op_name(enum ggml_op op);

描述:返回给定操作的名称。

参数:

  • op:操作枚举。

返回值:操作名称。

ggml_op_symbol

const char * ggml_op_symbol(enum ggml_op op);

描述:返回给定操作的符号。

参数:

  • op:操作枚举。

返回值:操作符号。

ggml_unary_op_name

const char * ggml_unary_op_name(enum ggml_unary_op op);

描述:返回给定一元操作的名称。

参数:

  • op:一元操作枚举。

返回值:一元操作名称。

ggml_op_desc

const char * ggml_op_desc(const struct ggml_tensor * t);

描述:返回给定张量的操作描述。

参数:

  • t:张量指针。

返回值:操作描述。

GGML_MAX_DIMS

类型:整数

描述:表示张量的最大维度数。

GGML_MEM_ALIGN

类型:整数

描述:内存对齐的大小。

GGML_OBJECT_SIZE

类型:整数

描述:表示对象结构体的大小。

GGML_TENSOR_SIZE

类型:整数

描述:表示张量结构体的大小。

struct ggml_tensor

描述:表示一个张量的结构体。

字段 类型 描述
type enum ggml_type 张量的数据类型
ne int64_t[GGML_MAX_DIMS] 张量的维度大小
nb size_t[GGML_MAX_DIMS] 张量的块大小
op enum ggml_op 张量的操作类型
uop enum ggml_unary_op 张量的一元操作类型
view_src struct ggml_tensor* 视图源张量
view_offs size_t 视图偏移量

struct ggml_context

描述:表示一个ggml上下文的结构体。

字段 类型 描述
mem_size size_t 内存大小
mem_buffer void* 内存缓冲区
mem_buffer_owned bool 是否拥有内存缓冲区
no_alloc bool 是否禁止分配内存
n_objects int 对象数量
objects_begin struct ggml_object* 对象起始指针
objects_end struct ggml_object* 对象结束指针
scratch struct ggml_scratch 临时缓冲区
scratch_save struct ggml_scratch 保存的临时缓冲区

ggml_unary_op_name

const char * ggml_unary_op_name(enum ggml_unary_op uop);

描述:返回一元操作的名称。

ggml_op_name

const char * ggml_op_name(enum ggml_op op);

描述:返回操作的名称。

ggml_element_size

size_t ggml_element_size(const struct ggml_tensor * tensor);

描述:返回给定张量的元素大小。

ggml_is_scalar

bool ggml_is_scalar(const struct ggml_tensor * tensor);

描述:返回给定张量是否是标量。

ggml_is_vector

bool ggml_is_vector(const struct ggml_tensor * tensor);

描述:返回给定张量是否是向量。

ggml_is_matrix

bool ggml_is_matrix(const struct ggml_tensor * tensor);

描述:返回给定张量是否是矩阵。

ggml_is_3d

bool ggml_is_3d(const struct ggml_tensor * tensor);

描述:返回给定张量是否是3维的。

ggml_n_dims

int ggml_n_dims(const struct ggml_tensor * tensor);

描述:返回给定张量的维度数量。

ggml_can_mul_mat

static inline bool ggml_can_mul_mat(const struct ggml_tensor * t0, const struct ggml_tensor * t1);

描述:检查两个张量是否可以进行矩阵相乘。

ggml_can_out_prod

static inline bool ggml_can_out_prod(const struct ggml_tensor * t0, const struct ggml_tensor * t1);

描述:检查两个张量是否可以进行外积运算。

ggml_ftype_to_ggml_type

enum ggml_type ggml_ftype_to_ggml_type(enum ggml_ftype ftype);

描述:将ggml_ftype转换为ggml_type。

ggml_tensor_overhead

size_t ggml_tensor_overhead(void);

描述:返回GGML_OBJECT_SIZE和GGML_TENSOR_SIZE的总和,表示张量的开销。

ggml_is_transposed

bool ggml_is_transposed(const struct ggml_tensor * tensor);

描述:检查张量是否被转置。

ggml_is_contiguous

bool ggml_is_contiguous(const struct ggml_tensor * tensor);

描述:检查张量是否是连续的。

ggml_is_contiguous_except_dim_1

static inline bool ggml_is_contiguous_except_dim_1(const struct ggml_tensor * tensor);

描述:检查张量是否在第一维度以外是连续的。

ggml_is_permuted

bool ggml_is_permuted(const struct ggml_tensor * tensor);

描述:检查张量是否被置换。

ggml_is_padded_1d

static inline bool ggml_is_padded_1d(const struct ggml_tensor * tensor);

描述:检查张量是否在第一维度以外是填充的。

ggml_are_same_shape

bool ggml_are_same_shape(const struct ggml_tensor * t0, const struct ggml_tensor * t1);

描述:检查两个张量是否具有相同的形状。

ggml_can_repeat

static inline bool ggml_can_repeat(const struct ggml_tensor * t0, const struct ggml_tensor * t1);

描述:检查t1是否可以表示为t0的重复。

ggml_can_repeat_rows

static inline bool ggml_can_repeat_rows(const struct ggml_tensor * t0, const struct ggml_tensor * t1);

描述:检查t0和t1的第一个维度是否相等,并检查其余维度是否可以整除。

ggml_up32

static inline int ggml_up32(int n);

描述:将输入的整数n向上舍入到最接近的32的倍数。

ggml_up

static inline int ggml_up(int n, int m);

描述:将输入的整数n向上舍入到最接近的m的倍数。

ggml_assert_aligned

##define ggml_assert_aligned(ptr) \
    GGML_ASSERT(((uintptr_t) (ptr))%GGML_MEM_ALIGN == 0)

描述:断言指针对齐到GGML_MEM_ALIGN。

ggml_init

struct ggml_context * ggml_init(struct ggml_init_params params);

描述:初始化ggml_context结构体的函数。

ggml_free

void ggml_free(struct ggml_context * ctx);

描述:释放ggml_context结构体的函数。

ggml_used_mem

size_t ggml_used_mem(const struct ggml_context * ctx);

描述:返回已使用的内存大小。

ggml_set_scratch

size_t ggml_set_scratch(struct ggml_context * ctx, struct ggml_scratch scratch);

描述:设置临时缓冲区,返回之前的临时缓冲区的偏移量。

ggml_get_no_alloc

bool ggml_get_no_alloc(struct ggml_context * ctx);

描述:获取是否禁止分配内存。

ggml_set_no_alloc

void ggml_set_no_alloc(struct ggml_context * ctx, bool no_alloc);

描述:设置是否禁止分配内存。

ggml_get_mem_buffer

void * ggml_get_mem_buffer(const struct ggml_context * ctx);

描述:获取内存缓冲区。

ggml_get_mem_size

size_t ggml_get_mem_size(const struct ggml_context * ctx);

描述:获取内存大小。

ggml_get_max_tensor_size

size_t ggml_get_max_tensor_size(const struct ggml_context * ctx);

描述:获取最大张量大小。

ggml_scratch_save

static void ggml_scratch_save(struct ggml_context * ctx);

描述:保存临时缓冲区。

ggml_scratch_load

static void ggml_scratch_load(struct ggml_context * ctx);

描述:加载临时缓冲区。

ggml_new_object

static struct ggml_object * ggml_new_object(struct ggml_context * ctx, enum ggml_object_type type, size_t size);

描述:创建新对象,始终将对象插入上下文内存池的末尾。

ggml_new_tensor_impl

static struct ggml_tensor * ggml_new_tensor_impl(
    struct ggml_context * ctx,
    enum   ggml_type      type,
    int                   n_dims,
    const int64_t       * ne,
    struct ggml_tensor  * view_src,
    size_t                view_offs);

描述:创建新的张量对象。

GGML_MAX_DIMS

类型:整数常量

描述:表示张量的最大维度数。

GGML_MAX_OP_PARAMS

类型:整数常量

描述:表示张量操作参数的最大大小。

struct ggml_tensor

描述:表示一个张量,包含张量的类型、后端、缓冲区、维度大小、块大小、操作、操作参数、是否为参数、梯度、源张量、性能统计、视图源和偏移、数据、名称、额外信息和填充。

字段 类型 描述
type enum ggml_type 张量的数据类型
backend enum ggml_backend 张量的后端类型
buffer void * 张量的缓冲区指针
ne int64_t[] 张量的维度大小数组
nb size_t[] 张量的块大小数组
op enum ggml_op 张量的操作类型
op_params void * 张量的操作参数指针
is_param bool 是否为参数张量
grad struct ggml_tensor * 梯度张量
src struct ggml_tensor *[] 源张量数组
perf_runs uint64_t 性能统计运行次数
perf_cycles uint64_t 性能统计周期数
perf_time_us uint64_t 性能统计时间(微秒)
view_src struct ggml_tensor * 视图源张量
view_offs size_t 视图偏移量
data void * 数据指针
name char[] 名称
extra void * 额外信息指针
padding size_t[] 填充数组

struct ggml_tensor * ggml_new_tensor(struct ggml_context * ctx, enum ggml_type type, int n_dims, const int64_t * ne)

{签名}

描述:创建一个新的张量,可以指定维度和类型。

参数:

  • ctx:ggml上下文指针。

  • type:张量的数据类型。

  • n_dims:张量的维度数。

  • ne:指向张量维度大小数组的指针。

返回值:新创建的张量指针。

struct ggml_tensor * ggml_new_tensor_1d(struct ggml_context * ctx, enum ggml_type type, int64_t ne0)

{签名}

描述:创建一个一维张量。

参数:

  • ctx:ggml上下文指针。

  • type:张量的数据类型。

  • ne0:一维张量的维度大小。

返回值:新创建的一维张量指针。

struct ggml_tensor * ggml_new_tensor_2d(struct ggml_context * ctx, enum ggml_type type, int64_t ne0, int64_t ne1)

{签名}

描述:创建一个二维张量。

参数:

  • ctx:ggml上下文指针。

  • type:张量的数据类型。

  • ne0:二维张量的第一个维度大小。

  • ne1:二维张量的第二个维度大小。

返回值:新创建的二维张量指针。

struct ggml_tensor * ggml_new_tensor_3d(struct ggml_context * ctx, enum ggml_type type, int64_t ne0, int64_t ne1, int64_t ne2)

{签名}

描述:创建一个三维张量。

参数:

  • ctx:ggml上下文指针。

  • type:张量的数据类型。

  • ne0:三维张量的第一个维度大小。

  • ne1:三维张量的第二个维度大小。

  • ne2:三维张量的第三个维度大小。

返回值:新创建的三维张量指针。

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)

{签名}

描述:创建一个四维张量。

参数:

  • ctx:ggml上下文指针。

  • type:张量的数据类型。

  • ne0:四维张量的第一个维度大小。

  • ne1:四维张量的第二个维度大小。

  • ne2:四维张量的第三个维度大小。

  • ne3:四维张量的第四个维度大小。

返回值:新创建的四维张量指针。

struct ggml_tensor * ggml_new_i32(struct ggml_context * ctx, int32_t value)

{签名}

描述:创建一个包含单个 int32 值的张量。

参数:

  • ctx:ggml上下文指针。

  • value:要设置的 int32 值。

返回值:新创建的包含单个 int32 值的张量指针。

struct ggml_tensor * ggml_new_f32(struct ggml_context * ctx, float value)

{签名}

描述:创建一个包含单个 float 值的张量。

参数:

  • ctx:ggml上下文指针。

  • value:要设置的 float 值。

返回值:新创建的包含单个 float 值的张量指针。

struct ggml_tensor * ggml_dup_tensor(struct ggml_context * ctx, const struct ggml_tensor * src)

{签名}

描述:复制给定张量的内容,创建一个新的张量。

参数:

  • ctx:ggml上下文指针。

  • src:要复制的源张量。

返回值:新创建的复制源张量内容的张量指针。

static void ggml_set_op_params(struct ggml_tensor * tensor, const void * params, size_t params_size)

{签名}

描述:设置张量的操作参数,包括参数指针和参数大小。

参数:

  • tensor:要设置操作参数的张量。

  • params:指向操作参数的指针。

  • params_size:操作参数的大小。

返回值:无。

static int32_t ggml_get_op_params_i32(const struct ggml_tensor * tensor, uint32_t i)

{签名}

描述:获取张量操作参数中的第i个32位整数。

参数:

  • tensor:包含操作参数的张量。

  • i:要获取的参数索引。

返回值:第i个32位整数的值。

static void ggml_set_op_params_i32(struct ggml_tensor * tensor, uint32_t i, int32_t value)

{签名}

描述:设置张量操作参数中的第i个32位整数为给定的值。

参数:

  • tensor:要设置操作参数的张量。

  • i:要设置的参数索引。

  • value:要设置的32位整数值。

返回值:无。

struct ggml_tensor * ggml_set_zero(struct ggml_tensor * tensor)

{签名}

描述:将张量的数据内容全部设置为0。

参数:

  • tensor:要设置为0的张量。

返回值:设置为0后的张量指针。

struct ggml_tensor * ggml_set_i32(struct ggml_tensor * tensor, int32_t value)

{签名}

描述:将张量的数据内容全部设置为给定的32位整数值。

参数:

  • tensor:要设置值的张量。

  • value:要设置的32位整数值。

返回值:设置值后的张量指针。

struct ggml_tensor * ggml_set_f32(struct ggml_tensor * tensor, float value)

{签名}

描述:将张量的数据内容全部设置为给定的float值。

参数:

  • tensor:要设置值的张量。

  • value:要设置的float值。

返回值:设置值后的张量指针。

void ggml_unravel_index(const struct ggml_tensor * tensor, int64_t i, int64_t * i0, int64_t * i1, int64_t * i2, int64_t * i3)

{签名}

描述:根据索引i解析出tensor的多维索引i0, i1, i2, i3。

参数:

  • tensor:要解析索引的张量。

  • i:一维索引。

  • i0, i1, i2, i3:指向多维索引的指针。

返回值:无。

int32_t ggml_get_i32_1d(const struct ggml_tensor * tensor, int i)

{签名}

描述:获取一维张量中索引i处的32位整数值。

参数:

  • tensor:要获取值的一维张量。

  • i:一维索引。

返回值:索引i处的32位整数值。

void ggml_set_i32_1d(const struct ggml_tensor * tensor, int i, int32_t value)

{签名}

描述:设置一维张量中索引i处的32位整数值。

参数:

  • tensor:要设置值的一维张量。

  • i:一维索引。

  • value:要设置的32位整数值。

返回值:无。

int32_t ggml_get_i32_nd(const struct ggml_tensor * tensor, int i0, int i1, int i2, int i3)

{签名}

描述:获取多维张量中指定索引处的32位整数值。

参数:

  • tensor:要获取值的多维张量。

  • i0, i1, i2, i3:多维索引。

返回值:指定索引处的32位整数值。

void ggml_set_i32_nd(const struct ggml_tensor * tensor, int i0, int i1, int i2, int i3, int32_t value)

{签名}

描述:设置多维张量中指定索引处的32位整数值。

参数:

  • tensor:要设置值的多维张量。

  • i0, i1, i2, i3:多维索引。

  • value:要设置的32位整数值。

返回值:无。

以上是对给定代码段中的常量、结构体和公开函数的提取和总结。

根据提供的代码段,我们可以提取以下常量、结构体和公开函数:

GGML_TYPE_I8

类型:枚举

描述:表示8位整数类型。

GGML_TYPE_I16

类型:枚举

描述:表示16位整数类型。

GGML_TYPE_I32

类型:枚举

描述:表示32位整数类型。

GGML_TYPE_F16

类型:枚举

描述:表示16位浮点数类型。

GGML_TYPE_F32

类型:枚举

描述:表示32位浮点数类型。

ggml_tensor

描述:表示一个张量对象,包含张量的数据、类型、操作、梯度、源张量等信息。

字段 类型 描述
data void* 指向张量数据的指针
type enum ggml_type 张量的数据类型
op enum ggml_op 张量的操作类型
grad struct ggml_tensor* 指向梯度张量的指针
src struct ggml_tensor* 指向源张量的指针
name char[256] 张量的名称
nb size_t[4] 张量的维度大小
ne size_t 张量的元素个数

ggml_get_f32_1d

float ggml_get_f32_1d(const struct ggml_tensor * tensor, int i)

描述:获取一维张量中指定索引的32位浮点数值。

参数:

  • tensor:指向张量的指针。

  • i:索引值。

返回值:32位浮点数值。

ggml_set_f32_1d

void ggml_set_f32_1d(const struct ggml_tensor * tensor, int i, float value)

描述:设置一维张量中指定索引的32位浮点数值。

参数:

  • tensor:指向张量的指针。

  • i:索引值。

  • value:要设置的32位浮点数值。

ggml_get_f32_nd

float ggml_get_f32_nd(const struct ggml_tensor * tensor, int i0, int i1, int i2, int i3)

描述:获取多维张量中指定索引的32位浮点数值。

参数:

  • tensor:指向张量的指针。

  • i0, i1, i2, i3:多维索引值。

返回值:32位浮点数值。

ggml_set_f32_nd

void ggml_set_f32_nd(const struct ggml_tensor * tensor, int i0, int i1, int i2, int i3, float value)

描述:设置多维张量中指定索引的32位浮点数值。

参数:

  • tensor:指向张量的指针。

  • i0, i1, i2, i3:多维索引值。

  • value:要设置的32位浮点数值。

ggml_get_data

void * ggml_get_data(const struct ggml_tensor * tensor)

描述:获取张量的数据指针。

参数:

  • tensor:指向张量的指针。

返回值:指向张量数据的指针。

ggml_get_data_f32

float * ggml_get_data_f32(const struct ggml_tensor * tensor)

描述:获取张量的32位浮点数数据指针。

参数:

  • tensor:指向张量的指针。

返回值:指向张量32位浮点数数据的指针。

ggml_get_unary_op

enum ggml_unary_op ggml_get_unary_op(const struct ggml_tensor * tensor)

描述:获取张量的一元操作类型。

参数:

  • tensor:指向张量的指针。

返回值:一元操作类型。

ggml_get_name

const char * ggml_get_name(const struct ggml_tensor * tensor)

描述:获取张量的名称。

参数:

  • tensor:指向张量的指针。

返回值:张量的名称。

ggml_set_name

struct ggml_tensor * ggml_set_name(struct ggml_tensor * tensor, const char * name)

描述:设置张量的名称。

参数:

  • tensor:指向张量的指针。

  • name:新的名称。

返回值:指向张量的指针。

ggml_format_name

struct ggml_tensor * ggml_format_name(struct ggml_tensor * tensor, const char * fmt, ...)

描述:格式化张量的名称。

参数:

  • tensor:指向张量的指针。

  • fmt:格式化字符串。

  • ...:可变参数列表。

返回值:指向张量的指针。

ggml_view_tensor

struct ggml_tensor * ggml_view_tensor(struct ggml_context * ctx, struct ggml_tensor  * src)

描述:创建一个张量的视图。

参数:

  • ctx:上下文指针。

  • src:源张量指针。

返回值:指向新视图张量的指针。

ggml_get_first_tensor

struct ggml_tensor * ggml_get_first_tensor(const struct ggml_context * ctx)

描述:获取上下文中的第一个张量对象。

参数:

  • ctx:上下文指针。

返回值:指向第一个张量对象的指针。

ggml_get_next_tensor

struct ggml_tensor * ggml_get_next_tensor(const struct ggml_context * ctx, struct ggml_tensor * tensor)

描述:获取上下文中下一个张量对象。

参数:

  • ctx:上下文指针。

  • tensor:当前张量指针。

返回值:指向下一个张量对象的指针。

ggml_get_tensor

struct ggml_tensor * ggml_get_tensor(struct ggml_context * ctx, const char * name)

描述:根据名称获取张量对象。

参数:

  • ctx:上下文指针。

  • name:张量名称。

返回值:指向指定名称的张量对象的指针。

ggml_dup

struct ggml_tensor * ggml_dup(struct ggml_context * ctx, struct ggml_tensor * a)

描述:复制给定的张量a,返回一个新的张量。

参数:

  • ctx:上下文指针。

  • a:要复制的张量指针。

返回值:指向新复制的张量的指针。

ggml_dup_inplace

struct ggml_tensor * ggml_dup_inplace(struct ggml_context * ctx, struct ggml_tensor * a)

描述:在给定的上下文中,复制给定的张量a,如果inplace为true,则在原张量上进行复制。

参数:

  • ctx:上下文指针。

  • a:要复制的张量指针。

返回值:指向新复制的张量的指针。

ggml_add

struct ggml_tensor * ggml_add(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b)

描述:在给定的上下文中,对给定的张量a和b进行相加操作,返回一个新的张量。

参数:

  • ctx:上下文指针。

  • a:第一个张量指针。

  • b:第二个张量指针。

返回值:指向相加结果张量的指针。

ggml_add_inplace

struct ggml_tensor * ggml_add_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b)

描述:在给定的上下文中,对给定的张量a和b进行相加操作,如果inplace为true,则在原张量上进行操作。

参数:

  • ctx:上下文指针。

  • a:第一个张量指针。

  • b:第二个张量指针。

返回值:指向相加结果张量的指针。

ggml_add_cast

struct ggml_tensor * ggml_add_cast(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, enum   ggml_type     type)

描述:在给定的上下文中,对给定的张量a和b进行相加操作并进行类型转换。

参数:

  • ctx:上下文指针。

  • a:第一个张量指针。

  • b:第二个张量指针。

  • type:目标类型。

返回值:指向相加并转换类型后的张量的指针。

ggml_add1

struct ggml_tensor * ggml_add1(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b)

描述:实现张量相加的功能,其中b是标量。

参数:

  • ctx:上下文指针。

  • a:第一个张量指针。

  • b:第二个张量指针(标量)。

返回值:指向相加结果张量的指针。

ggml_add1_inplace

struct ggml_tensor * ggml_add1_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b)

描述:实现张量相加并就地修改的功能,其中b是标量。

参数:

  • ctx:上下文指针。

  • a:第一个张量指针。

  • b:第二个张量指针(标量)。

返回值:指向相加结果张量的指针。

ggml_acc_impl

static struct ggml_tensor * ggml_acc_impl(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, size_t               nb1, size_t               nb2, size_t               nb3, size_t               offset, bool inplace)

描述:实现张量累积操作的函数。

参数:

  • ctx:上下文指针。

  • a:第一个张量指针。

  • b:第二个张量指针。

  • nb1, nb2, nb3:维度大小。

  • offset:偏移量。

  • inplace:是否就地操作。

返回值:指向累积结果张量的指针。

请注意,由于代码中包含了一些静态函数和实现细节,这些函数可能不是公开API的一部分,而是用于内部实现。在实际使用时,应参考库的文档或API规范来确定哪些函数是公开可用的。

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_tensor

描述:表示一个张量的结构体

字段 类型 描述
op 枚举值 操作类型
grad ggml_tensor* 梯度张量
src ggml_tensor* 源张量
type 枚举值 张量类型
ne int64_t[] 张量维度大小

ggml_acc

 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) 

描述:计算两个张量的加法

参数:

  • ctx:ggml_context 结构体指针

  • a:第一个张量

  • b:第二个张量

  • nb1, nb2, nb3, offset:操作参数

返回值:结果张量

ggml_acc_inplace

 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) 

描述:计算两个张量的原地加法

参数:

  • ctx:ggml_context 结构体指针

  • a:第一个张量

  • b:第二个张量

  • nb1, nb2, nb3, offset:操作参数

返回值:结果张量

ggml_sub

 struct ggml_tensor * ggml_sub(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:计算两个张量的减法

参数:

  • ctx:ggml_context 结构体指针

  • a:第一个张量

  • b:第二个张量

返回值:结果张量

ggml_sub_inplace

 struct ggml_tensor * ggml_sub_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:计算两个张量的原地减法

参数:

  • ctx:ggml_context 结构体指针

  • a:第一个张量

  • b:第二个张量

返回值:结果张量

ggml_mul

 struct ggml_tensor * ggml_mul(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:计算两个张量的乘法

参数:

  • ctx:ggml_context 结构体指针

  • a:第一个张量

  • b:第二个张量

返回值:结果张量

ggml_mul_inplace

 struct ggml_tensor * ggml_mul_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:计算两个张量的原地乘法

参数:

  • ctx:ggml_context 结构体指针

  • a:第一个张量

  • b:第二个张量

返回值:结果张量

ggml_div

 struct ggml_tensor * ggml_div(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:计算两个张量的除法

参数:

  • ctx:ggml_context 结构体指针

  • a:第一个张量

  • b:第二个张量

返回值:结果张量

ggml_div_inplace

 struct ggml_tensor * ggml_div_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:计算两个张量的原地除法

参数:

  • ctx:ggml_context 结构体指针

  • a:第一个张量

  • b:第二个张量

返回值:结果张量

ggml_sqr

 struct ggml_tensor * ggml_sqr(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的平方

参数:

  • ctx:ggml_context 结构体指针

  • a:输入张量

返回值:结果张量

ggml_sqr_inplace

 struct ggml_tensor * ggml_sqr_inplace(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的原地平方

参数:

  • ctx:ggml_context 结构体指针

  • a:输入张量

返回值:结果张量

ggml_sqrt

 struct ggml_tensor * ggml_sqrt(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的开方

参数:

  • ctx:ggml_context 结构体指针

  • a:输入张量

返回值:结果张量

ggml_sqrt_inplace

 struct ggml_tensor * ggml_sqrt_inplace(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的原地开方

参数:

  • ctx:ggml_context 结构体指针

  • a:输入张量

返回值:结果张量

ggml_log

 struct ggml_tensor * ggml_log(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的对数

参数:

  • ctx:ggml_context 结构体指针

  • a:输入张量

返回值:结果张量

ggml_log_inplace

 struct ggml_tensor * ggml_log_inplace(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的原地对数

参数:

  • ctx:ggml_context 结构体指针

  • a:输入张量

返回值:结果张量

ggml_sum

 struct ggml_tensor * ggml_sum(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的求和

参数:

  • ctx:ggml_context 结构体指针

  • a:输入张量

返回值:结果张量

ggml_sum_rows

 struct ggml_tensor * ggml_sum_rows(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的行求和

参数:

  • ctx:ggml_context 结构体指针

  • a:输入张量

返回值:结果张量

ggml_mean

 struct ggml_tensor * ggml_mean(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的平均值

参数:

  • ctx:ggml_context 结构体指针

  • a:输入张量

返回值:结果张量

ggml_argmax

 struct ggml_tensor * ggml_argmax(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的最大值索引

参数:

  • ctx:ggml_context 结构体指针

  • a:输入张量

返回值:结果张量

ggml_repeat

 struct ggml_tensor * ggml_repeat(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:将张量沿着指定维度重复

参数:

  • ctx:ggml_context 结构体指针

  • a:输入张量

  • b:重复次数张量

返回值:结果张量

ggml_repeat_back

 struct ggml_tensor * ggml_repeat_back(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:重复反向传播函数,用于计算梯度

参数:

  • ctx:ggml_context 结构体指针

  • a:输入张量

  • b:重复次数张量

返回值:结果张量

ggml_concat

 struct ggml_tensor * ggml_concat(struct ggml_context* ctx, 

描述:将两个张量在指定维度上连接

参数:

  • ctx:ggml_context 结构体指针

  • 待补充...

返回值:结果张量

请注意,上述函数列表中,ggml_concat函数的描述不完整,因为代码片段在此处被截断。如果需要完整描述,请提供完整的代码片段。

无显式定义的常量。

无显式定义的结构体。

ggml_concat

struct ggml_tensor * ggml_concat(
        struct ggml_context * ctx,
        struct ggml_tensor * a,
        struct ggml_tensor * b)

描述:将两个张量在指定维度上连接起来。

参数:

  • ctx:上下文指针。

  • a:第一个输入张量。

  • b:第二个输入张量。

返回值:连接后的新张量。

ggml_abs

struct ggml_tensor * ggml_abs(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:计算张量的绝对值。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:绝对值后的新张量。

ggml_abs_inplace

struct ggml_tensor * ggml_abs_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:计算张量的绝对值并覆盖原张量。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:原位操作后的张量。

ggml_sgn

struct ggml_tensor * ggml_sgn(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:计算张量的符号。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:符号后的新张量。

ggml_sgn_inplace

struct ggml_tensor * ggml_sgn_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:计算张量的符号并覆盖原张量。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:原位操作后的张量。

ggml_neg

struct ggml_tensor * ggml_neg(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:计算张量的相反数。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:相反数后的新张量。

ggml_neg_inplace

struct ggml_tensor * ggml_neg_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:计算张量的相反数并覆盖原张量。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:原位操作后的张量。

ggml_step

struct ggml_tensor * ggml_step(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行步函数操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:步函数操作后的新张量。

ggml_step_inplace

struct ggml_tensor * ggml_step_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行原位步函数操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:原位操作后的张量。

ggml_tanh

struct ggml_tensor * ggml_tanh(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行双曲正切操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:双曲正切操作后的新张量。

ggml_tanh_inplace

struct ggml_tensor * ggml_tanh_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行原位双曲正切操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:原位操作后的张量。

ggml_elu

struct ggml_tensor * ggml_elu(
    struct ggml_context * ctx,
    struct ggml_tensor  * a)

描述:对输入的张量进行ELU激活函数操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:ELU激活函数操作后的新张量。

ggml_elu_inplace

struct ggml_tensor * ggml_elu_inplace(
    struct ggml_context * ctx,
    struct ggml_tensor  * a)

描述:对输入的张量进行原位ELU激活函数操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:原位操作后的张量。

ggml_relu

struct ggml_tensor * ggml_relu(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行ReLU激活函数操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:ReLU激活函数操作后的新张量。

ggml_relu_inplace

struct ggml_tensor * ggml_relu_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行原位ReLU激活函数操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:原位操作后的张量。

ggml_leaky_relu

struct ggml_tensor * ggml_leaky_relu(
        struct ggml_context * ctx,
        struct ggml_tensor  * a, float negative_slope, bool inplace)

描述:对输入的张量进行Leaky ReLU激活函数操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • negative_slope:负斜率。

  • inplace:是否进行原位操作。

返回值:Leaky ReLU激活函数操作后的新张量。

ggml_gelu

struct ggml_tensor * ggml_gelu(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行GELU激活函数操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:GELU激活函数操作后的新张量。

ggml_gelu_inplace

struct ggml_tensor * ggml_gelu_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行原位GELU激活函数操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:原位操作后的张量。

ggml_gelu_quick

struct ggml_tensor * ggml_gelu_quick(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行快速GELU激活函数操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:快速GELU激活函数操作后的新张量。

ggml_gelu_quick_inplace

struct ggml_tensor * ggml_gelu_quick_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行原位快速GELU激活函数操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:原位操作后的张量。

ggml_silu

struct ggml_tensor * ggml_silu(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行SiLU激活函数操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:SiLU激活函数操作后的新张量。

ggml_silu_inplace

struct ggml_tensor * ggml_silu_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行原位SiLU激活函数操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

返回值:原位操作后的张量。

ggml_silu_back

struct ggml_tensor * ggml_silu_back(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b)

描述:对输入的张量进行SiLU反向传播操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • b:输出张量。

返回值:SiLU反向传播操作后的新张量。

ggml_norm

struct ggml_tensor * ggml_norm(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        float eps)

描述:计算给定张量的范数。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • eps:用于归一化的epsilon值。

返回值:范数计算后的新张量。

ggml_norm_inplace

struct ggml_tensor * ggml_norm_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        float eps)

描述:计算给定张量的范数并将结果存储在原始张量中。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • eps:用于归一化的epsilon值。

返回值:原位范数计算后的张量。

ggml_rms_norm

struct ggml_tensor * ggml_rms_norm(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        float  eps)

描述:计算给定张量的RMS范数。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • eps:用于归一化的epsilon值。

返回值:RMS范数计算后的新张量。

ggml_rms_norm_inplace

struct ggml_tensor * ggml_rms_norm_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        float eps)

描述:计算给定张量的RMS范数并将结果存储在原始张量中。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • eps:用于归一化的epsilon值。

返回值:原位RMS范数计算后的张量。

ggml_rms_norm_back

struct ggml_tensor * ggml_rms_norm_back(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b,
        float  eps)

描述:计算给定张量的RMS范数的反向传播。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • b:输出张量。

  • eps:用于归一化的epsilon值。

返回值:RMS范数反向传播后的新张量。

ggml_group_norm

struct ggml_tensor * ggml_group_norm(
    struct ggml_context * ctx,
    struct ggml_tensor * a,
    int n_groups)

描述:对输入张量进行分组归一化处理。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • n_groups:分组数量。

返回值:分组归一化后的新张量。

ggml_group_norm_inplace

struct ggml_tensor * ggml_group_norm_inplace(
    struct ggml_context * ctx,
    struct ggml_tensor * a,
    int n_groups)

描述:对输入张量进行原地分组归一化处理。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • n_groups:分组数量。

返回值:原地分组归一化后的张量。

ggml_mul_mat

struct ggml_tensor * ggml_mul_mat(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b)

描述:对两个张量进行矩阵乘法运算。

参数:

  • ctx:上下文指针。

  • a:第一个输入张量。

  • b:第二个输入张量。

返回值:矩阵乘法运算后的新张量。

ggml_mul_mat_set_prec

void ggml_mul_mat_set_prec(
        struct ggml_tensor * a,
        enum ggml_prec       prec)

描述:设置矩阵乘法张量的精度。

参数:

  • a:输入张量。

  • prec:精度类型。

返回值:无返回值。

ggml_mul_mat_id

struct ggml_tensor * ggml_mul_mat_id(
        struct ggml_context * ctx,
        struct ggml_tensor  * const as[],
        int                   n_as,
        struct ggml_tensor  * ids,
        int                   id,
        struct ggml_tensor  * b)

描述:对多个输入张量和一个标识张量进行矩阵乘法运算。

参数:

  • ctx:上下文指针。

  • as:输入张量数组。

  • n_as:输入张量数量。

  • ids:标识张量。

  • id:标识值。

  • b:第二个输入张量。

返回值:矩阵乘法运算后的新张量。

ggml_out_prod

struct ggml_tensor * ggml_out_prod(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b)

描述:计算两个张量的外积。

参数:

  • ctx:上下文指针。

  • a:第一个输入张量。

  • b:第二个输入张量。

返回值:外积运算后的新张量。

GGML_TYPE_F32

类型:枚举

描述:表示数据类型为32位浮点数。

GGML_OP_OUT_PROD

类型:枚举

描述:表示操作类型为外积。

GGML_OP_SCALE

类型:枚举

描述:表示操作类型为标量乘法。

GGML_OP_SET

类型:枚举

描述:表示操作类型为设置张量的值。

GGML_OP_CPY

类型:枚举

描述:表示操作类型为复制。

GGML_OP_CONT

类型:枚举

描述:表示操作类型为创建连续张量。

GGML_OP_RESHAPE

类型:枚举

描述:表示操作类型为重新塑形张量。

ggml_tensor

描述:表示一个张量结构体。

字段 类型 描述
op 枚举 操作类型
grad ggml_tensor* 梯度张量
src ggml_tensor* 源张量
type 枚举 数据类型
ne int64_t[] 张量的维度大小
name char* 张量的名称

ggml_new_tensor

struct ggml_tensor * ggml_new_tensor(struct ggml_context * ctx, enum ggml_type type, int ndims, const int64_t ne[]);

描述:创建一个新的张量。

参数:

  • ctx:ggml上下文。

  • type:张量的数据类型。

  • ndims:张量的维度数。

  • ne:张量的维度大小数组。

返回值:新创建的张量。

ggml_scale_impl

static struct ggml_tensor * ggml_scale_impl(struct ggml_context * ctx, struct ggml_tensor * a, float s, bool inplace);

描述:对张量进行标量乘法的实现函数。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

  • s:标量值。

  • inplace:是否原地操作。

返回值:结果张量。

ggml_scale

struct ggml_tensor * ggml_scale(struct ggml_context * ctx, struct ggml_tensor * a, float s);

描述:对张量进行标量乘法,返回新的张量。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

  • s:标量值。

返回值:新的张量。

ggml_scale_inplace

struct ggml_tensor * ggml_scale_inplace(struct ggml_context * ctx, struct ggml_tensor * a, float s);

描述:对张量进行标量乘法,原地操作。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

  • s:标量值。

返回值:修改后的张量。

ggml_set_impl

static struct ggml_tensor * ggml_set_impl(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, size_t nb1, size_t nb2, size_t nb3, size_t offset, bool inplace);

描述:设置两个张量的值的实现函数。

参数:

  • ctx:ggml上下文。

  • a:目标张量。

  • b:源张量。

  • nb1, nb2, nb3:大小信息。

  • offset:偏移量。

  • inplace:是否原地操作。

返回值:结果张量。

ggml_set

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);

描述:设置两个张量的值(不进行原地操作)。

参数:

  • ctx:ggml上下文。

  • a:目标张量。

  • b:源张量。

  • nb1, nb2, nb3:大小信息。

  • offset:偏移量。

返回值:结果张量。

ggml_set_inplace

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);

描述:设置两个张量的值(进行原地操作)。

参数:

  • ctx:ggml上下文。

  • a:目标张量。

  • b:源张量。

  • nb1, nb2, nb3:大小信息。

  • offset:偏移量。

返回值:结果张量。

ggml_cpy_impl

static struct ggml_tensor * ggml_cpy_impl(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, bool inplace);

描述:复制张量b的数据到张量a中的实现函数。

参数:

  • ctx:ggml上下文。

  • a:目标张量。

  • b:源张量。

  • inplace:是否原地操作。

返回值:结果张量。

ggml_cpy

struct ggml_tensor * ggml_cpy(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b);

描述:复制张量b的数据到张量a中,返回新的张量。

参数:

  • ctx:ggml上下文。

  • a:目标张量。

  • b:源张量。

返回值:新的张量。

ggml_cpy_inplace

struct ggml_tensor * ggml_cpy_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b);

描述:在原地将张量b的数据复制到张量a中,返回修改后的张量a。

参数:

  • ctx:ggml上下文。

  • a:目标张量。

  • b:源张量。

返回值:修改后的张量a。

ggml_cont_impl

static struct ggml_tensor * ggml_cont_impl(struct ggml_context * ctx, struct ggml_tensor * a, bool inplace);

描述:创建一个连续的张量的实现函数。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

  • inplace:是否原地操作。

返回值:结果张量。

ggml_cont

struct ggml_tensor * ggml_cont(struct ggml_context * ctx, struct ggml_tensor * a);

描述:创建一个连续的张量。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

返回值:新的张量。

ggml_cont_inplace

struct ggml_tensor * ggml_cont_inplace(struct ggml_context * ctx, struct ggml_tensor * a);

描述:在原地操作的情况下创建一个连续的张量。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

返回值:修改后的张量。

ggml_cont_1d

struct ggml_tensor * ggml_cont_1d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0);

描述:创建一个一维连续的张量。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

  • ne0:一维大小。

返回值:新的张量。

ggml_cont_2d

struct ggml_tensor * ggml_cont_2d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1);

描述:创建一个二维连续的张量。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

  • ne0, ne1:二维大小。

返回值:新的张量。

ggml_cont_3d

struct ggml_tensor * ggml_cont_3d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1, int64_t ne2);

描述:创建一个三维连续的张量。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

  • ne0, ne1, ne2:三维大小。

返回值:新的张量。

ggml_cont_4d

struct ggml_tensor * ggml_cont_4d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1, int64_t ne2, int64_t ne3);

描述:创建一个四维连续的张量。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

  • ne0, ne1, ne2, ne3:四维大小。

返回值:新的张量。

ggml_reshape

struct ggml_tensor * ggml_reshape(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b);

描述:重新塑形张量。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

  • b:目标形状张量。

返回值:重塑后的张量。

ggml_reshape_1d

struct ggml_tensor * ggml_reshape_1d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0);

描述:一维张量的重新塑形。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

  • ne0:一维大小。

返回值:重塑后的张量。

ggml_reshape_2d

struct ggml_tensor * ggml_reshape_2d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1);

描述:二维张量的重新塑形。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

  • ne0, ne1:二维大小。

返回值:重塑后的张量。

ggml_reshape_3d

struct ggml_tensor * ggml_reshape_3d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1, int64_t ne2);

描述:三维张量的重新塑形。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

  • ne0, ne1, ne2:三维大小。

返回值:重塑后的张量。

ggml_reshape_4d

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);

描述:四维张量的重新塑形。

参数:

  • ctx:ggml上下文。

  • a:输入张量。

  • ne0, ne1, ne2, ne3:四维大小。

返回值:重塑后的张量。

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

类型:枚举值

描述:表示softmax操作的枚举值。

ggml_tensor

描述:表示张量的结构体。

字段 类型 描述
op 枚举值 操作类型
grad ggml_tensor* 梯度张量
src ggml_tensor* 源张量
type 枚举值 张量类型
ne int64_t[] 维度大小数组
nb size_t[] 维度步长数组
name char* 张量名称

ggml_format_name

void ggml_format_name(struct ggml_tensor * tensor, const char * format, ...);

描述:格式化张量的名称。

参数:

  • tensor:张量指针

  • format:格式化字符串

ggml_new_tensor_impl

struct ggml_tensor * ggml_new_tensor_impl(struct ggml_context * ctx, enum ggml_type type, int n_dims, const int64_t * ne, struct ggml_tensor * src, size_t offset);

描述:创建一个新的张量。

参数:

  • ctx:上下文指针

  • type:张量类型

  • n_dims:维度数量

  • ne:维度大小数组

  • src:源张量指针

  • offset:偏移量

返回值:新创建的张量指针

ggml_set_op_params

void ggml_set_op_params(struct ggml_tensor * tensor, void * params, size_t size);

描述:设置张量的操作参数。

参数:

  • tensor:张量指针

  • params:参数指针

  • size:参数大小

ggml_dup_tensor

struct ggml_tensor * ggml_dup_tensor(struct ggml_context * ctx, struct ggml_tensor * tensor);

描述:复制一个张量。

参数:

  • ctx:上下文指针

  • tensor:源张量指针

返回值:复制后的张量指针

ggml_view_impl

struct ggml_tensor * ggml_view_impl(struct ggml_context * ctx, struct ggml_tensor * a, int n_dims, const int64_t * ne, size_t offset);

描述:实现视图操作的内部函数。

参数:

  • ctx:上下文指针

  • a:输入张量指针

  • n_dims:维度数量

  • ne:维度大小数组

  • offset:偏移量

返回值:视图操作的结果张量指针

ggml_view_1d

struct ggml_tensor * ggml_view_1d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, size_t offset);

描述:创建一个一维视图的张量。

参数:

  • ctx:上下文指针

  • a:输入张量指针

  • ne0:第一个维度的大小

  • offset:偏移量

返回值:创建的一维视图张量指针

ggml_view_2d

struct ggml_tensor * ggml_view_2d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1, size_t nb1, size_t offset);

描述:创建一个二维视图的张量。

参数:

  • ctx:上下文指针

  • a:输入张量指针

  • ne0:第一个维度的大小

  • ne1:第二个维度的大小

  • nb1:第二个维度的步长

  • offset:偏移量

返回值:创建的二维视图张量指针

ggml_view_3d

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, size_t nb2, size_t offset);

描述:创建一个三维视图的张量。

参数:

  • ctx:上下文指针

  • a:输入张量指针

  • ne0:第一个维度的大小

  • ne1:第二个维度的大小

  • ne2:第三个维度的大小

  • nb1:第二个维度的步长

  • nb2:第三个维度的步长

  • offset:偏移量

返回值:创建的三维视图张量指针

ggml_view_4d

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, size_t nb2, size_t nb3, size_t offset);

描述:创建一个四维视图的张量。

参数:

  • ctx:上下文指针

  • a:输入张量指针

  • ne0:第一个维度的大小

  • ne1:第二个维度的大小

  • ne2:第三个维度的大小

  • ne3:第四个维度的大小

  • nb1:第二维度的步长

  • nb2:第三维度的步长

  • nb3:第四维度的步长

  • offset:偏移量

返回值:创建的四维视图张量指针

ggml_permute

struct ggml_tensor * ggml_permute(struct ggml_context * ctx, struct ggml_tensor * a, int axis0, int axis1, int axis2, int axis3);

描述:对张量进行排列操作。

参数:

  • ctx:上下文指针

  • a:输入张量指针

  • axis0:第一个轴

  • axis1:第二个轴

  • axis2:第三个轴

  • axis3:第四个轴

返回值:排列操作的结果张量指针

ggml_transpose

struct ggml_tensor * ggml_transpose(struct ggml_context * ctx, struct ggml_tensor * a);

描述:对张量进行转置操作。

参数:

  • ctx:上下文指针

  • a:输入张量指针

返回值:转置操作的结果张量指针

ggml_get_rows

struct ggml_tensor * ggml_get_rows(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b);

描述:从两个张量中获取行数据,返回一个新的张量。

参数:

  • ctx:上下文指针

  • a:第一个张量指针

  • b:第二个张量指针

返回值:获取行数据的结果张量指针

ggml_get_rows_back

struct ggml_tensor * ggml_get_rows_back(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, struct ggml_tensor * c);

描述:从三个张量中获取行数据的反向操作,返回一个新的张量。

参数:

  • ctx:上下文指针

  • a:第一个张量指针

  • b:第二个张量指针

  • c:第三个张量指针

返回值:获取行数据反向操作的结果张量指针

ggml_diag

struct ggml_tensor * ggml_diag(struct ggml_context * ctx, struct ggml_tensor * a);

描述:创建一个对角张量。

参数:

  • ctx:上下文指针

  • a:输入张量指针

返回值:对角张量指针

ggml_diag_mask_inf_impl

static struct ggml_tensor * ggml_diag_mask_inf_impl(struct ggml_context * ctx, struct ggml_tensor * a, int n_past, bool inplace);

描述:实现对输入张量进行对角线以下部分的掩码操作,将其设置为负无穷的内部函数。

参数:

  • ctx:上下文指针

  • a:输入张量指针

  • n_past:过去的时间步数

  • inplace:是否在原张量上进行操作

返回值:掩码操作的结果张量指针

ggml_diag_mask_inf

struct ggml_tensor * ggml_diag_mask_inf(struct ggml_context * ctx, struct ggml_tensor * a, int n_past);

描述:对输入张量进行对角线以下部分的掩码操作,将其设置为负无穷。

参数:

  • ctx:上下文指针

  • a:输入张量指针

  • n_past:过去的时间步数

返回值:掩码操作的结果张量指针

ggml_diag_mask_inf_inplace

struct ggml_tensor * ggml_diag_mask_inf_inplace(struct ggml_context * ctx, struct ggml_tensor * a, int n_past);

描述:对输入张量进行对角线以下部分的掩码操作,将其设置为负无穷,同时在原张量上进行操作。

参数:

  • ctx:上下文指针

  • a:输入张量指针

  • n_past:过去的时间步数

返回值:掩码操作的结果张量指针

ggml_diag_mask_zero_impl

static struct ggml_tensor * ggml_diag_mask_zero_impl(struct ggml_context * ctx, struct ggml_tensor * a, int n_past, bool inplace);

描述:实现对输入张量进行对角线以下部分的掩码操作,将其设置为零的内部函数。

参数:

  • ctx:上下文指针

  • a:输入张量指针

  • n_past:过去的时间步数

  • inplace:是否在原张量上进行操作

返回值:掩码操作的结果张量指针

ggml_diag_mask_zero

struct ggml_tensor * ggml_diag_mask_zero(struct ggml_context * ctx, struct ggml_tensor * a, int n_past);

描述:对输入张量进行对角线以下部分的掩码操作,将其设置为零。

参数:

  • ctx:上下文指针

  • a:输入张量指针

  • n_past:过去的时间步数

返回值:掩码操作的结果张量指针

ggml_diag_mask_zero_inplace

struct ggml_tensor * ggml_diag_mask_zero_inplace(struct ggml_context * ctx, struct ggml_tensor * a, int n_past);

描述:对输入张量进行对角线以下部分的掩码操作,将其设置为零,同时在原张量上进行操作。

参数:

  • ctx:上下文指针

  • a:输入张量指针

  • n_past:过去的时间步数

返回值:掩码操作的结果张量指针

ggml_soft_max_impl

static struct ggml_tensor * ggml_soft_max_impl(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * mask, float scale, bool inplace);

描述:实现 softmax 操作的内部函数。

参数:

  • ctx:上下文指针

  • a:输入张量指针

  • mask:掩码张量指针

  • scale:缩放因子

  • inplace:是否在原张量上进行操作

返回值:softmax 操作的结果张量指针

GGML_OP_SOFT_MAX

类型:枚举值

描述:表示softmax操作的枚举值。

GGML_OP_SOFT_MAX_BACK

类型:枚举值

描述:表示softmax反向传播操作的枚举值。

GGML_OP_ROPE

类型:枚举值

描述:表示rope操作的枚举值。

GGML_OP_ROPE_BACK

类型:枚举值

描述:表示rope反向传播操作的枚举值。

GGML_OP_ALIBI

类型:枚举值

描述:表示alibi操作的枚举值。

GGML_OP_CLAMP

类型:枚举值

描述:表示clamp操作的枚举值。

GGML_OP_CONV_TRANSPOSE_1D

类型:枚举值

描述:表示一维卷积转置操作的枚举值。

GGML_OP_IM2COL

类型:枚举值

描述:表示im2col操作的枚举值。

ggml_tensor

描述:表示张量的结构体,包含张量的操作类型、梯度信息、源张量等。

字段 类型 描述
op 枚举值 张量的操作类型
grad ggml_tensor* 张量的梯度信息
src ggml_tensor** 源张量

ggml_soft_max

struct ggml_tensor * ggml_soft_max(struct ggml_context * ctx, struct ggml_tensor  * a);

描述:对给定的张量进行softmax操作。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

返回值:处理后的张量指针。

ggml_soft_max_inplace

struct ggml_tensor * ggml_soft_max_inplace(struct ggml_context * ctx, struct ggml_tensor  * a);

描述:对给定的张量进行原地softmax操作。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

返回值:处理后的张量指针。

ggml_soft_max_ext

struct ggml_tensor * ggml_soft_max_ext(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * mask, float scale);

描述:对给定的张量进行扩展的softmax操作。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • mask:掩码张量指针。

  • scale:缩放因子。

返回值:处理后的张量指针。

ggml_soft_max_back

struct ggml_tensor * ggml_soft_max_back(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b);

描述:实现softmax反向传播的函数。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • b:输入张量指针。

返回值:处理后的张量指针。

ggml_soft_max_back_inplace

struct ggml_tensor * ggml_soft_max_back_inplace(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b);

描述:实现softmax反向传播的原地操作。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • b:输入张量指针。

返回值:处理后的张量指针。

ggml_rope

struct ggml_tensor * ggml_rope(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int n_dims, int mode, int n_ctx);

描述:对给定的张量进行rope操作。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • b:输入张量指针。

  • n_dims:张量维度。

  • mode:模式。

  • n_ctx:上下文数量。

返回值:处理后的张量指针。

ggml_rope_inplace

struct ggml_tensor * ggml_rope_inplace(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int n_dims, int mode, int n_ctx);

描述:对给定的张量进行原地rope操作。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • b:输入张量指针。

  • n_dims:张量维度。

  • mode:模式。

  • n_ctx:上下文数量。

返回值:处理后的张量指针。

ggml_rope_custom

struct ggml_tensor * ggml_rope_custom(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int n_dims, int mode, int n_ctx, int n_orig_ctx, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow);

描述:对给定的张量进行自定义rope操作。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • b:输入张量指针。

  • n_dims:张量维度。

  • mode:模式。

  • n_ctx:上下文数量。

  • n_orig_ctx:原始上下文数量。

  • freq_base:频率基数。

  • freq_scale:频率比例。

  • ext_factor:扩展因子。

  • attn_factor:注意力因子。

  • beta_fast:快速beta。

  • beta_slow:慢速beta。

返回值:处理后的张量指针。

ggml_rope_custom_inplace

struct ggml_tensor * ggml_rope_custom_inplace(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int n_dims, int mode, int n_ctx, int n_orig_ctx, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow);

描述:对给定的张量进行原地自定义rope操作。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • b:输入张量指针。

  • n_dims:张量维度。

  • mode:模式。

  • n_ctx:上下文数量。

  • n_orig_ctx:原始上下文数量。

  • freq_base:频率基数。

  • freq_scale:频率比例。

  • ext_factor:扩展因子。

  • attn_factor:注意力因子。

  • beta_fast:快速beta。

  • beta_slow:慢速beta。

返回值:处理后的张量指针。

ggml_rope_xpos_inplace

struct ggml_tensor * ggml_rope_xpos_inplace(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int n_dims, float base, bool down);

描述:对给定的张量进行原地xpos操作。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • b:输入张量指针。

  • n_dims:张量维度。

  • base:基数。

  • down:是否向下。

返回值:处理后的张量指针。

ggml_rope_back

struct ggml_tensor * ggml_rope_back(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int n_dims, int mode, int n_ctx, int n_orig_ctx, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow, float xpos_base, bool xpos_down);

描述:实现rope反向传播的函数。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • b:输入张量指针。

  • n_dims:张量维度。

  • mode:模式。

  • n_ctx:上下文数量。

  • n_orig_ctx:原始上下文数量。

  • freq_base:频率基数。

  • freq_scale:频率比例。

  • ext_factor:扩展因子。

  • attn_factor:注意力因子。

  • beta_fast:快速beta。

  • beta_slow:慢速beta。

  • xpos_base:xpos基数。

  • xpos_down:xpos是否向下。

返回值:处理后的张量指针。

ggml_alibi

struct ggml_tensor * ggml_alibi(struct ggml_context * ctx, struct ggml_tensor  * a, int n_past, int n_head, float bias_max);

描述:实现alibi操作的函数。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • n_past:过去的时间步数。

  • n_head:头数。

  • bias_max:最大偏置。

返回值:处理后的张量指针。

ggml_clamp

struct ggml_tensor * ggml_clamp(struct ggml_context * ctx, struct ggml_tensor  * a, float min, float max);

描述:实现clamp操作的函数。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • min:最小值。

  • max:最大值。

返回值:处理后的张量指针。

ggml_conv_1d

struct ggml_tensor * ggml_conv_1d(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int s0, int p0, int d0);

描述:实现一维卷积操作的函数。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • b:卷积核张量指针。

  • s0:步长。

  • p0:填充。

  • d0:膨胀。

返回值:处理后的张量指针。

ggml_conv_1d_ph

struct ggml_tensor * ggml_conv_1d_ph(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int s, int d);

描述:实现一维卷积操作的函数,带有填充和膨胀参数。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • b:卷积核张量指针。

  • s:步长。

  • d:膨胀。

返回值:处理后的张量指针。

ggml_conv_transpose_1d

struct ggml_tensor * ggml_conv_transpose_1d(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int s0, int p0, int d0);

描述:实现一维卷积转置操作的函数。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • b:卷积核张量指针。

  • s0:步长。

  • p0:填充。

  • d0:膨胀。

返回值:处理后的张量指针。

ggml_conv_2d

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);

描述:实现二维卷积操作的函数。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • b:卷积核张量指针。

  • s0:步长。

  • s1:步长。

  • p0:填充。

  • p1:填充。

返回值:处理后的张量指针。

ggml_im2col

struct ggml_tensor * ggml_im2col(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int s0, int s1, int p0, int p1, int d0, int d1, bool is_2D);

描述:实现im2col操作的函数。

参数:

  • ctx:上下文结构体指针。

  • a:输入张量指针。

  • b:卷积核张量指针。

  • s0:步长。

  • s1:步长。

  • p0:填充。

  • p1:填充。

  • d0:膨胀。

  • d1:膨胀。

  • is_2D:是否为二维数据。

返回值:处理后的张量指针。

以上是对给定代码段中的常量、结构体、公开函数的提取和总结。

ggml_conv_2d

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);

描述: 实现二维卷积操作。

参数:

  • ctx: 上下文指针。

  • a: 输入张量。

  • b: 卷积核张量。

  • s0, s1: 步长。

  • p0, p1: 填充。

  • d0, d1: 膨胀。

返回值: 卷积结果张量。

ggml_conv_2d_sk_p0

struct ggml_tensor * ggml_conv_2d_sk_p0(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b);

描述: 实现带有默认填充的二维卷积操作。

参数:

  • ctx: 上下文指针。

  • a: 输入张量。

  • b: 卷积核张量。

返回值: 卷积结果张量。

ggml_conv_2d_s1_ph

struct ggml_tensor * ggml_conv_2d_s1_ph(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b);

描述: 实现带有默认步长和自动填充的二维卷积操作。

参数:

  • ctx: 上下文指针。

  • a: 输入张量。

  • b: 卷积核张量。

返回值: 卷积结果张量。

ggml_conv_transpose_2d_p0

struct ggml_tensor * ggml_conv_transpose_2d_p0(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b,
        int                   stride);

描述: 实现带有默认填充的二维转置卷积操作。

参数:

  • ctx: 上下文指针。

  • a: 输入张量。

  • b: 卷积核张量。

  • stride: 步长。

返回值: 转置卷积结果张量。

ggml_pool_1d

struct ggml_tensor * ggml_pool_1d(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        enum ggml_op_pool     op,
        int                   k0,
        int                   s0,
        int                   p0);

描述: 对输入的一维张量进行池化操作。

参数:

  • ctx: 上下文指针。

  • a: 输入张量。

  • op: 池化操作类型。

  • k0: 池化核大小。

  • s0: 步长。

  • p0: 填充。

返回值: 池化结果张量。

ggml_pool_2d

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,
        float                 p0,
        float                 p1);

描述: 对输入的二维张量进行池化操作。

参数:

  • ctx: 上下文指针。

  • a: 输入张量。

  • op: 池化操作类型。

  • k0, k1: 池化核大小。

  • s0, s1: 步长。

  • p0, p1: 填充。

返回值: 池化结果张量。

ggml_upscale_impl

static struct ggml_tensor * ggml_upscale_impl(
    struct ggml_context * ctx,
    struct ggml_tensor * a,
    int scale_factor);

描述: 实现对输入张量进行上采样操作。

参数:

  • ctx: 上下文指针。

  • a: 输入张量。

  • scale_factor: 缩放因子。

返回值: 上采样结果张量。

ggml_pad

struct ggml_tensor * ggml_pad(
    struct ggml_context * ctx,
    struct ggml_tensor  * a,
    int p0, int p1, int p2, int p3);

描述: 对输入张量进行填充操作。

参数:

  • ctx: 上下文指针。

  • a: 输入张量。

  • p0, p1, p2, p3: 填充大小。

返回值: 填充结果张量。

ggml_upscale

struct ggml_tensor * ggml_upscale(
    struct ggml_context * ctx,
    struct ggml_tensor * a,
    int scale_factor);

描述: 对输入张量进行上采样操作。

参数:

  • ctx: 上下文指针。

  • a: 输入张量。

  • scale_factor: 缩放因子。

返回值: 上采样结果张量。

ggml_argsort

struct ggml_tensor * ggml_argsort(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        enum ggml_sort_order  order);

描述: 对输入张量进行排序操作。

参数:

  • ctx: 上下文指针。

  • a: 输入张量。

  • order: 排序顺序。

返回值: 排序结果张量。

ggml_top_k

struct ggml_tensor * ggml_top_k(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        int                   k);

描述: 返回输入张量中前 k 个最大值的张量。

参数:

  • ctx: 上下文指针。

  • a: 输入张量。

  • k: 要返回的元素数量。

返回值: 前 k 个最大值的张量。

ggml_flash_attn

struct ggml_tensor * ggml_flash_attn(
        struct ggml_context * ctx,
        struct ggml_tensor  * q,
        struct ggml_tensor  * k,
        struct ggml_tensor  * v,
        bool                  masked);

描述: 计算注意力机制的输出张量。

参数:

  • ctx: 上下文指针。

  • q: 查询张量。

  • k: 键张量。

  • v: 值张量。

  • masked: 是否使用掩码。

返回值: 注意力机制输出张量。

ggml_flash_ff

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);

描述: 计算前馈神经网络的输出张量。

参数:

  • ctx: 上下文指针。

  • a: 输入张量。

  • b0, b1: 权重张量。

  • c0, c1: 偏置张量。

返回值: 前馈神经网络输出张量。

ggml_flash_attn_back

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);

描述: 计算注意力机制的反向传播输出张量。

参数:

  • ctx: 上下文指针。

  • q: 查询张量。

  • k: 键张量。

  • v: 值张量。

  • d: 输入张量。

  • masked: 是否使用掩码。

返回值: 注意力机制反向传播输出张量。

ggml_win_part

struct ggml_tensor * ggml_win_part(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        int                   w);

描述: 对输入张量进行窗口划分操作。

参数:

  • ctx: 上下文指针。

  • a: 输入张量。

  • w: 窗口大小。

返回值: 窗口划分结果张量。

ggml_win_unpart

struct ggml_tensor * ggml_win_unpart(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        int                   w0,
        int                   h0,
        int                   w);

描述: 对输入张量进行窗口反划分操作。

参数:

  • ctx: 上下文指针。

  • a: 输入张量。

  • w0, h0: 窗口大小。

  • w: 窗口大小。

返回值: 窗口反划分结果张量。

以上是根据提供的代码段提取的常量、结构体和公开函数。由于代码段中没有定义任何常量或结构体,因此这部分为空。所有公开函数都已列出,并附有其描述、参数和返回值。

GGML_TYPE_F32

类型:枚举

描述:表示32位浮点数类型。

GGML_TYPE_F16

类型:枚举

描述:表示16位浮点数类型。

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

类型:枚举

描述:表示映射自定义一元操作类型,适用于32位浮点数。

GGML_OP_MAP_CUSTOM2_F32

类型:枚举

描述:表示映射自定义二元操作类型,适用于32位浮点数。

GGML_OP_MAP_CUSTOM3_F32

类型:枚举

描述:表示映射自定义三元操作类型,适用于32位浮点数。

GGML_OP_MAP_CUSTOM1

类型:枚举

描述:表示映射自定义一元操作类型。

ggml_tensor

描述:表示一个张量结构体。

字段 类型 描述
ctx struct ggml_context * 上下文指针
type enum ggml_type 张量类型
ne const int64_t[] 张量的形状信息
op enum ggml_op 操作类型
grad struct ggml_tensor * 梯度张量
src struct ggml_tensor *[] 源张量

ggml_new_tensor

struct ggml_tensor * ggml_new_tensor(struct ggml_context * ctx, enum ggml_type type, int ndims, const int64_t ne[]);

描述:创建一个新的张量。

参数:

  • ctx:上下文指针。

  • type:张量类型。

  • ndims:维度数量。

  • ne:张量的形状信息数组。

返回值:新创建的张量。

ggml_set_op_params

void ggml_set_op_params(struct ggml_tensor * tensor, const void * params, size_t params_size);

描述:设置张量的操作参数。

参数:

  • tensor:目标张量。

  • params:操作参数。

  • params_size:操作参数的大小。

ggml_dup_tensor

struct ggml_tensor * ggml_dup_tensor(struct ggml_context * ctx, struct ggml_tensor * src);

描述:复制一个张量。

参数:

  • ctx:上下文指针。

  • src:源张量。

返回值:复制后的张量。

ggml_view_tensor

struct ggml_tensor * ggml_view_tensor(struct ggml_context * ctx, struct ggml_tensor * src);

描述:创建一个张量的视图。

参数:

  • ctx:上下文指针。

  • src:源张量。

返回值:视图张量。

ggml_get_rel_pos

struct ggml_tensor * ggml_get_rel_pos(struct ggml_context * ctx, struct ggml_tensor * a, int qh, int kh);

描述:获取相对位置的张量。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • qh:查询头数。

  • kh:键头数。

返回值:新的张量。

ggml_add_rel_pos

struct ggml_tensor * ggml_add_rel_pos(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * pw, struct ggml_tensor * ph);

描述:执行相对位置加法操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • pw:权重张量。

  • ph:隐藏状态张量。

返回值:新的张量。

ggml_add_rel_pos_inplace

struct ggml_tensor * ggml_add_rel_pos_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * pw, struct ggml_tensor * ph);

描述:执行原地相对位置加法操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • pw:权重张量。

  • ph:隐藏状态张量。

返回值:新的张量。

ggml_unary

struct ggml_tensor * ggml_unary(struct ggml_context * ctx, struct ggml_tensor * a, enum ggml_unary_op op);

描述:执行一元操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • op:一元操作类型。

返回值:新的张量。

ggml_unary_inplace

struct ggml_tensor * ggml_unary_inplace(struct ggml_context * ctx, struct ggml_tensor * a, enum ggml_unary_op op);

描述:执行原地一元操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • op:一元操作类型。

返回值:新的张量。

ggml_map_unary_f32

struct ggml_tensor * ggml_map_unary_f32(struct ggml_context * ctx, struct ggml_tensor * a, const ggml_unary_op_f32_t fun);

描述:对32位浮点数张量执行一元映射操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • fun:一元操作函数。

返回值:新的张量。

ggml_map_unary_inplace_f32

struct ggml_tensor * ggml_map_unary_inplace_f32(struct ggml_context * ctx, struct ggml_tensor * a, const ggml_unary_op_f32_t fun);

描述:对32位浮点数张量执行原地一元映射操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • fun:一元操作函数。

返回值:新的张量。

ggml_map_binary_f32

struct ggml_tensor * ggml_map_binary_f32(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, const ggml_binary_op_f32_t fun);

描述:对32位浮点数张量执行二元映射操作。

参数:

  • ctx:上下文指针。

  • a:第一个输入张量。

  • b:第二个输入张量。

  • fun:二元操作函数。

返回值:新的张量。

ggml_map_binary_inplace_f32

struct ggml_tensor * ggml_map_binary_inplace_f32(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, const ggml_binary_op_f32_t fun);

描述:对32位浮点数张量执行原地二元映射操作。

参数:

  • ctx:上下文指针。

  • a:第一个输入张量。

  • b:第二个输入张量。

  • fun:二元操作函数。

返回值:新的张量。

ggml_map_custom1_f32

struct ggml_tensor * ggml_map_custom1_f32(struct ggml_context * ctx, struct ggml_tensor * a, const ggml_custom1_op_f32_t fun);

描述:对32位浮点数张量执行自定义一元映射操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • fun:自定义一元操作函数。

返回值:新的张量。

ggml_map_custom1_inplace_f32

struct ggml_tensor * ggml_map_custom1_inplace_f32(struct ggml_context * ctx, struct ggml_tensor * a, const ggml_custom1_op_f32_t fun);

描述:对32位浮点数张量执行原地自定义一元映射操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • fun:自定义一元操作函数。

返回值:新的张量。

ggml_map_custom2_f32

struct ggml_tensor * ggml_map_custom2_f32(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, const ggml_custom2_op_f32_t fun);

描述:对32位浮点数张量执行自定义二元映射操作。

参数:

  • ctx:上下文指针。

  • a:第一个输入张量。

  • b:第二个输入张量。

  • fun:自定义二元操作函数。

返回值:新的张量。

ggml_map_custom2_inplace_f32

struct ggml_tensor * ggml_map_custom2_inplace_f32(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, const ggml_custom2_op_f32_t fun);

描述:对32位浮点数张量执行原地自定义二元映射操作。

参数:

  • ctx:上下文指针。

  • a:第一个输入张量。

  • b:第二个输入张量。

  • fun:自定义二元操作函数。

返回值:新的张量。

ggml_map_custom3_f32

struct ggml_tensor * ggml_map_custom3_f32(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, struct ggml_tensor * c, const ggml_custom3_op_f32_t fun);

描述:对32位浮点数张量执行自定义三元映射操作。

参数:

  • ctx:上下文指针。

  • a:第一个输入张量。

  • b:第二个输入张量。

  • c:第三个输入张量。

  • fun:自定义三元操作函数。

返回值:新的张量。

ggml_map_custom3_inplace_f32

struct ggml_tensor * ggml_map_custom3_inplace_f32(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, struct ggml_tensor * c, const ggml_custom3_op_f32_t fun);

描述:对32位浮点数张量执行原地自定义三元映射操作。

参数:

  • ctx:上下文指针。

  • a:第一个输入张量。

  • b:第二个输入张量。

  • c:第三个输入张量。

  • fun:自定义三元操作函数。

返回值:新的张量。

ggml_map_custom1

struct ggml_tensor * ggml_map_custom1(struct ggml_context * ctx, struct ggml_tensor * a, const ggml_custom1_op_t fun, int n_tasks, void * userdata);

描述:执行自定义一元映射操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • fun:自定义一元操作函数。

  • n_tasks:任务数量。

  • userdata:用户数据。

返回值:新的张量。

ggml_map_custom1_inplace

struct ggml_tensor * ggml_map_custom1_inplace(struct ggml_context * ctx, struct ggml_tensor * a, const ggml_custom1_op_t fun, int n_tasks, void * userdata);

描述:执行原地自定义一元映射操作。

参数:

  • ctx:上下文指针。

  • a:输入张量。

  • fun:自定义一元操作函数。

  • n_tasks:任务数量。

  • userdata:用户数据。

返回值:新的张量。

ggml_map_custom2_op_params

描述:包含自定义操作函数、任务数量和用户数据的结构体。

字段 类型 描述
fun ggml_custom2_op_t 自定义操作函数
n_tasks int 任务数量
userdata void * 用户数据

GGML_N_TASKS_MAX

类型:未明确给出类型,但根据上下文推测为整数类型

描述:表示最大任务数量的常量,用于断言任务数是否合法。

ggml_map_custom2_op_params

描述:用于存储自定义二元操作的参数的结构体。

字段 类型 描述
fun ggml_custom2_op_t 自定义二元操作的函数指针
n_tasks int 任务数量
userdata void * 用户数据指针

ggml_map_custom3_op_params

描述:用于存储自定义三元操作的参数的结构体。

字段 类型 描述
fun ggml_custom3_op_t 自定义三元操作的函数指针
n_tasks int 任务数量
userdata void * 用户数据指针

ggml_map_custom2_impl

struct ggml_tensor * ggml_map_custom2_impl(
        struct ggml_context          * ctx,
        struct ggml_tensor           * a,
        struct ggml_tensor           * b,
        const  ggml_custom2_op_t       fun,
        int                            n_tasks,
        void                         * userdata,
        bool                           inplace)

描述:实现自定义二元操作的函数,接受两个张量和自定义操作函数,以及其他参数,返回计算结果张量。

参数:

  • ctx:ggml上下文指针

  • a:第一个输入张量

  • b:第二个输入张量

  • fun:自定义二元操作函数指针

  • n_tasks:任务数量

  • userdata:用户数据指针

  • inplace:是否原地操作的布尔值

返回值:计算结果张量

ggml_map_custom2

struct ggml_tensor * ggml_map_custom2(
        struct ggml_context          * ctx,
        struct ggml_tensor           * a,
        struct ggml_tensor           * b,
        const  ggml_custom2_op_t       fun,
        int                            n_tasks,
        void                         * userdata)

描述:调用ggml_map_custom2_impl函数实现自定义二元操作,不进行原地操作。

参数:与ggml_map_custom2_impl相同,但不包括inplace参数。

返回值:计算结果张量

ggml_map_custom2_inplace

struct ggml_tensor * ggml_map_custom2_inplace(
        struct ggml_context          * ctx,
        struct ggml_tensor           * a,
        struct ggml_tensor           * b,
        const  ggml_custom2_op_t       fun,
        int                            n_tasks,
        void                         * userdata)

描述:调用ggml_map_custom2_impl函数实现自定义二元操作,进行原地操作。

参数:与ggml_map_custom2_impl相同,但不包括inplace参数。

返回值:计算结果张量

ggml_map_custom3_impl

static struct ggml_tensor * ggml_map_custom3_impl(
        struct ggml_context          * ctx,
        struct ggml_tensor           * a,
        struct ggml_tensor           * b,
        struct ggml_tensor           * c,
        const  ggml_custom3_op_t       fun,
        int                            n_tasks,
        void                         * userdata,
        bool                           inplace)

描述:实现自定义三元操作的函数,接受三个张量和自定义操作函数,以及其他参数,返回计算结果张量。

参数:

  • ctx:ggml上下文指针

  • a:第一个输入张量

  • b:第二个输入张量

  • c:第三个输入张量

  • fun:自定义三元操作函数指针

  • n_tasks:任务数量

  • userdata:用户数据指针

  • inplace:是否原地操作的布尔值

返回值:计算结果张量

ggml_map_custom3

struct ggml_tensor * ggml_map_custom3(
        struct ggml_context          * ctx,
        struct ggml_tensor           * a,
        struct ggml_tensor           * b,
        struct ggml_tensor           * c,
        const  ggml_custom3_op_t       fun,
        int                            n_tasks,
        void                         * userdata)

描述:调用ggml_map_custom3_impl函数实现自定义三元操作,不进行原地操作。

参数:与ggml_map_custom3_impl相同,但不包括inplace参数。

返回值:计算结果张量

ggml_map_custom3_inplace

struct ggml_tensor * ggml_map_custom3_inplace(
        struct ggml_context          * ctx,
        struct ggml_tensor           * a,
        struct ggml_tensor           * b,
        struct ggml_tensor           * c,
        const  ggml_custom3_op_t       fun,
        int                            n_tasks,
        void                         * userdata)

描述:调用ggml_map_custom3_impl函数实现自定义三元操作,进行原地操作。

参数:与ggml_map_custom3_impl相同,但不包括inplace参数。

返回值:计算结果张量

ggml_cross_entropy_loss

struct ggml_tensor * ggml_cross_entropy_loss(
        struct ggml_context         * ctx,
        struct ggml_tensor          * a,
        struct ggml_tensor          * b)

描述:计算交叉熵损失的函数,接受两个张量作为输入,返回计算结果张量。

参数:

  • ctx:ggml上下文指针

  • a:第一个输入张量

  • b:第二个输入张量

返回值:计算结果张量

ggml_cross_entropy_loss_back

struct ggml_tensor * ggml_cross_entropy_loss_back(
        struct ggml_context         * ctx,
        struct ggml_tensor          * a,
        struct ggml_tensor          * b,
        struct ggml_tensor          * c)

描述:计算交叉熵损失的反向传播的函数,接受三个张量作为输入,返回计算结果张量。

参数:

  • ctx:ggml上下文指针

  • a:第一个输入张量

  • b:第二个输入张量

  • c:第三个输入张量

返回值:计算结果张量

ggml_set_param

void ggml_set_param(
        struct ggml_context * ctx,
        struct ggml_tensor * tensor)

描述:设置张量为参数的函数,标记张量为参数并为其分配梯度张量。

参数:

  • ctx:ggml上下文指针

  • tensor:要设置为参数的张量

返回值:无

ggml_compute_forward_dup_same_cont

static void ggml_compute_forward_dup_same_cont(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:执行前向计算的函数,处理连续内存块相同的情况,将源张量的数据复制到目标张量中。

参数:

  • params:计算参数

  • src0:源张量

  • dst:目标张量

返回值:无

ggml_compute_forward_dup_f16

static void ggml_compute_forward_dup_f16(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:执行前向计算的函数,处理16位浮点数的情况,将源张量的数据复制到目标张量中。

参数:

  • params:计算参数

  • src0:源张量

  • dst:目标张量

返回值:无

ggml_compute_forward_dup_f32

static void ggml_compute_forward_dup_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:执行前向计算的函数,处理32位浮点数的情况,将源张量的数据复制到目标张量中。

参数:

  • params:计算参数

  • src0:源张量

  • dst:目标张量

返回值:无

ggml_compute_forward_dup_bytes

static void ggml_compute_forward_dup_bytes(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:执行前向计算的函数,处理字节数据的情况,将源张量的数据复制到目标张量中。

参数:

  • params:计算参数

  • src0:源张量

  • dst:目标张量

返回值:无

以上是对给定代码段中的常量、结构体和公开函数的提取和总结。

GGML_TYPE_F16

类型:枚举值

描述:表示数据类型为半精度浮点数(16位)。

GGML_TYPE_F32

类型:枚举值

描述:表示数据类型为单精度浮点数(32位)。

GGML_TASK_INIT

类型:枚举值

描述:表示计算任务的类型为初始化。

GGML_TASK_FINALIZE

类型:枚举值

描述:表示计算任务的类型为结束。

ggml_compute_params

描述:包含计算参数的结构体。

字段 类型 描述
type 枚举值 计算任务的类型
ith int 当前线程的索引
nth int 总线程数
wdata void* 工作数据指针

ggml_tensor

描述:表示张量的结构体。

字段 类型 描述
type 枚举值 张量的数据类型
data void* 张量的数据指针

ggml_compute_forward_dup

void ggml_compute_forward_dup(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:计算前向传播的重复操作,将源张量的数据复制到目标张量中。

参数:

  • params:计算参数。

  • src0:源张量。

  • dst:目标张量。

返回值:无。

ggml_compute_forward_add_f32

static void ggml_compute_forward_add_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算前向传播的加法操作,将两个源张量的数据相加并存储到目标张量中。

参数:

  • params:计算参数。

  • src0:第一个源张量。

  • src1:第二个源张量。

  • dst:目标张量。

返回值:无。

ggml_compute_forward_add_f16_f32

static void ggml_compute_forward_add_f16_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算前向传播的加法操作,将一个半精度浮点数张量和一个单精度浮点数张量相加,并将结果存储到目标张量中。

参数:

  • params:计算参数。

  • src0:半精度浮点数张量。

  • src1:单精度浮点数张量。

  • dst:目标张量。

返回值:无。

ggml_compute_forward_add_f16_f16

static void ggml_compute_forward_add_f16_f16(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算前向传播的加法操作,将两个半精度浮点数张量相加,并将结果存储到目标张量中。

参数:

  • params:计算参数。

  • src0:第一个半精度浮点数张量。

  • src1:第二个半精度浮点数张量。

  • dst:目标张量。

返回值:无。

ggml_compute_forward_add_q_f32

static void ggml_compute_forward_add_q_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算前向传播的加法操作,将一个量化张量和一个单精度浮点数张量相加,并将结果存储到目标张量中。

参数:

  • params:计算参数。

  • src0:量化张量。

  • src1:单精度浮点数张量。

  • dst:目标张量。

返回值:无。

ggml_compute_forward_add

static void ggml_compute_forward_add(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算前向传播的加法操作,根据源张量的类型选择合适的加法函数。

参数:

  • params:计算参数。

  • src0:第一个源张量。

  • src1:第二个源张量。

  • dst:目标张量。

返回值:无。

ggml_compute_forward_add1_f32

static void ggml_compute_forward_add1_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算前向传播的加法操作,将一个张量与一个标量相加,并将结果存储到目标张量中。

参数:

  • params:计算参数。

  • src0:张量。

  • src1:标量。

  • dst:目标张量。

返回值:无。

ggml_compute_forward_add1_f16_f32

static void ggml_compute_forward_add1_f16_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算前向传播的加法操作,将一个半精度浮点数张量与一个单精度浮点数标量相加,并将结果存储到目标张量中。

参数:

  • params:计算参数。

  • src0:半精度浮点数张量。

  • src1:单精度浮点数标量。

  • dst:目标张量。

返回值:无。

请注意,以上总结是基于提供的代码段进行的,可能不包含所有相关的常量、结构体和函数。如果代码段中有遗漏的部分,需要提供完整的代码才能进行更全面的分析。

GGML_TYPE_F16

类型:枚举值

描述:表示数据类型为半精度浮点数(16位)。

GGML_TYPE_F32

类型:枚举值

描述:表示数据类型为单精度浮点数(32位)。

GGML_TYPE_Q4_0

类型:枚举值

描述:表示量化类型为4位,偏移量为0。

GGML_TYPE_Q4_1

类型:枚举值

描述:表示量化类型为4位,偏移量为1。

GGML_TYPE_Q5_0

类型:枚举值

描述:表示量化类型为5位,偏移量为0。

GGML_TYPE_Q5_1

类型:枚举值

描述:表示量化类型为5位,偏移量为1。

GGML_TYPE_Q8_0

类型:枚举值

描述:表示量化类型为8位,偏移量为0。

GGML_TYPE_Q8_1

类型:枚举值

描述:表示量化类型为8位,偏移量为1。

GGML_TYPE_Q2_K

类型:枚举值

描述:表示量化类型为2位,K未知。

GGML_TYPE_Q3_K

类型:枚举值

描述:表示量化类型为3位,K未知。

GGML_TYPE_Q4_K

类型:枚举值

描述:表示量化类型为4位,K未知。

GGML_TYPE_Q5_K

类型:枚举值

描述:表示量化类型为5位,K未知。

GGML_TYPE_Q6_K

类型:枚举值

描述:表示量化类型为6位,K未知。

ggml_compute_params

描述:计算参数结构体,包含计算任务的类型、索引、线程总数等信息。

字段 类型 描述
type enum ggml_task_type 任务类型
ith int 当前线程的索引
nth int 线程总数

ggml_tensor

描述:张量结构体,包含张量的数据、形状、类型等信息。

字段 类型 描述
data void* 指向张量数据的指针
type enum ggml_type 张量的数据类型
ne int64_t[GGML_MAX_DIMS] 各维度的大小
nb size_t[GGML_MAX_DIMS] 各维度的步长
op_params void* 操作参数

ggml_compute_forward_add1_f16_f16

void ggml_compute_forward_add1_f16_f16(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算两个半精度浮点数张量的前向加法操作。

参数:

  • params:计算参数结构体指针。

  • src0:第一个输入张量指针。

  • src1:第二个输入张量指针。

  • dst:输出张量指针。

返回值:无。

ggml_compute_forward_add1_q_f32

void ggml_compute_forward_add1_q_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算一个量化张量和一个单精度浮点数张量的前向加法操作。

参数:

  • params:计算参数结构体指针。

  • src0:第一个输入张量指针。

  • src1:第二个输入张量指针。

  • dst:输出张量指针。

返回值:无。

ggml_compute_forward_add1

void ggml_compute_forward_add1(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:根据输入张量的类型,调用相应的前向加法操作函数。

参数:

  • params:计算参数结构体指针。

  • src0:第一个输入张量指针。

  • src1:第二个输入张量指针。

  • dst:输出张量指针。

返回值:无。

ggml_compute_forward_acc_f32

void ggml_compute_forward_acc_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算两个单精度浮点数张量的前向累加操作。

参数:

  • params:计算参数结构体指针。

  • src0:第一个输入张量指针。

  • src1:第二个输入张量指针。

  • dst:输出张量指针。

返回值:无。

ggml_compute_forward_acc

void ggml_compute_forward_acc(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:根据输入张量的类型,调用相应的前向累加操作函数。

参数:

  • params:计算参数结构体指针。

  • src0:第一个输入张量指针。

  • src1:第二个输入张量指针。

  • dst:输出张量指针。

返回值:无。

ggml_compute_forward_sub_f32

void ggml_compute_forward_sub_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算两个单精度浮点数张量的前向减法操作。

参数:

  • params:计算参数结构体指针。

  • src0:第一个输入张量指针。

  • src1:第二个输入张量指针。

  • dst:输出张量指针。

返回值:无。

ggml_compute_forward_sub

void ggml_compute_forward_sub(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:根据输入张量的类型,调用相应的前向减法操作函数。

参数:

  • params:计算参数结构体指针。

  • src0:第一个输入张量指针。

  • src1:第二个输入张量指针。

  • dst:输出张量指针。

返回值:无。

ggml_compute_forward_mul_f32

void ggml_compute_forward_mul_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算两个单精度浮点数张量的前向乘法操作。

参数:

  • params:计算参数结构体指针。

  • src0:第一个输入张量指针。

  • src1:第二个输入张量指针。

  • dst:输出张量指针。

返回值:无。

这些函数和结构体定义了在张量计算中常用的操作,如加法、减法、乘法和累加等,适用于不同的数据类型和后端(如CPU或GPU)。

无显式定义的常量。

无显式定义的结构体。

ggml_compute_forward_mul_f32

void ggml_compute_forward_mul_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算两个输入张量的乘法,结果存储在目标张量中。

参数:

  • params:计算参数。

  • src0:第一个输入张量。

  • src1:第二个输入张量。

  • dst:目标张量,存储计算结果。

返回值:无。

ggml_compute_forward_div_f32

void ggml_compute_forward_div_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算两个输入张量的除法,结果存储在目标张量中。

参数:

  • params:计算参数。

  • src0:第一个输入张量。

  • src1:第二个输入张量。

  • dst:目标张量,存储计算结果。

返回值:无。

ggml_compute_forward_sqr_f32

void ggml_compute_forward_sqr_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:计算输入张量的平方,结果存储在目标张量中。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:目标张量,存储计算结果。

返回值:无。

ggml_compute_forward_sqrt_f32

void ggml_compute_forward_sqrt_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:计算输入张量的平方根,结果存储在目标张量中。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:目标张量,存储计算结果。

返回值:无。

ggml_compute_forward_log_f32

void ggml_compute_forward_log_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:计算输入张量的对数,结果存储在目标张量中。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:目标张量,存储计算结果。

返回值:无。

ggml_compute_forward_sum_f32

void ggml_compute_forward_sum_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:计算输入张量的元素总和,结果存储在目标张量中。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:目标张量,存储计算结果。

返回值:无。

ggml_compute_forward_sum_rows_f32

void ggml_compute_forward_sum_rows_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:计算输入张量每一行的和,结果存储在目标张量中。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:目标张量,存储计算结果。

返回值:无。

以上函数均为针对特定数据类型(如GGML_TYPE_F32)的前向计算操作,包括乘法、除法、平方、平方根、对数、求和和行求和等。每个函数都接受计算参数、输入张量和目标张量作为参数,并执行相应的计算操作,将结果存储在目标张量中。

GGML_TYPE_F32

类型:枚举值

描述:表示数据类型为32位浮点数。

GGML_TYPE_F16

类型:枚举值

描述:表示数据类型为16位浮点数。

GGML_TYPE_I16

类型:枚举值

描述:表示数据类型为16位整数。

GGML_TYPE_I32

类型:枚举值

描述:表示数据类型为32位整数。

GGML_TASK_INIT

类型:枚举值

描述:表示任务类型为初始化。

GGML_TASK_FINALIZE

类型:枚举值

描述:表示任务类型为结束。

ggml_compute_params

描述:包含计算参数的结构体。

字段 类型 描述
ith int 当前线程索引
nth int 总线程数
type enum 任务类型

ggml_tensor

描述:表示张量的结构体。

字段 类型 描述
data void* 张量数据指针
nb size_t[] 每个维度字节数
ne int64_t[] 每个维度元素数量
type enum 张量数据类型

ggml_compute_forward_sum_rows_f32

void ggml_compute_forward_sum_rows_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算前向传播的行求和操作,针对32位浮点型张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_mean_f32

static void ggml_compute_forward_mean_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算前向传播的均值操作,针对32位浮点型张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_mean

static void ggml_compute_forward_mean(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算前向传播的均值操作,根据输入张量的类型选择对应的处理函数。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_argmax_f32

static void ggml_compute_forward_argmax_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算前向传播的 argmax 操作,针对32位浮点型张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_argmax

static void ggml_compute_forward_argmax(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算前向传播的 argmax 操作,根据输入张量的类型选择对应的处理函数。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_repeat_f32

static void ggml_compute_forward_repeat_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算前向传播的重复操作,针对32位浮点型张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_repeat_f16

static void ggml_compute_forward_repeat_f16(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算前向传播的重复操作,针对16位浮点型张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_repeat

static void ggml_compute_forward_repeat(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算前向传播的重复操作,根据输入张量的类型选择对应的处理函数。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_repeat_back_f32

static void ggml_compute_forward_repeat_back_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算前向传播的重复操作的反向操作,针对32位浮点型张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_repeat_back

static void ggml_compute_forward_repeat_back(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算前向传播的重复操作的反向操作,根据输入张量的类型选择对应的处理函数。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_concat_f32

static void ggml_compute_forward_concat_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst);

描述:计算前向传播的拼接操作,针对32位浮点型张量。

参数:

  • params:计算参数。

  • src0:第一个输入张量。

  • src1:第二个输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_concat

static void ggml_compute_forward_concat(const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst);

描述:计算前向传播的拼接操作,根据输入张量的类型选择对应的处理函数。

参数:

  • params:计算参数。

  • src0:第一个输入张量。

  • src1:第二个输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_abs_f32

static void ggml_compute_forward_abs_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算前向传播的绝对值操作,针对32位浮点型张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_abs

static void ggml_compute_forward_abs(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算前向传播的绝对值操作,根据输入张量的类型选择对应的处理函数。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

无显式定义的常量。

无显式定义的结构体。

ggml_compute_forward_sgn

static void ggml_compute_forward_sgn(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算符号函数操作的前向传播。根据输入张量的类型进行不同的处理。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_sgn_f32

static void ggml_compute_forward_sgn_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算符号函数操作的前向传播,针对类型为 GGML_TYPE_F32 的张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_neg

static void ggml_compute_forward_neg(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算负数函数操作的前向传播。根据输入张量的类型进行不同的处理。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_neg_f32

static void ggml_compute_forward_neg_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算负数函数操作的前向传播,针对类型为 GGML_TYPE_F32 的张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_step

static void ggml_compute_forward_step(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算步进函数操作的前向传播。根据输入张量的类型进行不同的处理。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_step_f32

static void ggml_compute_forward_step_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算步进函数操作的前向传播,针对类型为 GGML_TYPE_F32 的张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_tanh

static void ggml_compute_forward_tanh(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算 tanh 激活函数的前向传播。根据输入张量的类型进行不同的处理。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_tanh_f32

static void ggml_compute_forward_tanh_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算 tanh 激活函数的前向传播,针对类型为 GGML_TYPE_F32 的张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_elu

static void ggml_compute_forward_elu(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算 ELU 激活函数的前向传播。根据输入张量的类型进行不同的处理。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_elu_f32

static void ggml_compute_forward_elu_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算 ELU 激活函数的前向传播,针对类型为 GGML_TYPE_F32 的张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_relu

static void ggml_compute_forward_relu(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算 ReLU 激活函数的前向传播。根据输入张量的类型进行不同的处理。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_relu_f32

static void ggml_compute_forward_relu_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算 ReLU 激活函数的前向传播,针对类型为 GGML_TYPE_F32 的张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_gelu

static void ggml_compute_forward_gelu(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算 GELU 激活函数的前向传播。根据输入张量的类型进行不同的处理。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_gelu_f32

static void ggml_compute_forward_gelu_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算 GELU 激活函数的前向传播,针对类型为 GGML_TYPE_F32 的张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_gelu_quick

static void ggml_compute_forward_gelu_quick(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算快速 GELU 激活函数的前向传播。根据输入张量的类型进行不同的处理。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_gelu_quick_f32

static void ggml_compute_forward_gelu_quick_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算快速 GELU 激活函数的前向传播,针对类型为 GGML_TYPE_F32 的张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_silu

static void ggml_compute_forward_silu(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算 SiLU 激活函数的前向传播。根据输入张量的类型进行不同的处理。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

ggml_compute_forward_silu_f32

static void ggml_compute_forward_silu_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst)

描述:计算 SiLU 激活函数的前向传播,针对类型为 GGML_TYPE_F32 的张量。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

以上是根据提供的代码段提取的常量、结构体和公开函数的信息。由于代码段中没有显式定义的常量和结构体,因此这部分为空。所有函数都是静态的,因此没有公开函数。

nc

类型:int

描述:表示输入张量src0的第一个维度大小。

nr

类型:int

描述:表示输入张量src0的行数,通过ggml_nrows(src0)获取。

dr

类型:int

描述:表示每个线程处理的行数,计算方式为(nr + nth - 1)/nth

ir0

类型:int

描述:表示当前线程处理的行范围的起始行,计算方式为dr*ith

ir1

类型:int

描述:表示当前线程处理的行范围的结束行,计算方式为MIN(ir0 + dr, nr)

ggml_compute_params

描述:包含计算参数的结构体。

字段 类型 描述
ith int 当前线程的索引
nth int 线程总数

ggml_tensor

描述:表示张量的结构体。

字段 类型 描述
data void* 张量数据的指针
ne int[] 张量的维度大小
nb int[] 张量的步长(字节)
type int 张量的数据类型
op_params void* 操作参数的指针

ggml_vec_silu_f32

void ggml_vec_silu_f32(int nc, float *dst, float *src);

描述:对F32类型的向量进行SiLU(Sigmoid Linear Unit)激活函数处理。

参数:

  • nc:向量的长度。

  • dst:输出向量的指针。

  • src:输入向量的指针。

ggml_vec_leaky_relu_f32

void ggml_vec_leaky_relu_f32(int nc, float *dst, float *src, float negative_slope);

描述:对F32类型的向量进行Leaky ReLU激活函数处理。

参数:

  • nc:向量的长度。

  • dst:输出向量的指针。

  • src:输入向量的指针。

  • negative_slope:Leaky ReLU的负斜率。

ggml_vec_silu_backward_f32

void ggml_vec_silu_backward_f32(int nc, float *dst, float *src, float *grad);

描述:对F32类型的向量进行SiLU激活函数的反向传播计算。

参数:

  • nc:向量的长度。

  • dst:输出梯度的指针。

  • src:输入向量的指针。

  • grad:输入梯度的指针。

ggml_vec_scale_f32

void ggml_vec_scale_f32(int ne00, float *y, float scale);

描述:对F32类型的向量进行缩放操作。

参数:

  • ne00:向量的长度。

  • y:待缩放的向量的指针。

  • scale:缩放因子。

ggml_compute_forward_silu

static void ggml_compute_forward_silu(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算SiLU激活函数的前向传播。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • dst:输出张量指针。

ggml_compute_forward_leaky_relu_f32

static void ggml_compute_forward_leaky_relu_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算F32类型的Leaky ReLU激活函数的前向传播。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • dst:输出张量指针。

ggml_compute_forward_leaky_relu

static void ggml_compute_forward_leaky_relu(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算Leaky ReLU激活函数的前向传播。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • dst:输出张量指针。

ggml_compute_forward_silu_back_f32

static void ggml_compute_forward_silu_back_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * grad, struct ggml_tensor * dst);

描述:计算F32类型的SiLU激活函数的反向传播。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • grad:梯度张量指针。

  • dst:输出张量指针。

ggml_compute_forward_silu_back

static void ggml_compute_forward_silu_back(const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * grad, struct ggml_tensor * dst);

描述:计算SiLU激活函数的反向传播。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • grad:梯度张量指针。

  • dst:输出张量指针。

ggml_compute_forward_norm_f32

static void ggml_compute_forward_norm_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算F32类型的归一化操作的前向传播。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • dst:输出张量指针。

ggml_compute_forward_norm

static void ggml_compute_forward_norm(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算归一化操作的前向传播。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • dst:输出张量指针。

ggml_compute_forward_rms_norm_f32

static void ggml_compute_forward_rms_norm_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算F32类型的RMS归一化操作的前向传播。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • dst:输出张量指针。

ggml_compute_forward_rms_norm

static void ggml_compute_forward_rms_norm(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算RMS归一化操作的前向传播。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • dst:输出张量指针。

ggml_compute_forward_rms_norm_back_f32

static void ggml_compute_forward_rms_norm_back_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst);

描述:计算F32类型的RMS归一化操作的反向传播。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • src1:第二个输入张量指针。

  • dst:输出张量指针。

ggml_compute_forward_rms_norm_back

static void ggml_compute_forward_rms_norm_back(const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst);

描述:计算RMS归一化操作的反向传播。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • src1:第二个输入张量指针。

  • dst:输出张量指针。

ggml_compute_forward_group_norm_f32

static void ggml_compute_forward_group_norm_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst);

描述:计算F32类型的组归一化操作的前向传播。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • dst:输出张量指针。

请注意,上述函数和结构体的描述是基于提供的代码片段进行的总结,可能不包含所有细节,且未考虑代码中未提供的上下文信息。

eps

类型:float

描述:一个很小的正数,用于在计算方差时避免除以零的情况。

scale

类型:float

描述:缩放比例,用于对数据进行缩放。

ggml_compute_params

描述:包含计算参数的结构体。

字段 类型 描述
ith int 当前线程的索引。
nth int 线程总数。

ggml_tensor

描述:表示张量的结构体。

字段 类型 描述
type enum ggml_type 张量的数据类型。
data void* 张量数据的指针。
ne int64_t[] 张量的维度大小。
op enum ggml_op 张量的操作类型。
src const struct ggml_tensor*[] 张量的源张量数组。
nb int[] 张量的字节大小。

ggml_compute_forward_group_norm

void ggml_compute_forward_group_norm(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:计算前向分组归一化的函数。

参数:

  • params:计算参数结构体。

  • src0:输入张量。

  • dst:输出张量。

ggml_compute_forward_mul_mat

void ggml_compute_forward_mul_mat(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算前向矩阵乘法的函数。

参数:

  • params:计算参数结构体。

  • src0:第一个输入张量。

  • src1:第二个输入张量。

  • dst:输出张量。

ggml_compute_forward_mul_mat_use_blas

bool ggml_compute_forward_mul_mat_use_blas(
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:用于确定是否使用 BLAS 进行更快的矩阵乘法计算的辅助函数。

参数:

  • src0:第一个输入张量。

  • src1:第二个输入张量。

  • dst:输出张量。

返回值:如果使用 BLAS,则返回 true;否则返回 false。

ggml_compute_forward_mul_mat_id

void ggml_compute_forward_mul_mat_id(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * ids,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算前向矩阵乘法 ID 的函数。

参数:

  • params:计算参数结构体。

  • ids:ID 张量。

  • src1:输入张量。

  • dst:输出张量。

ggml_compute_forward_out_prod_f32

void ggml_compute_forward_out_prod_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算两个张量的外积并存储到目标张量中的函数。

参数:

  • params:计算参数结构体。

  • src0:第一个输入张量。

  • src1:第二个输入张量。

  • dst:输出张量。

以上是对给定代码段中的常量、结构体和公开函数的提取和总结。

GGML_VEC_MAD_UNROLL

类型:整型常量

描述:用于控制向量乘加操作的展开次数,如果大于2,则执行特定的代码块。

ggml_compute_params

描述:包含计算参数的结构体,如线程索引、线程总数等。

字段 类型 描述
ith int 线程索引
nth int 线程总数
type enum ggml_task_type 任务类型
wdata void* 指向计算数据的指针

ggml_tensor

描述:表示张量的结构体,包含张量的数据、形状、步长等信息。

字段 类型 描述
data void* 指向张量数据的指针
ne int* 张量的维度大小数组
nb size_t* 张量的步长数组
type enum ggml_type 张量的数据类型
op_params void* 操作参数,用于存储特定操作的参数

ggml_compute_forward_out_prod_q_f32

void ggml_compute_forward_out_prod_q_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算两个输入张量的张量积,并将结果存储在目标张量中。根据输入张量的类型进行不同的处理。

ggml_compute_forward_scale_f32

void ggml_compute_forward_scale_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:计算F32类型张量的缩放操作。根据输入张量的类型进行不同的处理。

ggml_compute_forward_set_f32

void ggml_compute_forward_set_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算F32类型张量的设置操作。根据输入张量的类型进行不同的处理。

ggml_compute_forward_cpy

void ggml_compute_forward_cpy(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:根据输入参数和张量进行复制操作。

ggml_compute_forward_cont

void ggml_compute_forward_cont(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:根据输入参数和张量进行复制操作。

ggml_compute_forward_reshape

void ggml_compute_forward_reshape(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:根据输入参数和张量进行重塑操作。

ggml_compute_forward_view

void ggml_compute_forward_view(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0);

描述:根据输入参数和张量进行视图操作。

ggml_compute_forward_permute

void ggml_compute_forward_permute(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0);

描述:根据输入参数和张量进行排列操作。

ggml_compute_forward_transpose

void ggml_compute_forward_transpose(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0);

描述:定义一个静态函数,用于计算转置操作。

ggml_compute_forward_get_rows_q

void ggml_compute_forward_get_rows_q(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:获取行数据的前向计算,数据类型为整型。断言确保参数中的ith为0。如果任务类型为初始化或结束,则直接返回。

无显式定义的常量。

无显式定义的结构体。

ggml_compute_forward_get_rows_q

void ggml_compute_forward_get_rows_q(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        const struct ggml_tensor * src1,
        struct ggml_tensor * dst);

描述:根据给定的计算参数和源张量,计算前向传播时获取行的量化数据,并将结果存储到目标张量中。

ggml_compute_forward_get_rows_f16

static void ggml_compute_forward_get_rows_f16(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        const struct ggml_tensor * src1,
        struct ggml_tensor * dst);

描述:静态函数,用于计算前向传播时获取行的半精度浮点数数据,数据类型为f16,并将结果存储到目标张量中。

ggml_compute_forward_get_rows_f32

static void ggml_compute_forward_get_rows_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        const struct ggml_tensor * src1,
        struct ggml_tensor * dst);

描述:静态函数,用于计算前向传播时获取行的单精度浮点数数据,数据类型为f32,并将结果存储到目标张量中。

ggml_compute_forward_get_rows

void ggml_compute_forward_get_rows(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        const struct ggml_tensor * src1,
        struct ggml_tensor * dst);

描述:根据给定的计算参数和源张量,计算前向传播时获取行的数据,并将结果存储到目标张量中。根据源张量src0的类型进行不同的操作。

ggml_compute_forward_get_rows_back_f32_f16

static void ggml_compute_forward_get_rows_back_f32_f16(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        const struct ggml_tensor * src1,
        struct ggml_tensor * dst);

描述:静态函数,用于计算前向传播时获取行数据并返回到指定位置,数据类型为f32和f16。

ggml_compute_forward_get_rows_back_f32

static void ggml_compute_forward_get_rows_back_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        const struct ggml_tensor * src1,
        struct ggml_tensor * dst);

描述:静态函数,用于计算前向传播时获取行数据并返回到指定位置,数据类型为f32。

ggml_compute_forward_get_rows_back

void ggml_compute_forward_get_rows_back(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        const struct ggml_tensor * src1,
        struct ggml_tensor * dst);

描述:根据给定的计算参数和源张量,计算前向传播时获取行数据并返回到指定位置。

ggml_compute_forward_diag_f32

static void ggml_compute_forward_diag_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst);

描述:静态函数,用于计算前向传播的对角线,数据类型为f32,并将结果存储到目标张量中。

ggml_compute_forward_diag

void ggml_compute_forward_diag(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst);

描述:根据给定的计算参数和源张量,计算前向传播的对角线,并将结果存储到目标张量中。

ggml_compute_forward_diag_mask_f32

static void ggml_compute_forward_diag_mask_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst,
        const float value);

描述:静态函数,用于计算前向传播的对角线掩码操作,数据类型为f32,并使用给定的值进行掩码操作。

ggml_compute_forward_diag_mask_inf

void ggml_compute_forward_diag_mask_inf(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst);

描述:根据给定的计算参数和源张量,计算前向传播的对角线掩码为负无穷的操作,并将结果存储到目标张量中。

ggml_compute_forward_diag_mask_zero

void ggml_compute_forward_diag_mask_zero(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        struct ggml_tensor * dst);

描述:根据给定的计算参数和源张量,计算前向传播的对角线掩码为零的操作,并将结果存储到目标张量中。

ggml_compute_forward_soft_max_f32

static void ggml_compute_forward_soft_max_f32(
        const struct ggml_compute_params * params,
        const struct ggml_tensor * src0,
        const struct ggml_tensor * src1,
        struct ggml_tensor * dst);

描述:静态函数,用于计算前向软最大值,数据类型为f32,并将结果存储到目标张量中。

以上是根据给定代码段提取的常量、结构体和公开函数。由于代码中没有显式定义常量和结构体,因此这部分为空。函数部分包含了多个与张量操作相关的函数,用于不同的计算任务。

  • ith:类型:int,描述:线程索引。

  • nth:类型:int,描述:总线程数。

  • ne11:类型:int64_t,描述:源矩阵src1的第二维大小。

  • nc:类型:int,描述:源矩阵src0的第一维大小。

  • nr:类型:int,描述:源矩阵src0的总行数。

  • dr:类型:int,描述:每个线程处理的行数。

  • ir0:类型:int,描述:当前线程处理的行范围起始。

  • ir1:类型:int,描述:当前线程处理的行范围结束。

  • ggml_compute_params

| 字段 | 类型 | 描述 |

| --- | --- | --- |

| ith | int | 线程索引 |

| nth | int | 总线程数 |

  • ggml_compute_forward_soft_max
void ggml_compute_forward_soft_max(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst)

描述:根据输入张量的类型选择相应的计算函数。

参数:

  • params:计算参数。

  • src0:源张量0。

  • src1:源张量1。

  • dst:目标张量。

返回值:无。

  • ggml_compute_forward_soft_max_back_f32
void ggml_compute_forward_soft_max_back_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst)

描述:根据输入张量的类型选择相应的反向计算函数,处理F32类型。

参数:

  • params:计算参数。

  • src0:源张量0。

  • src1:源张量1。

  • dst:目标张量。

返回值:无。

  • ggml_compute_forward_alibi_f32
void ggml_compute_forward_alibi_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst)

描述:计算前向传播的阿里巴巴函数,处理F32类型。

参数:

  • params:计算参数。

  • src0:源张量。

  • dst:目标张量。

返回值:无。

  • ggml_compute_forward_clamp_f32
void ggml_compute_forward_clamp_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst)

描述:计算前向传播的夹紧函数,处理F32类型。

参数:

  • params:计算参数。

  • src0:源张量。

  • dst:目标张量。

返回值:无。

以上是对给定代码段中的常量、结构体、公开函数的提取和总结。请注意,由于代码段较长,可能存在遗漏或错误,建议对照原始代码进行详细检查。

GGML_TYPE_I16

类型:枚举值

描述:表示数据类型为16位整数。

GGML_TYPE_I32

类型:枚举值

描述:表示数据类型为32位整数。

GGML_TYPE_COUNT

类型:枚举值

描述:表示数据类型的总数。

ggml_compute_params

描述:用于计算的参数结构体。

字段 类型 描述
type GGML_TASK_INIT 或 GGML_TASK_FINALIZE 任务类型,初始化或最终化
ith int 当前线程的索引
nth int 总线程数
wdata void* 工作数据指针
wsize size_t 工作数据大小

ggml_tensor

描述:张量结构体。

字段 类型 描述
type GGML_TYPE_F16, GGML_TYPE_F32 等 张量数据类型
op_params int32_t* 操作参数
data void* 数据指针

rope_yarn_ramp

static float rope_yarn_ramp(const float low, const float high, const int i0)

描述:计算绳索的斜率。

参数:

  • low:低值

  • high:高值

  • i0:索引

返回值:斜率的值

rope_yarn

static void rope_yarn(float theta_extrap, float freq_scale, float corr_dims[2], int64_t i0, float ext_factor, float mscale, float * cos_theta, float * sin_theta)

描述:实现绳索算法。

参数:

  • theta_extrap:外推的旋转角度

  • freq_scale:频率缩放

  • corr_dims:校正维度数组

  • i0:索引

  • ext_factor:外推因子

  • mscale:幅度缩放

  • cos_theta:余弦旋转角度的指针

  • sin_theta:正弦旋转角度的指针

返回值:无

ggml_rope_yarn_corr_dim

static float ggml_rope_yarn_corr_dim(int n_dims, int n_orig_ctx, float n_rot, float base)

描述:计算维度修正值。

参数:

  • n_dims:维度数

  • n_orig_ctx:原始上下文数

  • n_rot:旋转数

  • base:基数

返回值:修正维度值

ggml_rope_yarn_corr_dims

void ggml_rope_yarn_corr_dims(int n_dims, int n_orig_ctx, float freq_base, float beta_fast, float beta_slow, float dims[2])

描述:计算起始和结束的修正维度。

参数:

  • n_dims:维度数

  • n_orig_ctx:原始上下文数

  • freq_base:频率基数

  • beta_fast:快速beta值

  • beta_slow:慢速beta值

  • dims:修正维度数组

返回值:无

ggml_compute_forward_rope_f32

static void ggml_compute_forward_rope_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst, const bool forward)

描述:计算前向传播的RoPE(Relative Positional Encoding)的浮点数版本。

参数:

  • params:计算参数结构体指针

  • src0:源张量0

  • src1:源张量1

  • dst:目标张量

  • forward:前向标志

返回值:无

ggml_compute_forward_rope_f16

static void ggml_compute_forward_rope_f16(const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst, const bool forward)

描述:计算前向传播的RoPE的半精度浮点数版本。

参数:

  • params:计算参数结构体指针

  • src0:源张量0

  • src1:源张量1

  • dst:目标张量

  • forward:前向标志

返回值:无

ggml_compute_forward_rope

static void ggml_compute_forward_rope(const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst)

描述:计算前向传播的绳索操作。

参数:

  • params:计算参数结构体指针

  • src0:源张量0

  • src1:源张量1

  • dst:目标张量

返回值:无

ggml_compute_forward_rope_back

static void ggml_compute_forward_rope_back(const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst)

描述:计算反向传播的绳索操作。

参数:

  • params:计算参数结构体指针

  • src0:源张量0

  • src1:源张量1

  • dst:目标张量

返回值:无

ggml_compute_forward_conv_transpose_1d_f16_f32

static void ggml_compute_forward_conv_transpose_1d_f16_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst)

描述:计算一维卷积转置的前向传播操作,使用半精度浮点数和全精度浮点数。

参数:

  • params:计算参数结构体指针

  • src0:源张量0

  • src1:源张量1

  • dst:目标张量

返回值:无

ggml_compute_forward_conv_transpose_1d_f32

static void ggml_compute_forward_conv_transpose_1d_f32(const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst)

描述:计算一维卷积转置的前向传播操作,使用全精度浮点数。

参数:

  • params:计算参数结构体指针

  • src0:源张量0

  • src1:源张量1

  • dst:目标张量

返回值:无

ggml_compute_forward_conv_transpose_1d

static void ggml_compute_forward_conv_transpose_1d(const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst)

描述:计算一维卷积转置的前向传播操作。

参数:

  • params:计算参数结构体指针

  • src0:源张量0

  • src1:源张量1

  • dst:目标张量

返回值:无

GGML_TYPE_F16

类型:枚举值

描述:表示数据类型为半精度浮点数(float16)。

GGML_TYPE_F32

类型:枚举值

描述:表示数据类型为单精度浮点数(float32)。

GGML_TASK_INIT

类型:枚举值

描述:表示任务类型为初始化。

GGML_TASK_FINALIZE

类型:枚举值

描述:表示任务类型为结束。

GGML_OP_POOL_AVG

类型:枚举值

描述:表示池化操作类型为平均池化。

GGML_OP_POOL_MAX

类型:枚举值

描述:表示池化操作类型为最大池化。

GGML_OP_POOL_COUNT

类型:枚举值

描述:表示池化操作类型为计数池化。

GGML_TYPE_F32

类型:枚举值

描述:表示数据类型为单精度浮点数(float32)。

GGML_TYPE_F16

类型:枚举值

描述:表示数据类型为半精度浮点数(float16)。

GGML_TYPE_F32

类型:枚举值

描述:表示数据类型为单精度浮点数(float32)。

FLT_MAX

类型:常量

描述:表示单精度浮点数的最大值。

ggml_compute_params

描述:计算参数结构体,包含计算所需的各种参数。

字段 类型 描述
ith int 当前线程的索引。
nth int 总线程数。
type enum 任务类型,如初始化或结束。
wdata void* 工作数据指针。
wsize size_t 工作数据大小。

ggml_tensor

描述:张量结构体,表示多维数组。

字段 类型 描述
type enum 张量数据类型。
data void* 张量数据指针。
op_params void* 操作参数指针。
nb int* 每个维度字节数数组。
ne int64_t* 每个维度元素数数组。

ggml_compute_forward_im2col_f16

static void ggml_compute_forward_im2col_f16(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst)

描述:计算输入张量 src0 和 src1 的 im2col 操作,结果存储在 dst 中。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • src1:输入张量指针。

  • dst:输出张量指针。

返回值:无。

ggml_compute_forward_conv_transpose_2d

static void ggml_compute_forward_conv_transpose_2d(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst)

描述:计算前向卷积转置操作,根据输入参数和张量进行计算,将结果存储在目标张量中。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • src1:输入张量指针。

  • dst:输出张量指针。

返回值:无。

ggml_compute_forward_pool_1d

static void ggml_compute_forward_pool_1d(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst)

描述:计算一维池化操作。

参数:

  • params:计算参数结构体指针。

  • src0:输入张量指针。

  • dst:输出张量指针。

返回值:无。

ggml_compute_forward_pool_2d

static void ggml_compute_forward_pool_2d(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src,
    struct ggml_tensor * dst)

描述:计算 2D 池化的前向传播。

参数:

  • params:计算参数结构体指针。

  • src:输入张量指针。

  • dst:输出张量指针。

返回值:无。

ggml_compute_forward_upscale

static void ggml_compute_forward_upscale(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst)

描述:计算前向上采样。

参数:

  • params:计算参数结构体指针。

  • src0:源张量指针。

  • dst:目标张量指针。

返回值:无。

ggml_compute_forward_pad_f32

static void ggml_compute_forward_pad_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst)

描述:计算前向填充。

参数:

  • params:计算参数结构体指针。

  • src0:源张量指针。

  • dst:目标张量指针。

返回值:无。

请注意,上述函数均为静态函数,因此它们不是公开的API,而是内部实现的一部分。此外,代码中还包含了一些未定义的常量(如ne00, ne01, ne02, ne03, ne10, ne11, ne12, ne2, ne3, nb00, nb01, nb02, nb03, nb10, nb11, nb12, nb13, nb2, nb3等),这些常量在当前代码段中没有定义,可能需要在其他地方定义或在编译时通过宏定义提供。

GGML_TYPE_F32

类型:枚举值

描述:表示数据类型为32位浮点数。

GGML_SORT_ASC

类型:枚举值

描述:表示排序顺序为升序。

GGML_SORT_DESC

类型:枚举值

描述:表示排序顺序为降序。

GGML_TASK_INIT

类型:枚举值

描述:表示任务类型为初始化。

GGML_TASK_FINALIZE

类型:枚举值

描述:表示任务类型为结束。

GGML_SOFT_MAX_UNROLL

类型:整数常量

描述:表示在softmax计算中使用的向量长度。

GGML_SOFT_MAX_ACCELERATE

类型:宏定义

描述:表示是否启用softmax加速。

GGML_FP32_TO_FP16

类型:宏定义

描述:表示将32位浮点数转换为16位浮点数的操作。

GGML_FP16_TO_FP32

类型:宏定义

描述:表示将16位浮点数转换为32位浮点数的操作。

GGML_FP16_TO_FP32

类型:宏定义

描述:表示将16位浮点数转换为32位浮点数的操作。

GGML_FLASH_ATTN_EXP_FP16

类型:宏定义

描述:表示是否使用16位浮点数进行指数运算。

ggml_compute_params

描述:包含计算所需的各种参数,如任务类型、线程索引、线程总数等。

字段 类型 描述
type 枚举值 任务类型,如初始化或结束
ith int 线程索引
nth int 线程总数
wdata void* 工作数据指针

ggml_tensor

描述:表示一个张量,包含数据指针和维度信息。

字段 类型 描述
data void* 数据指针
type 枚举值 数据类型,如GGML_TYPE_F32
ne int64_t[] 各维度的大小
nb size_t[] 各维度的字节数

ggml_compute_forward_pad

void ggml_compute_forward_pad(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:根据输入参数和张量进行前向填充操作。

参数:

  • params:输入参数结构体指针。

  • src0:输入张量指针。

  • dst:输出张量指针。

返回值:无。

ggml_compute_forward_argsort_f32

void ggml_compute_forward_argsort_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:计算前向排序操作,针对GGML_TYPE_F32类型的张量。

参数:

  • params:输入参数结构体指针。

  • src0:输入张量指针。

  • dst:输出张量指针。

返回值:无。

ggml_compute_forward_argsort

void ggml_compute_forward_argsort(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:计算前向排序操作。

参数:

  • params:输入参数结构体指针。

  • src0:输入张量指针。

  • dst:输出张量指针。

返回值:无。

ggml_compute_forward_flash_attn_f32

void ggml_compute_forward_flash_attn_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * q,
    const struct ggml_tensor * k,
    const struct ggml_tensor * v,
    const bool masked,
    struct ggml_tensor * dst);

描述:计算前向闪存注意力,使用单精度浮点数。

参数:

  • params:输入参数结构体指针。

  • q:查询张量指针。

  • k:键张量指针。

  • v:值张量指针。

  • masked:是否使用掩码。

  • dst:目标张量指针。

返回值:无。

ggml_compute_forward_flash_attn_f16

void ggml_compute_forward_flash_attn_f16(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * q,
    const struct ggml_tensor * k,
    const struct ggml_tensor * v,
    const bool masked,
    struct ggml_tensor * dst);

描述:计算前向闪存注意力,使用半精度浮点数。

参数:

  • params:输入参数结构体指针。

  • q:查询张量指针。

  • k:键张量指针。

  • v:值张量指针。

  • masked:是否使用掩码。

  • dst:目标张量指针。

返回值:无。

GGML_VEC_DOT_UNROLL

类型:整数

描述:用于控制向量点积操作的展开次数,影响循环的展开方式。

ggml_compute_params

描述:包含计算参数的结构体,用于在计算过程中传递参数。

字段 类型 描述
ith int 当前线程的索引
nth int 总线程数
type enum ggml_task_type 任务类型,如初始化、计算、结束等
wdata void* 工作数据指针

ggml_tensor

描述:表示张量的结构体,包含张量的数据和元信息。

字段 类型 描述
data void* 张量数据的指针
ne int64_t 张量的元素数量
nb size_t 张量的块大小
type enum ggml_type 张量的数据类型
op_params void* 操作参数指针

ggml_compute_forward_flash_attn

void ggml_compute_forward_flash_attn(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * q,
    const struct ggml_tensor * k,
    const struct ggml_tensor * v,
    const bool masked,
    struct ggml_tensor * dst);

描述:计算前向闪存注意力操作的函数。

参数:

  • params:计算参数结构体。

  • q:查询张量。

  • k:键张量。

  • v:值张量。

  • masked:是否使用掩码。

  • dst:目标张量。

ggml_compute_forward_flash_ff

void ggml_compute_forward_flash_ff(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * a,
    const struct ggml_tensor * b0,
    const struct ggml_tensor * b1,
    const struct ggml_tensor * c0,
    const struct ggml_tensor * c1,
    struct ggml_tensor * dst);

描述:计算前向闪存前馈操作的函数。

参数:

  • params:计算参数结构体。

  • a:输入张量。

  • b0:权重张量。

  • b1:偏置张量。

  • c0:投影权重张量。

  • c1:投影偏置张量。

  • dst:目标张量。

ggml_compute_forward_flash_attn_back

void ggml_compute_forward_flash_attn_back(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * q,
    const struct ggml_tensor * k,
    const struct ggml_tensor * v,
    const struct ggml_tensor * d,
    const bool masked,
    struct ggml_tensor * dst);

描述:计算前向闪存注意力反向传播的函数。

参数:

  • params:计算参数结构体。

  • q:查询张量。

  • k:键张量。

  • v:值张量。

  • d:目标张量。

  • masked:是否使用掩码。

  • dst:目标张量。

ggml_compute_forward_win_part_f32

void ggml_compute_forward_win_part_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:计算前向窗口部分的函数,特定于F32类型。

参数:

  • params:计算参数结构体。

  • src0:源张量。

  • dst:目标张量。

  • 无显式定义的常量。

  • 无显式定义的结构体。

  • ggml_compute_forward_win_part
void ggml_compute_forward_win_part(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:根据输入张量的类型进行不同的前向窗口部分化操作。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

  • ggml_compute_forward_win_unpart_f32
static void ggml_compute_forward_win_unpart_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:计算前向窗口非部分化操作(F32 类型)。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

  • ggml_compute_forward_win_unpart
static void ggml_compute_forward_win_unpart(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:根据 src0 的类型进行不同的前向窗口非部分化操作。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

  • ggml_compute_forward_unary
static void ggml_compute_forward_unary(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:根据不同的一元操作类型进行不同的前向传播计算。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

  • ggml_compute_forward_get_rel_pos
static void ggml_compute_forward_get_rel_pos(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst);

描述:计算前向相对位置,根据输入张量 src0 的类型进行不同的处理。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

返回值:无。

  • ggml_compute_forward_add_rel_pos
static void ggml_compute_forward_add_rel_pos(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    const struct ggml_tensor * src2,
    struct ggml_tensor * dst);

描述:计算前向传播时,根据输入张量 src0 的类型进行不同的处理。

参数:

  • params:计算参数。

  • src0:输入张量。

  • src1:输入张量。

  • src2:输入张量。

  • dst:输出张量。

返回值:无。

  • ggml_compute_forward_map_unary
static void ggml_compute_forward_map_unary(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    struct ggml_tensor * dst,
    const ggml_unary_op_f32_t fun);

描述:对输入张量 src0 进行一元操作。

参数:

  • params:计算参数。

  • src0:输入张量。

  • dst:输出张量。

  • fun:一元操作函数。

返回值:无。

  • ggml_compute_forward_map_binary
static void ggml_compute_forward_map_binary(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst,
    const ggml_binary_op_f32_t fun);

描述:计算二进制操作的前向映射。

参数:

  • params:计算参数。

  • src0:输入张量。

  • src1:输入张量。

  • dst:输出张量。

  • fun:二进制操作函数。

返回值:无。

  • ggml_compute_forward_map_custom1_f32
static void ggml_compute_forward_map_custom1_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * a,
    struct ggml_tensor * dst,
    const ggml_custom1_op_f32_t fun);

描述:计算自定义操作1的前向映射(F32 类型)。

参数:

  • params:计算参数。

  • a:输入张量。

  • dst:输出张量。

  • fun:自定义操作1函数。

返回值:无。

  • ggml_compute_forward_map_custom2_f32
static void ggml_compute_forward_map_custom2_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * a,
    const struct ggml_tensor * b,
    struct ggml_tensor * dst,
    const ggml_custom2_op_f32_t fun);

描述:计算自定义操作2的前向映射(F32 类型)。

参数:

  • params:计算参数。

  • a:输入张量。

  • b:输入张量。

  • dst:输出张量。

  • fun:自定义操作2函数。

返回值:无。

  • ggml_compute_forward_map_custom3_f32
static void ggml_compute_forward_map_custom3_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * a,
    const struct ggml_tensor * b,
    struct ggml_tensor * dst,
    const ggml_custom3_op_f32_t fun);

描述:计算自定义操作3的前向映射(F32 类型)。

参数:

  • params:计算参数。

  • a:输入张量。

  • b:输入张量。

  • dst:输出张量。

  • fun:自定义操作3函数。

返回值:无。

请注意,上述函数列表中未包含所有函数,因为代码段中包含了一些未完整定义的函数(如ggml_compute_forward_get_rel_posggml_compute_forward_map_custom3_f32),这些函数的定义在代码段中被截断了。此外,代码段中没有显式定义的常量和结构体。

GGML_TASK_INIT

类型:整数常量

描述:表示任务类型为初始化。

GGML_TASK_FINALIZE

类型:整数常量

描述:表示任务类型为结束。

GGML_OP_NONE

类型:整数常量

描述:表示张量的操作类型为无操作。

GGML_HASHTABLE_FULL

类型:整数常量

描述:表示哈希表已满。

GGML_HASHTABLE_ALREADY_EXISTS

类型:整数常量

描述:表示哈希表中已存在该元素。

struct ggml_compute_params

描述:计算参数结构体

字段 类型 描述
type int 任务类型
ith int 当前线程的索引
nth int 线程总数
wdata void* 工作数据指针
wsize size_t 工作数据大小

struct ggml_tensor

描述:张量结构体

字段 类型 描述
op_params void* 操作参数指针
data void* 数据指针
src struct ggml_tensor** 源张量指针数组
backend int 后端类型
op int 操作类型
ne int* 维度大小数组
nb int* 步长数组

struct ggml_hash_set

描述:哈希集合结构体

字段 类型 描述
size size_t 大小
keys struct ggml_tensor** 键指针数组

struct hash_map

描述:哈希映射结构体

字段 类型 描述
set struct ggml_hash_set 哈希集合
vals struct ggml_tensor** 值指针数组

ggml_compute_forward_map_custom3

void ggml_compute_forward_map_custom3(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * a,
    const struct ggml_tensor * b,
    const struct ggml_tensor * c,
    struct ggml_tensor * dst);

描述:计算自定义操作的前向映射,输入参数为指向参数结构体的指针,以及三个张量和一个目标张量。

参数:

  • params:指向计算参数结构体的指针

  • a:指向第一个张量的指针

  • b:指向第二个张量的指针

  • c:指向第三个张量的指针

  • dst:指向目标张量的指针

返回值:无

ggml_compute_forward_cross_entropy_loss_f32

void ggml_compute_forward_cross_entropy_loss_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    struct ggml_tensor * dst);

描述:计算交叉熵损失的前向计算(单精度浮点数版本)。

参数:

  • params:指向计算参数结构体的指针

  • src0:指向输入张量1的指针

  • src1:指向输入张量2的指针

  • dst:指向输出张量的指针

返回值:无

ggml_compute_forward_cross_entropy_loss_back_f32

void ggml_compute_forward_cross_entropy_loss_back_f32(
    const struct ggml_compute_params * params,
    const struct ggml_tensor * src0,
    const struct ggml_tensor * src1,
    const struct ggml_tensor * opt0,
    struct ggml_tensor * dst);

描述:计算前向交叉熵损失的反向传播,使用单精度浮点数。

参数:

  • params:指向计算参数结构体的指针

  • src0:指向输入张量1的指针

  • src1:指向输入张量2的指针

  • opt0:指向优化张量的指针

  • dst:指向输出张量的指针

返回值:无

ggml_compute_forward

void ggml_compute_forward(struct ggml_compute_params * params, struct ggml_tensor * tensor);

描述:执行张量的前向计算。

参数:

  • params:指向计算参数结构体的指针

  • tensor:指向要计算的张量的指针

返回值:无

ggml_hash_size

size_t ggml_hash_size(size_t min_sz);

描述:计算大于等于给定最小值的最小素数。

参数:

  • min_sz:给定的最小值

返回值:大于等于给定最小值的最小素数

ggml_hash

size_t ggml_hash(const void * p);

描述:计算哈希值。

参数:

  • p:要计算哈希值的指针

返回值:哈希值

ggml_hash_find

size_t ggml_hash_find(const struct ggml_hash_set hash_set, struct ggml_tensor * key);

描述:查找哈希表中的元素。

参数:

  • hash_set:哈希集合

  • key:要查找的键

返回值:元素在哈希表中的索引,如果哈希表已满则返回GGML_HASHTABLE_FULL

ggml_hash_contains

bool ggml_hash_contains(struct ggml_hash_set hash_set, struct ggml_tensor * key);

描述:检查哈希表中是否包含指定元素。

参数:

  • hash_set:哈希集合

  • key:要检查的键

返回值:如果包含则返回true,否则返回false

ggml_hash_insert

size_t ggml_hash_insert(struct ggml_hash_set hash_set, struct ggml_tensor * key);

描述:向哈希表中插入元素。

参数:

  • hash_set:哈希集合

  • key:要插入的键

返回值:插入元素的索引,如果元素已存在则返回GGML_HASHTABLE_ALREADY_EXISTS

ggml_hash_find_or_insert

size_t ggml_hash_find_or_insert(struct ggml_hash_set hash_set, struct ggml_tensor * key);

描述:在哈希集合中查找给定键的索引,如果不存在则插入并返回索引。

参数:

  • hash_set:哈希集合

  • key:要查找或插入的键

返回值:键的索引

ggml_hash_set_new

struct ggml_hash_set ggml_hash_set_new(size_t size);

描述:创建新的哈希集合。

参数:

  • size:哈希集合的大小

返回值:新创建的哈希集合

ggml_hash_set_free

void ggml_hash_set_free(struct ggml_hash_set hash_set);

描述:释放哈希集合占用的内存。

参数:

  • hash_set:要释放的哈希集合

返回值:无

ggml_new_hash_map

struct hash_map * ggml_new_hash_map(size_t size);

描述:创建新的哈希映射。

参数:

  • size:哈希映射的大小

返回值:新创建的哈希映射

ggml_hash_map_free

void ggml_hash_map_free(struct hash_map * map);

描述:释放哈希映射占用的内存。

参数:

  • map:要释放的哈希映射

返回值:无

GGML_MAX_SRC

类型:整数

描述:表示张量源的最大数量。

GGML_MAX_DIMS

类型:整数

描述:表示张量的最大维度数。

GGML_MAX_OP_PARAMS

类型:整数

描述:表示操作参数的最大数量。

GGML_MAX_NAME

类型:整数

描述:表示节点名称的最大长度。

GGML_HASHTABLE_FULL

类型:整数

描述:表示哈希表已满的标志。

GGML_HASHTABLE_ALREADY_EXISTS

类型:整数

描述:表示哈希表中键已存在的标志。

GGML_CGRAPH_EVAL_ORDER_LEFT_TO_RIGHT

类型:整数

描述:表示计算图的评估顺序从左到右。

GGML_CGRAPH_EVAL_ORDER_RIGHT_TO_LEFT

类型:整数

描述:表示计算图的评估顺序从右到左。

GGML_DEFAULT_GRAPH_SIZE

类型:整数

描述:表示默认的计算图大小。

GGML_OBJECT_SIZE

类型:整数

描述:表示对象的大小。

GGML_PAD

类型:函数

描述:用于内存对齐的函数。

GGML_MEM_ALIGN

类型:整数

描述:表示内存对齐的大小。

struct ggml_tensor

描述:表示一个张量,包含以下字段:

字段 类型 描述
is_param 布尔 表示张量是否为参数
extra 未知 额外的信息
nb 未知 张量的维度信息
src 指针数组 指向源张量的指针数组
view_src 指针 指向视图源张量的指针
view_offs 未知 视图偏移量
op 未知 操作类型
grad 指针 指向梯度张量的指针
is_param 布尔 是否为参数节点
name 字符数组 节点名称
op_params 未知 操作参数

struct ggml_cgraph

描述:表示一个计算图,包含以下字段:

字段 类型 描述
size 整数 计算图的大小
n_nodes 整数 节点数量
n_leafs 整数 叶子节点数量
nodes 指针数组 指向节点张量的指针数组
grads 指针数组 指向梯度张量的指针数组
leafs 指针数组 指向叶子节点张量的指针数组
hash_table 结构体 哈希表
order 整数 评估顺序
perf_runs 整数 性能运行次数
perf_cycles 整数 性能周期数
perf_time_us 整数 性能时间(微秒)

struct hash_map

描述:表示一个哈希映射,包含以下字段:

字段 类型 描述
set 结构体 哈希集合
keys 指针数组 指向键的指针数组
vals 指针数组 指向值的指针数组

struct ggml_hash_set

描述:表示一个哈希集合,包含以下字段:

字段 类型 描述
size 整数 集合大小
keys 指针数组 指向键的指针数组

ggml_recompute_graph_node

struct ggml_tensor * ggml_recompute_graph_node(struct ggml_context * ctx, struct ggml_cgraph * graph, struct hash_map * replacements, struct ggml_tensor * node)

描述:重新计算图节点,根据给定的上下文、图、替换哈希映射和张量节点,返回重新计算后的张量。

ggml_build_backward_gradient_checkpointing

void ggml_build_backward_gradient_checkpointing(struct ggml_context * ctx, struct ggml_cgraph * gf, struct ggml_cgraph * gb, struct ggml_cgraph * gb_tmp, struct ggml_tensor ** checkpoints, int n_checkpoints)

描述:构建反向梯度检查点,接受上下文、前向图、反向图、临时反向图、检查点张量数组和检查点数量作为参数,执行反向梯度检查点的构建。

ggml_add_or_set

static struct ggml_tensor * ggml_add_or_set(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, struct ggml_hash_set zero_table)

描述:根据输入的 a 是否在 zero_table 中来决定返回 b 或者调用 ggml_add_impl 函数。

ggml_acc_or_set

static struct ggml_tensor * ggml_acc_or_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, struct ggml_hash_set zero_table)

描述:根据输入的 a 是否在 zero_table 中来决定返回 a_zero 与 b 的累加结果或者调用 ggml_acc_impl 函数。

ggml_add1_or_set

static struct ggml_tensor * ggml_add1_or_set(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, struct ggml_hash_set zero_table)

描述:根据输入的 a 是否在 zero_table 中来决定返回 b 的重复值或者调用 ggml_add1_impl 函数。

ggml_sub_or_set

static struct ggml_tensor * ggml_sub_or_set(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, struct ggml_hash_set zero_table)

描述:根据输入的 a 是否在 zero_table 中来决定返回 b 的负值或者调用 ggml_sub_impl 函数。

ggml_compute_backward

static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor * tensor, struct ggml_hash_set zero_table)

描述:计算反向传播,检查梯度是否与张量的形状相同。

ggml_visit_parents

static void ggml_visit_parents(struct ggml_cgraph * cgraph, struct ggml_tensor * node)

描述:访问父节点,构建计算图的前向传播。

ggml_build_forward_impl

static void ggml_build_forward_impl(struct ggml_cgraph * cgraph, struct ggml_tensor * tensor, bool expand)

描述:构建前向传播的实现,接受计算图和张量作为参数。

ggml_build_forward_expand

void ggml_build_forward_expand(struct ggml_cgraph * cgraph, struct ggml_tensor * tensor)

描述:构建前向传播的函数,接受计算图和张量作为参数。

ggml_build_backward_expand

void ggml_build_backward_expand(struct ggml_context * ctx, struct ggml_cgraph * gf, struct ggml_cgraph * gb, bool keep)

描述:构建反向传播的函数,接受上下文、梯度图、反向梯度图和是否保留梯度的标志作为参数。

ggml_graph_nbytes

static size_t ggml_graph_nbytes(size_t size, bool grads)

描述:计算图占用的内存大小。

ggml_graph_overhead_custom

size_t ggml_graph_overhead_custom(size_t size, bool grads)

描述:计算图对象的额外开销,包括对象大小和内存对齐。

ggml_graph_overhead

size_t ggml_graph_overhead(void)

描述:计算图对象的额外开销,默认不包括梯度。

ggml_new_graph_custom

struct ggml_cgraph * ggml_new_graph_custom(struct ggml_context * ctx, size_t size, bool grads)

描述:创建自定义大小的计算图对象。

ggml_new_graph

struct ggml_cgraph * ggml_new_graph(struct ggml_context * ctx)

描述:创建默认大小的计算图对象。

ggml_graph_view

struct ggml_cgraph ggml_graph_view(struct ggml_cgraph * cgraph0, int i0, int i1)

描述:创建计算图对象的视图。

ggml_graph_cpy

void ggml_graph_cpy(struct ggml_cgraph * src, struct ggml_cgraph * dst)

描述:复制一个图结构,将源图结构的内容复制到目标图结构中。

ggml_graph_dup

struct ggml_cgraph * ggml_graph_dup(struct ggml_context * ctx, struct ggml_cgraph * cgraph)

描述:复制一个图结构,并返回复制后的图结构指针。

ggml_graph_reset

void ggml_graph_reset(struct ggml_cgraph * cgraph)

描述:重置图结构的梯度为零。

ggml_graph_clear

void ggml_graph_clear(struct ggml_cgraph * cgraph)

描述:清空图结构的叶子节点数、节点数和访问哈希表的键。

GGML_DEFAULT_N_THREADS

类型:int

描述:默认的线程数量。

CACHE_LINE_SIZE

类型:size_t

描述:缓存行的大小。

ggml_cgraph

描述:计算图结构体。

字段 类型 描述
n_leafs int 叶子节点数量
n_nodes int 节点数量
visited_hash_table struct 访问哈希表

ggml_compute_state_shared

描述:共享的计算状态结构体。

字段 类型 描述
cgraph const struct ggml_cgraph * 指向计算图的指针
cplan const struct ggml_cplan * 指向计算计划的指针
perf_node_start_cycles int64_t 节点性能统计开始时的 CPU 周期数
perf_node_start_time_us int64_t 节点性能统计开始时的时间戳(微秒)
n_threads int 线程数
n_active atomic_int 活跃线程数
node_n atomic_int 活跃图节点
abort_callback bool (*)(void *) 中止回调函数
abort_callback_data void * 中止回调函数的数据

ggml_compute_state

描述:计算状态结构体。

字段 类型 描述
thrd ggml_thread_t 线程
ith int 线程索引
shared struct ggml_compute_state_shared * 指向共享计算状态的指针

ggml_graph_clear

void ggml_graph_clear(struct ggml_cgraph * cgraph)

描述:清除计算图。

参数:

  • cgraph:指向计算图的指针。

ggml_graph_compute_thread

thread_ret_t ggml_graph_compute_thread(void * data)

描述:计算线程函数。

参数:

  • data:指向计算状态的指针。

返回值:线程退出状态。

ggml_graph_plan

struct ggml_cplan ggml_graph_plan(struct ggml_cgraph * cgraph, int n_threads)

描述:为图计划分配线程。

参数:

  • cgraph:指向计算图的指针。

  • n_threads:线程数。

返回值:图计划结构体。

ggml_graph_compute

int ggml_graph_compute(struct ggml_cgraph * cgraph, struct ggml_cplan * cplan)

描述:计算图的计算函数。

参数:

  • cgraph:指向计算图的指针。

  • cplan:指向计算计划的指针。

返回值:图计算的状态。

ggml_graph_compute_with_ctx

void ggml_graph_compute_with_ctx(struct ggml_context * ctx, struct ggml_cgraph * cgraph, int n_threads)

描述:使用上下文和计算图计算结果。

参数:

  • ctx:指向上下文的指针。

  • cgraph:指向计算图的指针。

  • n_threads:线程数。

ggml_graph_get_tensor

struct ggml_tensor * ggml_graph_get_tensor(struct ggml_cgraph * cgraph, const char * name)

描述:获取计算图中指定名称的张量。

参数:

  • cgraph:指向计算图的指针。

  • name:张量的名称。

返回值:指向张量的指针,如果未找到则返回 NULL。

ggml_graph_export_leaf

static void ggml_graph_export_leaf(const struct ggml_tensor * tensor, FILE * fout)

描述:导出叶子节点的张量信息到文件。

参数:

  • tensor:指向张量的指针。

  • fout:输出文件指针。

由于提供的代码段中没有定义任何常量、结构体或公开函数,我将基于代码中的注释和上下文信息来提取相关信息。请注意,这些信息是基于代码的上下文推断得出的,并非直接从代码中提取。

GGML_FILE_MAGIC

类型:未指定(可能是整数或字符串)

描述:文件魔数,用于标识文件格式。

GGML_FILE_VERSION

类型:未指定(可能是整数)

描述:文件版本号。

ggml_tensor

描述:表示一个张量的结构体。

字段 类型 描述
type 未指定 张量的类型
op 未指定 张量的操作类型
ne const int64_t* 张量的元素数量数组
nb const size_t* 张量的块数量数组
data void* 张量的数据指针
name const char* 张量的名称

ggml_cgraph

描述:表示计算图的结构体。

字段 类型 描述
n_leafs int 叶子节点的数量
n_nodes int 节点的数量
leafs struct ggml_tensor** 叶子节点的数组
nodes struct ggml_tensor** 节点的数组

ggml_graph_export

void ggml_graph_export(const struct ggml_cgraph * cgraph, const char * fname);

描述:导出计算图到文件的函数。

参数:

  • cgraph:指向计算图的指针。

  • fname:文件名。

返回值:无。

ggml_graph_import

struct ggml_cgraph * ggml_graph_import(const char * fname, struct ggml_context ** ctx_data, struct ggml_context ** ctx_eval);

描述:从文件导入计算图的函数。

参数:

  • fname:文件名。

  • ctx_data:指向数据上下文的指针。

  • ctx_eval:指向评估上下文的指针。

返回值:指向导入的计算图的指针。

ggml_graph_print

void ggml_graph_print(const struct ggml_cgraph * cgraph);

描述:打印计算图信息的函数。

参数:

  • cgraph:指向计算图的指针。

返回值:无。

ggml_graph_dump_dot

void ggml_graph_dump_dot(const struct ggml_cgraph * gb, const struct ggml_cgraph * gf, const char * filename);

描述:将计算图的结构以及关系输出到DOT文件中的函数。

参数:

  • gb:指向基础计算图的指针。

  • gf:指向梯度计算图的指针。

  • filename:输出文件名。

返回值:无。

ggml_opt_set_params

static void ggml_opt_set_params(int np, struct ggml_tensor * const ps[], const float * x);

描述:设置参数的优化器函数,将参数数组中的值设置到对应的张量中。

参数:

  • np:参数的数量。

  • ps:指向参数张量的数组。

  • x:指向参数值数组的指针。

返回值:无。

ggml_opt_get_params

static void ggml_opt_get_params(int np, struct ggml_tensor * const ps[], float * x);

描述:获取参数的优化器函数,将张量中的值获取到参数数组中。

参数:

  • np:参数的数量。

  • ps:指向参数张量的数组。

  • x:指向参数值数组的指针。

返回值:无。

ggml_opt_get_grad

static void ggml_opt_get_grad(int np, struct ggml_tensor * const ps[], float * g);

描述:获取梯度的优化器函数,将张量中的梯度值获取到梯度数组中。

参数:

  • np:参数的数量。

  • ps:指向参数张量的数组。

  • g:指向梯度值数组的指针。

返回值:无。

ggml_opt_acc_grad

static void ggml_opt_acc_grad(int np, struct ggml_tensor * const ps[], float * g, float scale);

描述:累积梯度的优化器函数,将张量中的梯度值乘以比例后累积到梯度数组中。

参数:

  • np:参数的数量。

  • ps:指向参数张量的数组。

  • g:指向梯度值数组的指针。

  • scale:累积梯度时的比例因子。

返回值:无。

ggml_opt_adam

static enum ggml_opt_result ggml_opt_adam(struct ggml_context * ctx, struct ggml_opt_context * opt, struct ggml_opt_params params, struct ggml_tensor * f, struct ggml_cgraph * gf, struct ggml_cgraph * gb, ggml_opt_callback callback, void * callback_data);

描述:使用AdamW优化算法进行优化的函数。

参数:

  • ctx:上下文指针。

  • opt:优化器上下文指针。

  • params:优化器参数。

  • f:目标函数张量。

  • gf:梯度计算图。

  • gb:基础计算图。

  • callback:回调函数。

  • callback_data:回调函数数据。

返回值:优化结果枚举值。

请注意,这些信息是基于代码的上下文推断得出的,并非直接从代码中提取。如果代码中有具体的常量、结构体或公开函数的定义,请提供相关代码段,以便提供更准确的提取和总结。

GGML_MAX_PARAMS

类型:整数常量

描述:定义了可以优化的参数的最大数量。

MAX

类型:宏

描述:用于返回两个参数中的最大值。

ggml_tensor

描述:用于存储张量数据的结构体。

字段 类型 描述
data 指针 指向张量数据的指针

ggml_lbfgs_iteration_data

描述:用于存储 L-BFGS 迭代数据的结构体。

字段 类型 描述
alpha float 步长
ys float y 和 s 的内积
s float* 存储最近 m 步的 s 向量
y float* 存储最近 m 步的 y 向量

ggml_is_scalar

bool ggml_is_scalar(struct ggml_tensor * f);

描述:检查给定的张量是否为标量。

ggml_nelements

int64_t ggml_nelements(struct ggml_tensor * f);

描述:计算给定张量中的元素数量。

ggml_opt_init

void ggml_opt_init(struct ggml_context * ctx, struct ggml_opt_context * opt, struct ggml_opt_params params, int64_t nx);

描述:初始化优化器上下文。

参数:

  • ctx:上下文指针。

  • opt:优化器上下文指针。

  • params:优化参数。

  • nx:变量 x 的维度。

ggml_graph_plan

struct ggml_cplan ggml_graph_plan(struct ggml_cgraph * gb, int n_threads);

描述:为计算图创建计算计划。

参数:

  • gb:反向传播计算图。

  • n_threads:线程数量。

ggml_new_object

struct ggml_object * ggml_new_object(struct ggml_context * ctx, enum ggml_object_type type, size_t size);

描述:创建一个新的 GGML 对象。

参数:

  • ctx:上下文指针。

  • type:对象类型。

  • size:对象大小。

ggml_set_zero

void ggml_set_zero(struct ggml_tensor * t);

描述:将张量设置为零。

ggml_graph_compute

void ggml_graph_compute(struct ggml_cgraph * gb, struct ggml_cplan * cplan);

描述:执行计算图的计算。

参数:

  • gb:计算图。

  • cplan:计算计划。

ggml_opt_acc_grad

void ggml_opt_acc_grad(int np, struct ggml_tensor * ps[], float * g, float accum_norm);

描述:累积梯度。

参数:

  • np:参数数量。

  • ps:参数数组。

  • g:梯度数组。

  • accum_norm:累积归一化系数。

ggml_get_f32_1d

float ggml_get_f32_1d(struct ggml_tensor * t, int i);

描述:获取一维张量的元素值。

参数:

  • t:张量。

  • i:索引。

ggml_vec_dot_f32

void ggml_vec_dot_f32(int n, float * result, const float * a, const float * b);

描述:计算两个向量的点积。

参数:

  • n:向量长度。

  • result:结果指针。

  • a:第一个向量。

  • b:第二个向量。

ggml_vec_norm_f32

void ggml_vec_norm_f32(int n, float * result, const float * v);

描述:计算向量的范数。

参数:

  • n:向量长度。

  • result:结果指针。

  • v:向量。

ggml_vec_norm_inv_f32

void ggml_vec_norm_inv_f32(int n, float * result, const float * v);

描述:计算向量范数的倒数。

参数:

  • n:向量长度。

  • result:结果指针。

  • v:向量。

ggml_vec_neg_f32

void ggml_vec_neg_f32(int n, float * result, const float * v);

描述:计算向量的负值。

参数:

  • n:向量长度。

  • result:结果指针。

  • v:向量。

ggml_opt_default_params

struct ggml_opt_params ggml_opt_default_params(enum ggml_opt_type type);

描述:返回默认的优化参数结构体,根据不同的优化类型。

参数:

  • type:优化类型。

ggml_opt

enum ggml_opt_result ggml_opt(struct ggml_context * ctx, struct ggml_opt_params params, struct ggml_tensor * f);

描述:执行优化函数。

参数:

  • ctx:上下文指针。

  • params:优化参数。

  • f:目标函数张量。

ggml_opt_resume

enum ggml_opt_result ggml_opt_resume(struct ggml_context * ctx, struct ggml_opt_context * opt, struct ggml_tensor * f);

描述:恢复优化过程,构建前向和后向计算图。

参数:

  • ctx:上下文指针。

  • opt:优化器上下文指针。

  • f:目标函数张量。

ggml_opt_resume_g

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);

描述:恢复优化过程,构建前向和后向计算图,并执行优化。

参数:

  • ctx:上下文指针。

  • opt:优化器上下文指针。

  • f:目标函数张量。

  • gf:前向传播计算图。

  • gb:反向传播计算图。

  • callback:优化回调函数。

  • callback_data:回调函数数据。

请注意,上述函数和结构体的描述是基于提供的代码片段提取的,可能不包含所有细节,且可能需要根据完整的代码库进行调整。

QK4_0

类型:未定义

描述:用于量化函数中的块大小,确保k是QK4_0的整数倍。

QK4_1

类型:未定义

描述:用于量化函数中的块大小,确保k是QK4_1的整数倍。

QK5_0

类型:未定义

描述:用于量化函数中的块大小,确保k是QK5_0的整数倍。

QK5_1

类型:未定义

描述:用于量化函数中的块大小,确保k是QK5_1的整数倍。

QK8_0

类型:未定义

描述:用于量化函数中的块大小,确保k是QK8_0的整数倍。

GGUF_MAGIC

类型:字符数组

描述:GGUF文件的魔数,用于识别文件格式。

GGUF_VERSION

类型:未定义

描述:GGUF文件的版本号。

GGUF_DEFAULT_ALIGNMENT

类型:未定义

描述:GGUF文件的默认对齐方式。

gguf_str

描述:用于存储字符串的结构体。

字段 类型 描述
n uint64_t 字符串长度
data char* 字符串数据

gguf_value

描述:联合体,用于存储不同类型的值。

字段 类型 描述
uint8 uint8_t 8位无符号整数
int8 int8_t 8位有符号整数
uint16 uint16_t 16位无符号整数
int16 int16_t 16位有符号整数
uint32 uint32_t 32位无符号整数
int32 int32_t 32位有符号整数
float32 float 32位浮点数
uint64 uint64_t 64位无符号整数
int64 int64_t 64位有符号整数
float64 double 64位浮点数
bool_ bool 布尔值
str struct gguf_str 字符串结构体
arr struct 包含类型、数量和数据的结构体

gguf_kv

描述:键值对结构体。

字段 类型 描述
key struct gguf_str
type enum gguf_type 类型
value union gguf_value

gguf_header

描述:GGUF文件头部结构体。

字段 类型 描述
magic char[4] 魔数
version uint32_t 版本号
n_tensors uint64_t 张量数量
n_kv uint64_t 键值对数量

gguf_tensor_info

描述:张量信息结构体。

字段 类型 描述
name struct gguf_str 名称
n_dims uint32_t 维度数量
ne uint64_t[GGML_MAX_DIMS] 每个维度的元素数量
type enum ggml_type 类型
offset uint64_t 偏移量
data const void* 数据
size size_t 大小

gguf_context

描述:GGUF上下文结构体。

字段 类型 描述
header struct gguf_header 头部信息
kv struct gguf_kv* 键值对数组
infos struct gguf_tensor_info* 张量信息数组
alignment size_t 对齐
offset size_t 偏移量
size size_t 大小
data void* 数据

ggml_opt_adam

enum ggml_opt_result ggml_opt_adam(struct ggml_context * ctx, struct ggml_opt * opt, struct ggml_opt_params * params, struct ggml_cgraph * f, struct ggml_cgraph * gf, struct ggml_cgraph * gb, ggml_opt_callback callback, void * callback_data)

描述:实现Adam优化算法。

参数:

  • ctx:ggml_context指针。

  • opt:ggml_opt指针。

  • params:ggml_opt_params指针。

  • f:ggml_cgraph指针。

  • gf:ggml_cgraph指针。

  • gb:ggml_cgraph指针。

  • callback:ggml_opt_callback函数指针。

  • callback_data:回调数据。

返回值:ggml_opt_result枚举值。

ggml_opt_lbfgs

enum ggml_opt_result ggml_opt_lbfgs(struct ggml_context * ctx, struct ggml_opt * opt, struct ggml_opt_params * params, struct ggml_cgraph * f, struct ggml_cgraph * gf, struct ggml_cgraph * gb, ggml_opt_callback callback, void * callback_data)

描述:实现LBFGS优化算法。

参数:

  • ctx:ggml_context指针。

  • opt:ggml_opt指针。

  • params:ggml_opt_params指针。

  • f:ggml_cgraph指针。

  • gf:ggml_cgraph指针。

  • gb:ggml_cgraph指针。

  • callback:ggml_opt_callback函数指针。

  • callback_data:回调数据。

返回值:ggml_opt_result枚举值。

ggml_quantize_q4_0

size_t ggml_quantize_q4_0(const float * src, void * dst, int n, int k, int64_t * hist)

描述:将浮点数数组量化为Q4_0类型的数据。

参数:

  • src:源浮点数数组。

  • dst:目标地址。

  • n:数据量。

  • k:块大小。

  • hist:直方图。

返回值:量化后的数据大小。

ggml_quantize_q4_1

size_t ggml_quantize_q4_1(const float * src, void * dst, int n, int k, int64_t * hist)

描述:将浮点数数组量化为Q4_1类型的数据。

参数:

  • src:源浮点数数组。

  • dst:目标地址。

  • n:数据量。

  • k:块大小。

  • hist:直方图。

返回值:量化后的数据大小。

ggml_quantize_q5_0

size_t ggml_quantize_q5_0(const float * src, void * dst, int n, int k, int64_t * hist)

描述:将浮点数数组量化为Q5_0类型的数据。

参数:

  • src:源浮点数数组。

  • dst:目标地址。

  • n:数据量。

  • k:块大小。

  • hist:直方图。

返回值:量化后的数据大小。

ggml_quantize_q5_1

size_t ggml_quantize_q5_1(const float * src, void * dst, int n, int k, int64_t * hist)

描述:将浮点数数组量化为Q5_1类型的数据。

参数:

  • src:源浮点数数组。

  • dst:目标地址。

  • n:数据量。

  • k:块大小。

  • hist:直方图。

返回值:量化后的数据大小。

ggml_quantize_q8_0

size_t ggml_quantize_q8_0(const float * src, void * dst, int n, int k, int64_t * hist)

描述:将浮点数数组量化为Q8_0类型的数据。

参数:

  • src:源浮点数数组。

  • dst:目标地址。

  • n:数据量。

  • k:块大小。

  • hist:直方图。

返回值:量化后的数据大小。

ggml_quantize_chunk

size_t ggml_quantize_chunk(enum ggml_type type, const float * src, void * dst, int start, int n, int64_t * hist)

描述:对指定类型的输入数组进行量化。

参数:

  • type:量化类型。

  • src:源浮点数数组。

  • dst:目标地址。

  • start:起始位置。

  • n:数据量。

  • hist:直方图。

返回值:量化后的数据大小。

gguf_fread_el

static bool gguf_fread_el(FILE * file, void * dst, size_t size, size_t * offset)

描述:从文件中读取指定大小的数据到目标地址,并更新偏移量。

参数:

  • file:文件指针。

  • dst:目标地址。

  • size:数据大小。

  • offset:偏移量指针。

返回值:是否成功读取指定大小的数据。

gguf_fread_str

static bool gguf_fread_str(FILE * file, struct gguf_str * p, size_t * offset)

描述:从文件中读取字符串结构体gguf_str,并更新偏移量。

参数:

  • file:文件指针。

  • p:gguf_str结构体指针。

  • offset:偏移量指针。

返回值:是否成功读取字符串。

gguf_init_empty

struct gguf_context * gguf_init_empty(void)

描述:初始化一个空的gguf_context结构体。

返回值:gguf_context指针。

gguf_init_from_file

struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_params params)

描述:从文件初始化gguf上下文。

参数:

  • fname:文件名。

  • params:初始化参数。

返回值:gguf_context指针。

gguf_find_key

int gguf_find_key(struct gguf_context * ctx, const char * key)

描述:查找指定键在gguf_context中的索引。

参数:

  • ctx:gguf_context指针。

  • key:键名。

返回值:键的索引,如果未找到则返回-1。

gguf_get_val_u32

uint32_t gguf_get_val_u32(struct gguf_context * ctx, int idx)

描述:获取gguf_context中指定索引的值,并转换为uint32_t类型。

参数:

  • ctx:gguf_context指针。

  • idx:索引。

返回值:转换后的uint32_t值。

gguf_free

void gguf_free(struct gguf_context * ctx)

描述:释放gguf_context结构体的内存。

参数:

  • ctx:gguf_context指针。

返回值:无。

GGML_PAD

类型:size_t

描述:用于计算对齐后的大小,具体实现未在给定代码段中提供。

GGML_ALIGNED_FREE

类型:void

描述:用于释放对齐内存的函数,具体实现未在给定代码段中提供。

GGUF_TYPE_NAME

类型:const char *

描述:一个数组,用于返回指定类型的名称,具体内容未在给定代码段中提供。

GGUF_TYPE_UINT8

类型:enum gguf_type

描述:表示无符号8位整数类型。

GGUF_TYPE_INT8

类型:enum gguf_type

描述:表示有符号8位整数类型。

GGUF_TYPE_UINT16

类型:enum gguf_type

描述:表示无符号16位整数类型。

GGUF_TYPE_INT16

类型:enum gguf_type

描述:表示有符号16位整数类型。

GGUF_TYPE_UINT32

类型:enum gguf_type

描述:表示无符号32位整数类型。

GGUF_TYPE_INT32

类型:enum gguf_type

描述:表示有符号32位整数类型。

GGUF_TYPE_FLOAT32

类型:enum gguf_type

描述:表示32位浮点数类型。

GGUF_TYPE_UINT64

类型:enum gguf_type

描述:表示无符号64位整数类型。

GGUF_TYPE_INT64

类型:enum gguf_type

描述:表示有符号64位整数类型。

GGUF_TYPE_FLOAT64

类型:enum gguf_type

描述:表示64位浮点数类型。

GGUF_TYPE_BOOL

类型:enum gguf_type

描述:表示布尔类型。

GGUF_TYPE_STRING

类型:enum gguf_type

描述:表示字符串类型。

GGUF_TYPE_ARRAY

类型:enum gguf_type

描述:表示数组类型。

gguf_context

描述:表示一个上下文结构体,包含版本号、对齐方式、数据偏移量、数据指针、键值对数量等信息。

字段 类型 描述
header struct gguf_header 包含版本号、张量数量、键值对数量等信息
alignment size_t 对齐方式
offset size_t 数据偏移量
data void * 数据指针
kv struct gguf_kv * 键值对数组
infos struct gguf_tensor_info * 张量信息数组

gguf_header

描述:包含版本号、张量数量、键值对数量等信息。

字段 类型 描述
version int 版本号
n_tensors uint32_t 张量数量
n_kv uint32_t 键值对数量

gguf_kv

描述:表示一个键值对结构体,包含键、值类型和值。

字段 类型 描述
key struct gguf_str
type enum gguf_type 值类型
value union gguf_value

gguf_str

描述:表示一个字符串结构体,包含字符串长度和数据。

字段 类型 描述
n size_t 字符串长度
data char * 字符串数据

gguf_value

描述:表示一个值联合体,根据不同的类型存储不同的值。

字段 类型 描述
uint8 uint8_t 无符号8位整数
int8 int8_t 有符号8位整数
uint16 uint16_t 无符号16位整数
int16 int16_t 有符号16位整数
uint32 uint32_t 无符号32位整数
int32 int32_t 有符号32位整数
float32 float 32位浮点数
uint64 uint64_t 无符号64位整数
int64 int64_t 有符号64位整数
float64 double 64位浮点数
bool_ bool 布尔值
str struct gguf_str 字符串
arr struct gguf_arr 数组

gguf_arr

描述:表示一个数组结构体,包含数组类型、元素数量和数据。

字段 类型 描述
type enum gguf_type 数组类型
n uint32_t 元素数量
data void * 数组数据

gguf_tensor_info

描述:表示一个张量信息结构体,包含张量名称、类型、偏移量等信息。

字段 类型 描述
name struct gguf_str 张量名称
type enum ggml_type 张量类型
offset size_t 张量偏移量

gguf_free

void gguf_free(struct gguf_context * ctx)

描述:释放 gguf_context 结构体所占用的内存空间。

参数:

  • ctx:指向 gguf_context 结构体的指针。

返回值:无。

gguf_type_name

const char * gguf_type_name(enum gguf_type type)

描述:返回指定类型的名称。

参数:

  • typeenum gguf_type 类型的值。

返回值:const char *,类型的名称。

gguf_get_version

int gguf_get_version(const struct gguf_context * ctx)

描述:获取 gguf_context 结构体中的版本号。

参数:

  • ctx:指向 gguf_context 结构体的指针。

返回值:版本号。

gguf_get_alignment

size_t gguf_get_alignment(const struct gguf_context * ctx)

描述:获取 gguf_context 结构体中的对齐方式。

参数:

  • ctx:指向 gguf_context 结构体的指针。

返回值:对齐方式。

gguf_get_data_offset

size_t gguf_get_data_offset(const struct gguf_context * ctx)

描述:获取 gguf_context 结构体中的数据偏移量。

参数:

  • ctx:指向 gguf_context 结构体的指针。

返回值:数据偏移量。

gguf_get_data

void * gguf_get_data(const struct gguf_context * ctx)

描述:获取 gguf_context 结构体中的数据指针。

参数:

  • ctx:指向 gguf_context 结构体的指针。

返回值:数据指针。

gguf_get_n_kv

int gguf_get_n_kv(const struct gguf_context * ctx)

描述:获取 gguf_context 结构体中的键值对数量。

参数:

  • ctx:指向 gguf_context 结构体的指针。

返回值:键值对数量。

gguf_find_key

int gguf_find_key(const struct gguf_context * ctx, const char * key)

描述:在给定的 gguf_context 中查找指定的键,如果找到则返回其索引,否则返回 -1。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key:要查找的键。

返回值:键的索引或 -1。

gguf_get_key

const char * gguf_get_key(const struct gguf_context * ctx, int key_id)

描述:获取指定索引的键。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key_id:键的索引。

返回值:键的字符串值。

gguf_get_kv_type

enum gguf_type gguf_get_kv_type(const struct gguf_context * ctx, int key_id)

描述:获取指定索引的键值对的类型。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key_id:键的索引。

返回值:键值对的类型。

gguf_get_arr_type

enum gguf_type gguf_get_arr_type(const struct gguf_context * ctx, int key_id)

描述:获取指定索引的数组类型的键值对的类型。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key_id:键的索引。

返回值:数组类型的键值对的数据类型。

gguf_get_arr_data

const void * gguf_get_arr_data(const struct gguf_context * ctx, int key_id)

描述:获取指定索引的数组类型的键值对的数据。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key_id:键的索引。

返回值:数组类型的键值对的数据。

gguf_get_arr_str

const char * gguf_get_arr_str(const struct gguf_context * ctx, int key_id, int i)

描述:获取指定索引的数组类型的键值对的字符串数据。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key_id:键的索引。

  • i:数组中字符串的索引。

返回值:字符串数据。

gguf_get_arr_n

int gguf_get_arr_n(const struct gguf_context * ctx, int key_id)

描述:获取指定索引的数组类型的键值对的元素数量。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key_id:键的索引。

返回值:元素数量。

gguf_get_val_u8

uint8_t gguf_get_val_u8(const struct gguf_context * ctx, int key_id)

描述:从给定的 gguf_context 结构体中获取 uint8_t 类型的值。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key_id:键的索引。

返回值:uint8_t 类型的值。

gguf_get_val_i8

int8_t gguf_get_val_i8(const struct gguf_context * ctx, int key_id)

描述:从给定的 gguf_context 结构体中获取 int8_t 类型的值。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key_id:键的索引。

返回值:int8_t 类型的值。

gguf_get_val_u16

uint16_t gguf_get_val_u16(const struct gguf_context * ctx, int key_id)

描述:从给定的 gguf_context 结构体中获取 uint16_t 类型的值。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key_id:键的索引。

返回值:uint16_t 类型的值。

gguf_get_val_i16

int16_t gguf_get_val_i16(const struct gguf_context * ctx, int key_id)

描述:从给定的 gguf_context 结构体中获取 int16_t 类型的值。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key_id:键的索引。

返回值:int16_t 类型的值。

gguf_get_val_u32

uint32_t gguf_get_val_u32(const struct gguf_context * ctx, int key_id)

描述:从给定的 gguf_context 结构体中获取 uint32_t 类型的值。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key_id:键的索引。

返回值:uint32_t 类型的值。

gguf_get_val_i32

int32_t gguf_get_val_i32(const struct gguf_context * ctx, int key_id)

描述:从给定的 gguf_context 结构体中获取 int32_t 类型的值。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key_id:键的索引。

返回值:int32_t 类型的值。

gguf_get_val_f32

float gguf_get_val_f32(const struct gguf_context * ctx, int key_id)

描述:从给定的 gguf_context 结构体中获取 float 类型的值。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key_id:键的索引。

返回值:float 类型的值。

gguf_get_val_u64

uint64_t gguf_get_val_u64(const struct gguf_context * ctx, int key_id)

描述:从给定的 gguf_context 结构体中获取 uint64_t 类型的值。

参数:

  • ctx:指向 gguf_context 结构体的指针。

  • key_id:键的索引。

返回值:uint64_t 类型的值。

gguf_get_val_i64

int64_t gguf_get_val_i64(const struct gguf_context * ctx, int key_id)

描述:从给定的 gguf_context 结构体中获取 int64_t 类型的值。

参数:

  • ctx:指向 gguf_context 结构体的指针。

GGUF_TYPE_INT64 类型:枚举 描述:表示有符号64位整数的类型

GGUF_TYPE_FLOAT64 类型:枚举 描述:表示浮点数的类型

GGUF_TYPE_BOOL 类型:枚举 描述:表示布尔值的类型

GGUF_TYPE_STRING 类型:枚举 描述:表示字符串的类型

GGUF_TYPE_ARRAY 类型:枚举 描述:表示数组的类型

GGML_MAX_DIMS 类型:整数 描述:表示张量的最大维度数量

GGML_PAD 类型:函数 描述:用于对齐内存的函数

GGML_ASSERT 类型:宏 描述:断言宏,用于检查条件是否为真

gguf_context 描述:表示上下文信息的结构体

字段 类型 描述
kv struct kv[] 键值对数组
infos struct gguf_tensor_info[] 张量信息数组
header struct gguf_header 头部信息
alignment int 对齐大小
infos struct gguf_tensor_info[] 张量信息数组
alignment int 对齐大小

gguf_tensor_info 描述:表示张量信息的结构体

字段 类型 描述
name struct gguf_str 张量名称
n_dims uint32_t 维度数量
ne uint32_t[GGML_MAX_DIMS] 每个维度的大小
type enum ggml_type 张量的数据类型
offset size_t 张量的偏移量
data void* 张量的数据指针
size size_t 张量的大小

gguf_buf 描述:表示缓冲区的结构体

字段 类型 描述
data void* 缓冲区的数据指针
size size_t 缓冲区的大小
offset size_t 缓冲区的偏移量

gguf_str 描述:表示字符串的结构体

字段 类型 描述
n size_t 字符串长度
data char* 字符串数据

gguf_set_val_f64

 void gguf_set_val_f64(struct gguf_context * ctx, const char * key, double val) 

描述:设置或添加浮点数值类型的键值对到上下文中

参数:

  • ctx:上下文指针

  • key:键名

  • val:浮点数值

返回值:无

gguf_set_val_bool

 void gguf_set_val_bool(struct gguf_context * ctx, const char * key, bool val) 

描述:设置或添加布尔类型的键值对到上下文中

参数:

  • ctx:上下文指针

  • key:键名

  • val:布尔值

返回值:无

gguf_set_val_str

 void gguf_set_val_str(struct gguf_context * ctx, const char * key, const char * val) 

描述:设置或添加字符串类型的键值对到上下文中

参数:

  • ctx:上下文指针

  • key:键名

  • val:字符串值

返回值:无

gguf_set_arr_data

 void gguf_set_arr_data(struct gguf_context * ctx, const char * key, enum gguf_type type, const void * data, int n) 

描述:设置或添加数组类型的键值对到上下文中

参数:

  • ctx:上下文指针

  • key:键名

  • type:数组类型

  • data:数组数据指针

  • n:数组元素数量

返回值:无

gguf_set_arr_str

 void gguf_set_arr_str(struct gguf_context * ctx, const char * key, const char ** data, int n) 

描述:设置或添加字符串数组类型的键值对到上下文中

参数:

  • ctx:上下文指针

  • key:键名

  • data:字符串数组数据指针

  • n:字符串数量

返回值:无

gguf_add_tensor

 void gguf_add_tensor(struct gguf_context * ctx, const struct ggml_tensor * tensor) 

描述:向上下文中添加张量

参数:

  • ctx:上下文指针

  • tensor:张量指针

返回值:无

gguf_set_tensor_type

 void gguf_set_tensor_type(struct gguf_context * ctx, const char * name, enum ggml_type type) 

描述:设置张量的数据类型

参数:

  • ctx:上下文指针

  • name:张量名称

  • type:数据类型

返回值:无

gguf_set_tensor_data

 void gguf_set_tensor_data(struct gguf_context * ctx, const char * name, const void * data, size_t size) 

描述:设置张量的数据

参数:

  • ctx:上下文指针

  • name:张量名称

  • data:数据指针

  • size:数据大小

返回值:无

gguf_buf_init

 static struct gguf_buf gguf_buf_init(size_t size) 

描述:初始化缓冲区

参数:

  • size:缓冲区大小

返回值:初始化后的缓冲区结构体

gguf_buf_free

 static void gguf_buf_free(struct gguf_buf buf) 

描述:释放缓冲区

参数:

  • buf:缓冲区结构体

返回值:无

gguf_buf_grow

 static void gguf_buf_grow(struct gguf_buf * buf, size_t size) 

描述:扩展缓冲区

参数:

  • buf:缓冲区指针

  • size:需要扩展的大小

返回值:无

gguf_bwrite_str

 static void gguf_bwrite_str(struct gguf_buf * buf, const struct gguf_str * val) 

描述:写入字符串到缓冲区

参数:

  • buf:缓冲区指针

  • val:字符串结构体

返回值:无

gguf_bwrite_el

 static void gguf_bwrite_el(struct gguf_buf * buf, const void * val, size_t el_size) 

描述:写入元素到缓冲区

参数:

  • buf:缓冲区指针

  • val:元素指针

  • el_size:元素大小

返回值:无

gguf_write_to_buf

 static void gguf_write_to_buf(const struct gguf_context * ctx, struct gguf_buf * buf, bool only_meta) 

描述:将数据写入缓冲区

参数:

  • ctx:上下文指针

  • buf:缓冲区指针

  • only_meta:是否只写入元数据

返回值:无

gguf_write_to_file

 void gguf_write_to_file(const struct gguf_context * ctx, const char * fname, bool only_meta) 

描述:将数据写入文件

参数:

  • ctx:上下文指针

  • fname:文件名

  • only_meta:是否只写入元数据

返回值:无

gguf_get_meta_size

 size_t gguf_get_meta_size(const struct gguf_context * ctx) 

描述:获取元数据的大小

参数:

  • ctx:上下文指针

返回值:元数据的大小

gguf_get_meta_data

 void gguf_get_meta_data(const struct gguf_context * ctx, void * data) 

描述:获取元数据的数据

参数:

  • ctx:上下文指针

  • data:存储元数据的缓冲区

返回值:无

ggml_cpu_has_avx

 int ggml_cpu_has_avx(void) 

描述:检查 CPU 是否支持 AVX 指令集

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_avx_vnni

 int ggml_cpu_has_avx_vnni(void) 

描述:检查 CPU 是否支持 AVX VNNI 指令集

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_avx2

 int ggml_cpu_has_avx2(void) 

描述:检查 CPU 是否支持 AVX2 指令集

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_avx512

 int ggml_cpu_has_avx512(void) 

描述:检查 CPU 是否支持 AVX512 指令集

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_avx512_vbmi

 int ggml_cpu_has_avx512_vbmi(void) 

描述:检查 CPU 是否支持 AVX512 VBMI 指令集

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_avx512_vnni

 int ggml_cpu_has_avx512_vnni(void) 

描述:检查 CPU 是否支持 AVX512 VNNI 指令集

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_fma

 int ggml_cpu_has_fma(void) 

描述:检查 CPU 是否支持 FMA 指令集

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_neon

 int ggml_cpu_has_neon(void) 

描述:检查 CPU 是否支持 NEON 指令集

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_arm_fma

 int ggml_cpu_has_arm_fma(void) 

描述:检查 CPU 是否支持 ARM FMA 指令集

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_metal

 int ggml_cpu_has_metal(void) 

描述:检查 CPU 是否支持 Metal 框架

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_f16c

 int ggml_cpu_has_f16c(void) 

描述:检查 CPU 是否支持 F16C 指令集

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_fp16_va

 int ggml_cpu_has_fp16_va(void) 

描述:检查 CPU 是否支持 ARM FP16 向量算术指令集

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_wasm_simd

 int ggml_cpu_has_wasm_simd(void) 

描述:检查 CPU 是否支持 WebAssembly SIMD 指令集

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_blas

 int ggml_cpu_has_blas(void) 

描述:检查 CPU 是否支持 BLAS 库

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_cublas

 int ggml_cpu_has_cublas(void) 

描述:检查 CPU 是否支持 cuBLAS 库

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_clblast

 int ggml_cpu_has_clblast(void) 

描述:检查 CPU 是否支持 CLBlast 库

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_gpublas

 int ggml_cpu_has_gpublas(void) 

描述:检查 CPU 是否支持 GPU BLAS 库

参数:无

返回值:1 表示支持,0 表示不支持

ggml_cpu_has_sse3

 int ggml_cpu_has_sse3(void) 

描述:检查 CPU 是否支持 SSE3 指令集

参数:无

返回值:1 表示支持,0 表示不支持

无常量定义。

无结构体定义。

ggml_cpu_has_sse3

int ggml_cpu_has_sse3(void)

描述:检查CPU是否支持SSE3指令集。

参数:无。

返回值:如果支持SSE3指令集,返回1;否则返回0。

ggml_cpu_has_ssse3

int ggml_cpu_has_ssse3(void)

描述:检查CPU是否支持SSSE3指令集。

参数:无。

返回值:如果支持SSSE3指令集,返回1;否则返回0。

ggml_cpu_has_vsx

int ggml_cpu_has_vsx(void)

描述:检查CPU是否支持VSX指令集。

参数:无。

返回值:如果支持VSX指令集,返回1;否则返回0。

标签:const,struct,张量,文档,ggml,GGML,描述,非官方,tensor
From: https://www.cnblogs.com/apachecn/p/18189479

相关文章

  • PyAlgoTrade-0-20-中文文档-一-
    PyAlgoTrade0.20中文文档(一)介绍原文:gbeced.github.io/pyalgotrade/docs/v0.20/html/intro.htmlPyAlgoTrade是一个支持事件驱动的算法交易Python库,支持:使用来自CSV文件的历史数据进行回测。使用Bitstamp实时数据进行模拟交易。在Bitstamp上进行真实交易。......
  • PyAlgoTrade-0-20-中文文档-四-
    PyAlgoTrade0.20中文文档(四)SMA交叉原文:gbeced.github.io/pyalgotrade/docs/v0.20/html/sample_sma_crossover.html将此代码保存为sma_crossover.py:frompyalgotradeimportstrategyfrompyalgotrade.technicalimportmafrompyalgotrade.technicalimportcrosscl......
  • PyAlgoTrade-0-20-中文文档-三-
    PyAlgoTrade0.20中文文档(三)工具原文:gbeced.github.io/pyalgotrade/docs/v0.20/html/tools.htmlQuandlpyalgotrade.tools.quandl.``build_feed(sourceCode,tableCodes,fromYear,toYear,storage,frequency=86400,timezone=None,skipErrors=False,authToken=None,columnNames={......
  • PyAlgoTrade-0-20-中文文档-二-
    PyAlgoTrade0.20中文文档(二)经纪人-订单管理类原文:gbeced.github.io/pyalgotrade/docs/v0.20/html/broker.html基础模块和类类pyalgotrade.broker.``Order(type_,action,instrument,quantity,instrumentTraits)基类:object订单的基类。参数:type(Order.Type)–订单类......
  • Zipline-3-0-中文文档-一-
    Zipline3.0中文文档(一)原文:zipline.ml4trading.io回测您的交易策略原文:zipline.ml4trading.io/index.htmlZipline是一个用于回测的Pythonic事件驱动系统,由众包投资基金Quantopian开发和使用,作为回测和实时交易引擎。自2020年底关闭以来,托管这些文档的域名已过期。......
  • git文档
    git常用命令。创建SSHKeyssh-keygen-trsa-C"[email protected]"配置用户信息gitconfig--globaluser.name"YourName"gitconfig--globaluser.email"[email protected]"仓库在当前目录新建一个Git代码库gitinit新建一个目录,将其......
  • [附源码+文档]Java Swing小游戏源码合集(14款)_毕业设计必选项目
    (小众游戏塔防迷宫动作剧情类等)16款游戏源码Javaswing五子棋联网版源代码Javaswing贪吃蛇游戏开发教程+源码Javaswing超级玛丽游戏Javaswing俄罗斯方块项目源码Javaswing飞机大战游戏源码Javaswing雷电游戏源码Javaswing连连看游戏源码Javaswing模拟写字板源码......
  • 前端架构重构 - 设计文档
    框架选型:React-写React的感觉就是在写JavaScript。但React的缺点是冗余,它只是个View层,也只处理View层。Vue-Vue的定位是一个渐进式的MVVM框架。渐进式,就是学习曲线比较平缓,没那么陡峭。但这并不意味着Vue比React简单,React就比Vue复杂。Vue在框架层面......
  • 如何安全高效地进行企业文档外发,一文了解!
    企业文档外发是指将企业的内部文件、文档或信息发送给企业外部的个人或组织。目前使用比较多的企业文档外发的方式有以下几种,可以了解看一下:1.邮件系统:通过电子邮件发送文档,这是最传统的文档外发方式之一。2.即时通讯工具:如微信、QQ、企业微信、钉钉、飞书等,这些工具便于快速交......
  • 2024学长毕设开发文档
    Django后端1、跨域请求处理问题描述直接在前端axios请求中访问后端端口:会出现跨域问题跨域的知识:处理方案:(基于django-cors-headers处理跨域)成功请求结果:2、前端访问后端资源文件setting.py设置资源文件存储路径MEDIA_ROOT配置请求资源路径......