GGML 非官方中文文档(1)

简介: GGML 非官方中文文档

_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§。

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:要复制的源张量。

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

GGML 非官方中文文档(2)https://developer.aliyun.com/article/1524359

相关文章
|
2月前
|
数据挖掘 API Go
《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)(下)
《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)
45 1
|
6天前
|
数据采集 机器学习/深度学习 运维
超全!GitHub星标6500的Python入门教程大全,太强了!
Python 类库(模块)极其丰富,这使得 Python 几乎无所不能,不管是传统的 Web 开发、PC 软件开发、Linux 运维,还是当下火热的机器学习、大数据分析、网络爬虫,Python 都能胜任。 今天给小伙伴们分享的这份Python入门教程大全是从gitee上扒下来的,这套教程不是教科书,不会玩弄概念,而是力求口语化和通俗化,让读者尽快入门。
|
2月前
|
存储 算法 异构计算
GGML 非官方中文文档(5)
GGML 非官方中文文档
22 1
|
2月前
|
机器学习/深度学习 存储 API
GGML 非官方中文文档(2)
GGML 非官方中文文档
60 0
|
2月前
|
存储 算法 图计算
GGML 非官方中文文档(4)
GGML 非官方中文文档
39 0
|
2月前
|
存储 异构计算 索引
GGML 非官方中文文档(3)
GGML 非官方中文文档
33 0
|
2月前
|
JavaScript 前端开发 搜索推荐
《VitePress 简易速速上手小册》第1章:VitePress 入门(2024 最新版)
《VitePress 简易速速上手小册》第1章:VitePress 入门(2024 最新版)
119 1
|
2月前
|
缓存 NoSQL Go
《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)(上)
《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)
94 1
|
2月前
|
JSON JavaScript 前端开发
dayjs 中文文档
dayjs 中文文档
514 0
|
2月前
|
资源调度 JavaScript 搜索推荐
《VitePress 简易速速上手小册》第9章 VitePress 的扩展与插件(2024 最新版)
《VitePress 简易速速上手小册》第9章 VitePress 的扩展与插件(2024 最新版)
151 0

热门文章

最新文章