_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_pos
和ggml_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)
描述:返回指定类型的名称。
参数:
type
:enum 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