_CRT_SECURE_NO_DEPRECATE
类型:宏定义
描述:禁用 Windows 上荒谬的“不安全”警告。
_USE_MATH_DEFINES
类型:宏定义
描述:在 MSVC 上使用 M_PI。
GGML_DEBUG
类型:宏定义
描述:定义调试级别。
GGML_GELU_FP16
类型:宏定义
描述:定义 GELU 函数的浮点数精度为 16 位。
GGML_GELU_QUICK_FP16
类型:宏定义
描述:定义快速 GELU 函数的浮点数精度为 16 位。
GGML_SILU_FP16
类型:宏定义
描述:定义 SILU 函数的浮点数精度为 16 位。
GGML_SOFT_MAX_UNROLL
类型:宏定义
描述:定义 SoftMax 函数的展开次数。
GGML_VEC_DOT_UNROLL
类型:宏定义
描述:定义向量点积函数的展开次数。
GGML_VEC_MAD_UNROLL
类型:宏定义
描述:定义向量乘加函数的展开次数。
GGML_MEM_ALIGN
类型:宏定义
描述:定义内存对齐大小。
CACHE_LINE_SIZE
类型:宏定义
描述:定义缓存行大小。
CACHE_LINE_SIZE_F32
类型:宏定义
描述:定义单精度浮点数缓存行大小。
GGML_TYPE_COUNT
类型:宏定义
描述:定义类型特性的数量。
GGML_TYPE_I8
类型:宏定义
描述:定义 8 位整数类型。
GGML_TYPE_I16
类型:宏定义
描述:定义 16 位整数类型。
GGML_TYPE_I32
类型:宏定义
描述:定义 32 位整数类型。
GGML_TYPE_F32
类型:宏定义
描述:定义 32 位浮点数类型。
atomic_int
描述:定义原子整型。
字段 | 类型 | 描述 |
无 | 无 | 无 |
atomic_bool
描述:定义原子布尔型。
字段 | 类型 | 描述 |
无 | 无 | 无 |
pthread_t
描述:定义线程句柄类型。
字段 | 类型 | 描述 |
无 | 无 | 无 |
thread_ret_t
描述:定义线程返回类型。
字段 | 类型 | 描述 |
无 | 无 | 无 |
ggml_type_traits_t
描述:定义类型特性结构体。
字段 | 类型 | 描述 |
type_name | char[] | 类型名称 |
blck_size | size_t | 块大小 |
type_size | size_t | 类型大小 |
is_quantized | bool | 是否量化 |
atomic_store
void atomic_store(atomic_int * ptr, LONG val)
描述:原子操作:存储。
参数:
ptr
:指向原子整型的指针。val
:要存储的值。
返回值:无。
atomic_load
LONG atomic_load(atomic_int * ptr)
描述:原子操作:加载。
参数:
ptr
:指向原子整型的指针。
返回值:加载的值。
atomic_fetch_add
LONG atomic_fetch_add(atomic_int * ptr, LONG inc)
描述:原子操作:加法。
参数:
ptr
:指向原子整型的指针。inc
:要增加的值。
返回值:增加前的值。
atomic_fetch_sub
LONG atomic_fetch_sub(atomic_int * ptr, LONG dec)
描述:原子操作:减法。
参数:
ptr
:指向原子整型的指针。dec
:要减少的值。
返回值:减少前的值。
pthread_create
int pthread_create(pthread_t * out, void * unused, thread_ret_t(*func)(void *), void * arg)
描述:创建线程。
参数:
out
:输出参数,用于存储新创建线程的句柄。unused
:未使用的参数。func
:线程函数。arg
:传递给线程函数的参数。
返回值:线程创建结果。
pthread_join
int pthread_join(pthread_t thread, void * unused)
描述:等待线程结束。
参数:
thread
:要等待的线程句柄。unused
:未使用的参数。
返回值:等待结果。
sched_yield
int sched_yield (void)
描述:在当前线程放弃 CPU 时间片,使得其他线程有机会执行。
参数:无。
返回值:0。
ggml_aligned_malloc
void * ggml_aligned_malloc(size_t size)
描述:分配对齐的内存。
参数:
size
:要分配的内存大小。
返回值:指向分配内存的指针,如果分配失败则返回 NULL。
ggml_fp16_to_fp32
float ggml_fp16_to_fp32(ggml_fp16_t x)
描述:将 f16 转换为 f32。
参数:
x
:要转换的 f16 值。
返回值:转换后的 f32 值。
ggml_fp32_to_fp16
ggml_fp16_t ggml_fp32_to_fp16(float x)
描述:将 f32 转换为 f16。
参数:
x
:要转换的 f32 值。
返回值:转换后的 f16 值。
ggml_fp16_to_fp32_row
void ggml_fp16_to_fp32_row(const ggml_fp16_t * x, float * y, int n)
描述:将 f16 数组转换为 f32 数组。
参数:
x
:输入的 f16 数组。y
:输出的 f32 数组。n
:数组大小。
返回值:无。
ggml_fp32_to_fp16_row
void ggml_fp32_to_fp16_row(const float * x, ggml_fp16_t * y, int n)
描述:将 f32 数组转换为 f16 数组。
参数:
x
:输入的 f32 数组。y
:输出的 f16 数组。n
:数组大小。
返回值:无。
ggml_time_init
void ggml_time_init(void)
描述:初始化定时器。
参数:无。
返回值:无。
ggml_time_ms
int64_t ggml_time_ms(void)
描述:获取毫秒级时间。
参数:无。
返回值:当前时间(毫秒)。
ggml_time_us
int64_t ggml_time_us(void)
描述:获取微秒级时间。
参数:无。
返回值:当前时间(微秒)。
ggml_cycles
int64_t ggml_cycles(void)
描述:获取时钟周期数。
参数:无。
返回值:当前时钟周期数。
ggml_cycles_per_ms
int64_t ggml_cycles_per_ms(void)
描述:获取每毫秒的时钟周期数。
参数:无。
返回值:每毫秒的时钟周期数。
ggml_vec_dot_f32
static void ggml_vec_dot_f32(const int n, float * restrict s, const float * restrict x, const float * restrict y)
描述:计算两个 float 数组的点积。
参数:
n
:数组大小。s
:输出参数,用于存储点积结果。x
:第一个输入数组。y
:第二个输入数组。
返回值:无。
ggml_vec_dot_f16
static void ggml_vec_dot_f16(const int n, float * restrict s, ggml_fp16_t * restrict x, ggml_fp16_t * restrict y)
描述:计算两个 ggml_fp16_t 类型数组的点积。
参数:
n
:数组大小。s
:输出参数,用于存储点积结果。x
:第一个输入数组。y
:第二个输入数组。
返回值:无。
GGML_TYPE_F32
类型:枚举值
描述:表示数据类型为32位浮点数。
GGML_TYPE_F16
类型:枚举值
描述:表示数据类型为16位浮点数。
GGML_TYPE_Q4_0
类型:枚举值
描述:表示数据类型为量化类型Q4_0。
GGML_TYPE_Q4_1
类型:枚举值
描述:表示数据类型为量化类型Q4_1。
GGML_TYPE_Q5_0
类型:枚举值
描述:表示数据类型为量化类型Q5_0。
GGML_TYPE_Q5_1
类型:枚举值
描述:表示数据类型为量化类型Q5_1。
GGML_TYPE_Q8_0
类型:枚举值
描述:表示数据类型为量化类型Q8_0。
GGML_TYPE_Q8_1
类型:枚举值
描述:表示数据类型为量化类型Q8_1。
GGML_TYPE_Q2_K
类型:枚举值
描述:表示数据类型为量化类型Q2_K。
GGML_TYPE_Q3_K
类型:枚举值
描述:表示数据类型为量化类型Q3_K。
GGML_TYPE_Q4_K
类型:枚举值
描述:表示数据类型为量化类型Q4_K。
GGML_TYPE_Q5_K
类型:枚举值
描述:表示数据类型为量化类型Q5_K。
GGML_TYPE_Q6_K
类型:枚举值
描述:表示数据类型为量化类型Q6_K。
GGML_TYPE_Q8_K
类型:枚举值
描述:表示数据类型为量化类型Q8_K。
ggml_type_traits_t
描述:包含特定数据类型的属性,如名称、块大小、类型大小、是否量化、转换函数等。
字段 | 类型 | 描述 |
type_name | char* | 类型名称 |
blck_size | int | 块大小 |
type_size | size_t | 类型大小 |
is_quantized | bool | 是否量化 |
to_float | ggml_to_float_t | 转换为浮点数的函数 |
from_float | ggml_from_float_t | 从浮点数转换的函数 |
from_float_reference | ggml_from_float_t | 从浮点数转换的参考函数 |
vec_dot | ggml_vec_dot_t | 向量点积函数 |
vec_dot_type | enum ggml_type | 向量点积类型 |
ggml_internal_get_type_traits
ggml_type_traits_t ggml_internal_get_type_traits(enum ggml_type type)
描述:获取特定数据类型的属性。
参数:
type
:数据类型枚举值
返回值:ggml_type_traits_t结构体,包含特定数据类型的属性。
vaddvq_f32
inline static float vaddvq_f32(float32x4_t v)
描述:将四个单精度浮点数向量相加。
参数:
v
:包含四个单精度浮点数的向量
返回值:四个单精度浮点数之和。
dequantize_row_q4_0
ggml_to_float_t dequantize_row_q4_0
描述:将量化类型Q4_0转换为浮点数的函数。
参数:未提供,根据上下文推断可能需要一个量化类型的数组。
返回值:转换后的浮点数数组。
quantize_row_q4_0
quantize_row_q4_0
描述:将浮点数转换为量化类型Q4_0的函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q4_0数组。
quantize_row_q4_0_reference
ggml_from_float_t quantize_row_q4_0_reference
描述:将浮点数转换为量化类型Q4_0的参考函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q4_0数组。
ggml_vec_dot_q4_0_q8_0
ggml_vec_dot_t ggml_vec_dot_q4_0_q8_0
描述:量化类型Q4_0与Q8_0的向量点乘函数。
参数:未提供,根据上下文推断可能需要两个向量。
返回值:向量点乘的结果。
dequantize_row_q4_1
ggml_to_float_t dequantize_row_q4_1
描述:将量化类型Q4_1转换为浮点数的函数。
参数:未提供,根据上下文推断可能需要一个量化类型的数组。
返回值:转换后的浮点数数组。
quantize_row_q4_1
quantize_row_q4_1
描述:将浮点数转换为量化类型Q4_1的函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q4_1数组。
quantize_row_q4_1_reference
ggml_from_float_t quantize_row_q4_1_reference
描述:将浮点数转换为量化类型Q4_1的参考函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q4_1数组。
ggml_vec_dot_q4_1_q8_1
ggml_vec_dot_t ggml_vec_dot_q4_1_q8_1
描述:量化类型Q4_1与Q8_1的向量点乘函数。
参数:未提供,根据上下文推断可能需要两个向量。
返回值:向量点乘的结果。
dequantize_row_q5_0
ggml_to_float_t dequantize_row_q5_0
描述:将量化类型Q5_0转换为浮点数的函数。
参数:未提供,根据上下文推断可能需要一个量化类型的数组。
返回值:转换后的浮点数数组。
quantize_row_q5_0
quantize_row_q5_0
描述:将浮点数转换为量化类型Q5_0的函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q5_0数组。
quantize_row_q5_0_reference
ggml_from_float_t quantize_row_q5_0_reference
描述:将浮点数转换为量化类型Q5_0的参考函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q5_0数组。
ggml_vec_dot_q5_0_q8_0
ggml_vec_dot_t ggml_vec_dot_q5_0_q8_0
描述:量化类型Q5_0与Q8_0的向量点乘函数。
参数:未提供,根据上下文推断可能需要两个向量。
返回值:向量点乘的结果。
dequantize_row_q5_1
ggml_to_float_t dequantize_row_q5_1
描述:将量化类型Q5_1转换为浮点数的函数。
参数:未提供,根据上下文推断可能需要一个量化类型的数组。
返回值:转换后的浮点数数组。
quantize_row_q5_1
quantize_row_q5_1
描述:将浮点数转换为量化类型Q5_1的函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q5_1数组。
quantize_row_q5_1_reference
ggml_from_float_t quantize_row_q5_1_reference
描述:将浮点数转换为量化类型Q5_1的参考函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q5_1数组。
ggml_vec_dot_q5_1_q8_1
ggml_vec_dot_t ggml_vec_dot_q5_1_q8_1
描述:量化类型Q5_1与Q8_1的向量点乘函数。
参数:未提供,根据上下文推断可能需要两个向量。
返回值:向量点乘的结果。
dequantize_row_q8_0
ggml_to_float_t dequantize_row_q8_0
描述:将量化类型Q8_0转换为浮点数的函数。
参数:未提供,根据上下文推断可能需要一个量化类型的数组。
返回值:转换后的浮点数数组。
quantize_row_q8_0
quantize_row_q8_0
描述:将浮点数转换为量化类型Q8_0的函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q8_0数组。
quantize_row_q8_0_reference
ggml_from_float_t quantize_row_q8_0_reference
描述:将浮点数转换为量化类型Q8_0的参考函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q8_0数组。
ggml_vec_dot_q8_0_q8_0
ggml_vec_dot_t ggml_vec_dot_q8_0_q8_0
描述:量化类型Q8_0与Q8_0的向量点乘函数。
参数:未提供,根据上下文推断可能需要两个向量。
返回值:向量点乘的结果。
quantize_row_q8_1
quantize_row_q8_1
描述:将浮点数转换为量化类型Q8_1的函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q8_1数组。
quantize_row_q8_1_reference
ggml_from_float_t quantize_row_q8_1_reference
描述:将浮点数转换为量化类型Q8_1的参考函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q8_1数组。
dequantize_row_q2_K
ggml_to_float_t dequantize_row_q2_K
描述:将量化类型Q2_K转换为浮点数的函数。
参数:未提供,根据上下文推断可能需要一个量化类型的数组。
返回值:转换后的浮点数数组。
quantize_row_q2_K
quantize_row_q2_K
描述:将浮点数转换为量化类型Q2_K的函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q2_K数组。
quantize_row_q2_K_reference
ggml_from_float_t quantize_row_q2_K_reference
描述:将浮点数转换为量化类型Q2_K的参考函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q2_K数组。
ggml_vec_dot_q2_K_q8_K
ggml_vec_dot_t ggml_vec_dot_q2_K_q8_K
描述:量化类型Q2_K与Q8_K的向量点乘函数。
参数:未提供,根据上下文推断可能需要两个向量。
返回值:向量点乘的结果。
dequantize_row_q3_K
ggml_to_float_t dequantize_row_q3_K
描述:将量化类型Q3_K转换为浮点数的函数。
参数:未提供,根据上下文推断可能需要一个量化类型的数组。
返回值:转换后的浮点数数组。
quantize_row_q3_K
quantize_row_q3_K
描述:将浮点数转换为量化类型Q3_K的函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q3_K数组。
quantize_row_q3_K_reference
ggml_from_float_t quantize_row_q3_K_reference
描述:将浮点数转换为量化类型Q3_K的参考函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q3_K数组。
ggml_vec_dot_q3_K_q8_K
ggml_vec_dot_t ggml_vec_dot_q3_K_q8_K
描述:量化类型Q3_K与Q8_K的向量点乘函数。
参数:未提供,根据上下文推断可能需要两个向量。
返回值:向量点乘的结果。
dequantize_row_q4_K
ggml_to_float_t dequantize_row_q4_K
描述:将量化类型Q4_K转换为浮点数的函数。
参数:未提供,根据上下文推断可能需要一个量化类型的数组。
返回值:转换后的浮点数数组。
quantize_row_q4_K
quantize_row_q4_K
描述:将浮点数转换为量化类型Q4_K的函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q4_K数组。
quantize_row_q4_K_reference
ggml_from_float_t quantize_row_q4_K_reference
描述:将浮点数转换为量化类型Q4_K的参考函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q4_K数组。
ggml_vec_dot_q4_K_q8_K
ggml_vec_dot_t ggml_vec_dot_q4_K_q8_K
描述:量化类型Q4_K与Q8_K的向量点乘函数。
参数:未提供,根据上下文推断可能需要两个向量。
返回值:向量点乘的结果。
dequantize_row_q5_K
ggml_to_float_t dequantize_row_q5_K
描述:将量化类型Q5_K转换为浮点数的函数。
参数:未提供,根据上下文推断可能需要一个量化类型的数组。
返回值:转换后的浮点数数组。
quantize_row_q5_K
quantize_row_q5_K
描述:将浮点数转换为量化类型Q5_K的函数。
参数:未提供,根据上下文推断可能需要一个浮点数数组。
返回值:转换后的量化类型Q5_K数组。
quantize_row_q5_K_reference
ggml_from_float_t quantize_row_q5_K_reference
描述:
GGML_F32x8
类型:宏定义
描述:定义 F32 向量类型为 GGML_F32x8,即 GGML_F32x8 被定义为 GGML_F32x8。
GGML_F32x8_ZERO
类型:宏定义
描述:定义 F32 向量零初始化宏,即 GGML_F32x8_ZERO 被定义为 GGML_F32x8_ZERO。
GGML_F32x8_SET1
类型:宏定义
描述:定义 F32 向量设置单个值的宏,即 GGML_F32x8_SET1 被定义为 GGML_F32x8_SET1。
GGML_F32x8_LOAD
类型:宏定义
描述:定义 F32 向量加载数据的宏,即 GGML_F32x8_LOAD 被定义为 GGML_F32x8_LOAD。
GGML_F32x8_STORE
类型:宏定义
描述:定义 F32 向量存储数据的宏,即 GGML_F32x8_STORE 被定义为 GGML_F32x8_STORE。
GGML_F32x8_FMA
类型:宏定义
描述:定义 F32 向量 FMA(fused multiply-add)操作的宏,即 GGML_F32x8_FMA 被定义为 GGML_F32x8_FMA。
GGML_F32x8_ADD
类型:宏定义
描述:定义 F32 向量加法的宏,即 GGML_F32x8_ADD 被定义为 GGML_F32x8_ADD。
GGML_F32x8_MUL
类型:宏定义
描述:定义 F32 向量乘法的宏,即 GGML_F32x8_MUL 被定义为 GGML_F32x8_MUL。
GGML_F32x8_REDUCE
类型:宏定义
描述:定义 F32 向量规约操作的宏,即 GGML_F32x8_REDUCE 被定义为 GGML_F32x8_REDUCE。
GGML_F16_STEP
类型:宏定义
描述:定义 F16 步长为 32,即 GGML_F16_STEP 被定义为 32。
GGML_F16_EPR
类型:宏定义
描述:定义 F16 每个寄存器的元素个数为 8,即 GGML_F16_EPR 被定义为 8。
GGML_F32Cx8
类型:宏定义
描述:定义 F32Cx8 类型为 __m256,即 GGML_F32Cx8 被定义为 __m256。
GGML_F32Cx8_ZERO
类型:宏定义
描述:定义 F32Cx8 类型的零初始化宏,即 GGML_F32Cx8_ZERO 被定义为 _mm256_setzero_ps()。
GGML_F32Cx8_SET1
类型:宏定义
描述:定义 F32Cx8 类型设置单个值的宏,即 GGML_F32Cx8_SET1 被定义为 _mm256_set1_ps(x)。
GGML_F32Cx8_LOAD
类型:宏定义
描述:定义 F32Cx8 类型加载数据的宏,即 GGML_F32Cx8_LOAD 被定义为 _mm256_cvtph_ps(_mm_loadu_si128((__m128i *)(x)))。
GGML_F32Cx8_STORE
类型:宏定义
描述:定义 F32Cx8 类型存储数据的宏,即 GGML_F32Cx8_STORE 被定义为 _mm_storeu_si128((__m128i *)(x), _mm256_cvtps_ph(y, 0))。
GGML_F32Cx8_FMA
类型:宏定义
描述:定义 F32Cx8 类型 FMA 操作的宏,即 GGML_F32Cx8_FMA 被定义为 GGML_F32x8_FMA。
GGML_F32Cx8_ADD
类型:宏定义
描述:定义 F32Cx8 类型加法的宏,即 GGML_F32Cx8_ADD 被定义为 _mm256_add_ps。
GGML_F32Cx8_MUL
类型:宏定义
描述:定义 F32Cx8 类型乘法的宏,即 GGML_F32Cx8_MUL 被定义为 _mm256_mul_ps。
GGML_F32Cx8_REDUCE
类型:宏定义
描述:定义 F32Cx8 类型规约操作的宏,即 GGML_F32Cx8_REDUCE 被定义为 GGML_F32x8_REDUCE。
GGML_F16_VEC
类型:宏定义
描述:定义 F16 向量类型为 GGML_F32Cx8,即 GGML_F16_VEC 被定义为 GGML_F32Cx8。
GGML_F16_VEC_ZERO
类型:宏定义
描述:定义 F16 向量零初始化宏,即 GGML_F16_VEC_ZERO 被定义为 GGML_F32Cx8_ZERO。
GGML_F16_VEC_SET1
类型:宏定义
描述:定义 F16 向量设置单个值的宏,即 GGML_F16_VEC_SET1 被定义为 GGML_F32Cx8_SET1。
GGML_F16_VEC_LOAD
类型:宏定义
描述:定义 F16 向量加载数据的宏,即 GGML_F16_VEC_LOAD 被定义为 GGML_F32Cx8_LOAD§。
GGML_F16_VEC_STORE
类型:宏定义
描述:定义 F16 向量存储数据的宏,即 GGML_F16_VEC_STORE 被定义为 GGML_F32Cx8_STORE(p, r[i])。
GGML_F16_VEC_FMA
类型:宏定义
描述:定义 F16 向量 FMA 操作的宏,即 GGML_F16_VEC_FMA 被定义为 GGML_F32Cx8_FMA。
GGML_F16_VEC_ADD
类型:宏定义
描述:定义 F16 向量加法为 F32x8 加法,即 GGML_F16_VEC_ADD 被定义为 GGML_F32Cx8_ADD。
GGML_F16_VEC_MUL
类型:宏定义
描述:定义 F16 向量乘法为 F32x8 乘法,即 GGML_F16_VEC_MUL 被定义为 GGML_F32Cx8_MUL。
GGML_F16_VEC_REDUCE
类型:宏定义
描述:定义 F16 向量归约为 F32x8 归约,即 GGML_F16_VEC_REDUCE 被定义为 GGML_F32Cx8_REDUCE。
无结构体定义。
无公开函数定义。
以上是对给定代码段中的常量、结构体、公开函数的提取和总结。由于代码中主要包含的是宏定义,因此没有结构体和公开函数的定义。
GGML_F16_VEC_MUL
类型:宏定义
描述:定义 GGML_F16_VEC_MUL 为 GGML_F32Cx4_MUL,用于半精度浮点数向量乘法。
GGML_F16_VEC_REDUCE
类型:宏定义
描述:定义 GGML_F16_VEC_REDUCE 为 GGML_F32Cx4_REDUCE,用于半精度浮点数向量缩减操作。
GGML_F32_ARR
类型:宏定义
描述:在使用 SIMD 指令集时,定义每个步骤要使用的寄存器数量。
GGML_F16_ARR
类型:宏定义
描述:在使用 SIMD 指令集时,定义每个步骤要使用的寄存器数量。
无结构体定义。
ggml_vec_set_i8
void ggml_vec_set_i8(const int n, int8_t * x, const int8_t v)
描述:设置 int8_t 类型数组的值为 v。
参数:
n
:数组大小。x
:目标数组。v
:要设置的值。
ggml_vec_set_i16
void ggml_vec_set_i16(const int n, int16_t * x, const int16_t v)
描述:设置 int16_t 类型数组的值为 v。
参数:
n
:数组大小。x
:目标数组。v
:要设置的值。
ggml_vec_set_i32
void ggml_vec_set_i32(const int n, int32_t * x, const int32_t v)
描述:设置 int32_t 类型数组的值为 v。
参数:
n
:数组大小。x
:目标数组。v
:要设置的值。
ggml_vec_set_f16
void ggml_vec_set_f16(const int n, ggml_fp16_t * x, const int32_t v)
描述:设置 ggml_fp16_t 类型数组的值为 v。
参数:
n
:数组大小。x
:目标数组。v
:要设置的值。
ggml_vec_add_f32
void ggml_vec_add_f32(const int n, float * z, const float * x, const float * y)
描述:将两个 float 类型数组相加,结果存入第三个数组。
参数:
n
:数组大小。z
:结果数组。x
:第一个数组。y
:第二个数组。
ggml_vec_add1_f32
void ggml_vec_add1_f32(const int n, float * z, const float * x, const float v)
描述:将一个 float 类型数组和一个常量值相加,结果存入另一个数组。
参数:
n
:数组大小。z
:结果数组。x
:数组。v
:常量值。
ggml_vec_acc_f32
void ggml_vec_acc_f32(const int n, float * y, const float * x)
描述:将一个 float 类型数组和另一个数组相加,结果存入第一个数组。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_vec_acc1_f32
void ggml_vec_acc1_f32(const int n, float * y, const float v)
描述:将一个 float 类型数组和一个常量值相加,结果存入第一个数组。
参数:
n
:数组大小。y
:目标数组。v
:常量值。
ggml_vec_sub_f32
void ggml_vec_sub_f32(const int n, float * z, const float * x, const float * y)
描述:将两个 float 类型数组相减,结果存入第三个数组。
参数:
n
:数组大小。z
:结果数组。x
:第一个数组。y
:第二个数组。
ggml_vec_set_f32
void ggml_vec_set_f32(const int n, float * x, const float v)
描述:设置 float 类型数组的值为 v。
参数:
n
:数组大小。x
:目标数组。v
:要设置的值。
ggml_vec_cpy_f32
void ggml_vec_cpy_f32(const int n, float * y, const float * x)
描述:复制一个 float 类型数组的值到另一个数组。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_vec_neg_f32
void ggml_vec_neg_f32(const int n, float * y, const float * x)
描述:将一个 float 类型数组的值取反,结果存入另一个数组。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_vec_mul_f32
void ggml_vec_mul_f32(const int n, float * z, const float * x, const float * y)
描述:用于计算两个 float 数组的元素对应位置相乘,结果存入第三个数组。
参数:
n
:数组大小。z
:结果数组。x
:第一个数组。y
:第二个数组。
ggml_vec_div_f32
void ggml_vec_div_f32(const int n, float * z, const float * x, const float * y)
描述:用于计算两个 float 数组的元素对应位置相除,结果存入第三个数组。
参数:
n
:数组大小。z
:结果数组。x
:第一个数组。y
:第二个数组。
ggml_vec_dot_f32
void ggml_vec_dot_f32(const int n, float * restrict s, const float * restrict x, const float * restrict y)
描述:用于计算两个 float 数组的点积。
参数:
n
:数组大小。s
:存储点积结果的地址。x
:第一个数组。y
:第二个数组。
ggml_vec_dot_f16
void ggml_vec_dot_f16(const int n, float * restrict s, ggml_fp16_t * restrict x, ggml_fp16_t * restrict y)
描述:用于计算两个 ggml_fp16_t 数组的点积。
参数:
n
:数组大小。s
:存储点积结果的地址。x
:第一个数组。y
:第二个数组。
ggml_vec_dot_f16_unroll
void ggml_vec_dot_f16_unroll(const int n, const int xs, float * restrict s, void * restrict xv, ggml_fp16_t * restrict y)
描述:一次计算 GGML_VEC_DOT_UNROLL 个点积。
参数:
n
:数组大小。xs
:x 的行跨度(以字节为单位)。s
:存储点积结果的地址。xv
:x 的指针。y
:第二个数组。
ggml_vec_mad_f32
void ggml_vec_mad_f32(const int n, float * restrict y, const float * restrict x, const float v)
描述:计算 GGML_VEC_MAD_F32。
参数:
n
:数组大小。y
:目标数组。x
:源数组。v
:常量值。
ggml_vec_mad_f32_unroll
void ggml_vec_mad_f32_unroll(const int n, const int xs, const int vs, float * restrict y, const float * restrict xv, const float * restrict vv)
描述:对于给定的 x 和 v,xs 和 vs 分别是它们的字节步长。
参数:
n
:数组大小。xs
:x 的字节步长。vs
:v 的字节步长。y
:目标数组。xv
:x 的指针。vv
:v 的指针。
ggml_vec_scale_f32
void ggml_vec_scale_f32(const int n, float * y, const float v)
描述:对给定的 y 和 v,将 y 中的每个元素乘以 v。
参数:
n
:数组大小。y
:目标数组。v
:常量值。
ggml_vec_norm_f32
void ggml_vec_norm_f32(const int n, float * s, const float * x)
描述:计算向量的 L2 范数。
参数:
n
:数组大小。s
:存储范数结果的地址。x
:源数组。
ggml_vec_sqr_f32
void ggml_vec_sqr_f32(const int n, float * y, const float * x)
描述:计算向量的每个元素的平方。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_vec_sqrt_f32
void ggml_vec_sqrt_f32(const int n, float * y, const float * x)
描述:计算向量的每个元素的平方根。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_vec_log_f32
void ggml_vec_log_f32(const int n, float * y, const float * x)
描述:计算向量的每个元素的自然对数。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_vec_abs_f32
void ggml_vec_abs_f32(const int n, float * y, const float * x)
描述:计算向量的每个元素的绝对值。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_vec_sgn_f32
void ggml_vec_sgn_f32(const int n, float * y, const float * x)
描述:计算向量的每个元素的符号函数。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_vec_step_f32
void ggml_vec_step_f32(const int n, float * y, const float * x)
描述:计算向量的每个元素的阶跃函数。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_vec_tanh_f32
void ggml_vec_tanh_f32(const int n, float * y, const float * x)
描述:计算向量的每个元素的双曲正切函数。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_vec_elu_f32
void ggml_vec_elu_f32(const int n, float * y, const float * x)
描述:计算向量的每个元素的 ELU 函数。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_vec_relu_f32
void ggml_vec_relu_f32(const int n, float * y, const float * x)
描述:计算向量的每个元素的 ReLU 函数。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_vec_leaky_relu_f32
void ggml_vec_leaky_relu_f32(const int n, float * y, const float * x, const float ns)
描述:计算向量的每个元素的 Leaky ReLU 函数。
参数:
n
:数组大小。y
:目标数组。x
:源数组。ns
:Leaky ReLU 的斜率。
ggml_gelu_f32
float ggml_gelu_f32(float x)
描述:计算 GELU 函数。
参数:
x
:输入值。
返回值:GELU 函数的计算结果。
ggml_vec_gelu_f16
void ggml_vec_gelu_f16(const int n, ggml_fp16_t * y, const ggml_fp16_t * x)
描述:对输入的半精度浮点数数组进行 GELU 激活函数操作。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_vec_gelu_f32
void ggml_vec_gelu_f32(const int n, float * y, const float * x)
描述:对输入的单精度浮点数数组进行 GELU 激活函数操作。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_gelu_quick_f32
float ggml_gelu_quick_f32(float x)
描述:计算快速 GELU 激活函数。
参数:
x
:输入值。
返回值:快速 GELU 函数的计算结果。
ggml_vec_gelu_quick_f32
void ggml_vec_gelu_quick_f32(const int n, float * y, const float * x)
描述:对输入的单精度浮点数数组进行快速 GELU 激活函数操作。
参数:
n
:数组大小。y
:目标数组。x
:源数组。
ggml_silu_f32
float ggml_silu_f32(float x)
描述:计算 Sigmoid Linear Unit (SiLU) 函数。
参数:
x
:输入值。
返回值:SiLU 函数的计算结果。
ggml_vec_silu_f32
void ggml_vec_silu_f32(const int n, float * y, const float * x)
描述:对输入的单精度浮点数数组进行 SiLU 激活函数操作。
参数:
n
:数组大小。- `
GGML_OP_COUNT
类型:整数
描述:表示操作的总数,用于断言检查操作数组的大小是否正确。
GGML_OP_POOL_COUNT
类型:整数
描述:表示操作池的总数,用于断言检查操作池数组的大小是否正确。
GGML_UNARY_OP_COUNT
类型:整数
描述:表示一元操作的总数,用于断言检查一元操作数组的大小是否正确。
GGML_MEM_ALIGN
类型:整数
描述:表示内存对齐的大小,用于断言检查结构体大小是否为内存对齐的倍数。
GGML_MAX_CONTEXTS
类型:整数
描述:表示上下文容器的最大数量。
GGML_NUMA_MAX_NODES
类型:整数
描述:表示NUMA节点的最大数量。
GGML_NUMA_MAX_CPUS
类型:整数
描述:表示NUMA节点上CPU的最大数量。
ggml_object
描述:表示ggml库中的一个对象,包含类型、偏移量、大小和下一个对象的地址等信息。
字段 | 类型 | 描述 |
type | int | 对象类型 |
offs | size_t | 偏移量 |
size | size_t | 大小 |
next | struct ggml_object * | 下一个对象的地址 |
ggml_tensor
描述:表示ggml库中的一个张量,包含元素数量、块大小、类型等信息。
字段 | 类型 | 描述 |
ne | int64_t[GGML_MAX_DIMS] | 元素数量 |
nb | int64_t[GGML_MAX_DIMS] | 块大小 |
type | enum ggml_type | 类型 |
ggml_context
描述:表示ggml库的上下文,包含内存大小、缓冲区、对象链表等信息。
字段 | 类型 | 描述 |
mem_size | size_t | 内存大小 |
mem_buffer | void * | 内存缓冲区 |
mem_buffer_owned | bool | 是否拥有内存缓冲区 |
no_alloc | bool | 是否禁用分配 |
no_alloc_save | bool | 保存禁用分配状态 |
n_objects | int | 对象数量 |
objects_begin | struct ggml_object * | 对象链表开始 |
objects_end | struct ggml_object * | 对象链表结束 |
scratch | struct ggml_scratch | 临时空间 |
scratch_save | struct ggml_scratch | 保存的临时空间 |
ggml_context_container
描述:表示ggml库的上下文容器,包含是否使用和上下文信息。
字段 | 类型 | 描述 |
used | bool | 是否使用 |
context | struct ggml_context | 上下文信息 |
ggml_numa_node
描述:表示NUMA节点,包含该节点上的硬件线程信息。
字段 | 类型 | 描述 |
cpus | uint32_t[GGML_NUMA_MAX_CPUS] | 硬件线程数组 |
n_cpus | uint32_t | 硬件线程数量 |
ggml_numa_nodes
描述:表示NUMA节点集合,包含节点数组和总CPU数量。
字段 | 类型 | 描述 |
nodes | struct ggml_numa_node[GGML_NUMA_MAX_NODES] | NUMA节点数组 |
n_nodes | uint32_t | 节点数量 |
total_cpus | uint32_t | 总CPU数量 |
ggml_state
描述:表示ggml库的全局状态,包含上下文容器数组和NUMA节点信息。
字段 | 类型 | 描述 |
contexts | struct ggml_context_container[GGML_MAX_CONTEXTS] | 上下文容器数组 |
numa | struct ggml_numa_nodes | NUMA节点信息 |
ggml_vec_sum_f32
void ggml_vec_sum_f32(const int n, float * s, const float * x);
描述:计算float类型数组x中所有元素的和,并将结果存储到s指向的地址中。
参数:
n
:数组x的元素数量。s
:指向存储结果的地址。x
:输入数组。
返回值:无。
ggml_vec_sum_f32_ggf
inline static void ggml_vec_sum_f32_ggf(const int n, ggml_float * s, const float * x);
描述:计算float类型数组x中所有元素的和,并将结果存储到s指向的地址中。
参数:
n
:数组x的元素数量。s
:指向存储结果的地址。x
:输入数组。
返回值:无。
ggml_vec_sum_f16_ggf
inline static void ggml_vec_sum_f16_ggf(const int n, float * s, const ggml_fp16_t * x);
描述:计算fp16类型数组x中所有元素的和,并将结果存储到s指向的地址中。
参数:
n
:数组x的元素数量。s
:指向存储结果的地址。x
:输入数组。
返回值:无。
ggml_vec_max_f32
inline static void ggml_vec_max_f32(const int n, float * s, const float * x);
描述:计算float类型数组x中的最大值,并将结果存储到s指向的地址中。
参数:
n
:数组x的元素数量。s
:指向存储结果的地址。x
:输入数组。
返回值:无。
ggml_vec_norm_inv_f32
inline static void ggml_vec_norm_inv_f32(const int n, float * s, const float * x);
描述:计算float类型数组x的逆范数,并将结果存储到s指向的地址中。
参数:
n
:数组x的元素数量。s
:指向存储结果的地址。x
:输入数组。
返回值:无。
ggml_vec_argmax_f32
inline static void ggml_vec_argmax_f32(const int n, int * s, const float * x);
描述:计算float类型数组x中最大值的索引,并将结果存储到s指向的地址中。
参数:
n
:数组x的元素数量。s
:指向存储结果的地址。x
:输入数组。
返回值:无。
ggml_setup_op_has_task_pass
static void ggml_setup_op_has_task_pass(void);
描述:设置操作是否需要进行初始化或结束处理的任务通行证。
参数:无。
返回值:无。
ggml_numa_init
void ggml_numa_init(void);
描述:初始化NUMA支持。
参数:无。
返回值:无。
ggml_is_numa
bool ggml_is_numa(void);
描述:检查是否支持NUMA。
参数:无。
返回值:是否支持NUMA。
ggml_print_object
void ggml_print_object(const struct ggml_object * obj);
描述:打印ggml_object的信息。
参数:
obj
:要打印的ggml_object对象。
返回值:无。
ggml_print_objects
void ggml_print_objects(const struct ggml_context * ctx);
描述:打印上下文中的所有对象信息。
参数:
ctx
:上下文指针。
返回值:无。
ggml_nelements
int64_t ggml_nelements(const struct ggml_tensor * tensor);
描述:返回张量中元素的总数。
参数:
tensor
:张量指针。
返回值:元素总数。
ggml_nrows
int64_t ggml_nrows(const struct ggml_tensor * tensor);
描述:返回张量中的行数。
参数:
tensor
:张量指针。
返回值:行数。
ggml_nbytes
size_t ggml_nbytes(const struct ggml_tensor * tensor);
描述:返回张量占用的字节数。
参数:
tensor
:张量指针。
返回值:占用的字节数。
ggml_nbytes_pad
size_t ggml_nbytes_pad(const struct ggml_tensor * tensor);
描述:返回张量占用的字节数,按照内存对齐方式进行填充。
参数:
tensor
:张量指针。
返回值:填充后的字节数。
ggml_blck_size
int ggml_blck_size(enum ggml_type type);
描述:返回给定类型的块大小。
参数:
type
:类型枚举。
返回值:块大小。
ggml_type_size
size_t ggml_type_size(enum ggml_type type);
描述:返回给定类型的大小。
参数:
type
:类型枚举。
返回值:类型大小。
ggml_row_size
size_t ggml_row_size(enum ggml_type type, int64_t ne);
描述:计算给定类型和元素数量的行大小。
参数:
type
:类型枚举。ne
:元素数量。
返回值:行大小。
ggml_type_sizef
double ggml_type_sizef(enum ggml_type type);
描述:返回给定类型的大小(浮点数形式)。
参数:
type
:类型枚举。
返回值:类型大小(浮点数)。
ggml_type_name
const char * ggml_type_name(enum ggml_type type);
描述:返回给定类型的名称。
参数:
type
:类型枚举。
返回值:类型名称。
ggml_is_quantized
bool ggml_is_quantized(enum ggml_type type);
描述:返回给定类型是否是量化的。
参数:
type
:类型枚举。
返回值:是否量化。
ggml_op_name
const char * ggml_op_name(enum ggml_op op);
描述:返回给定操作的名称。
参数:
op
:操作枚举。
返回值:操作名称。
ggml_op_symbol
const char * ggml_op_symbol(enum ggml_op op);
描述:返回给定操作的符号。
参数:
op
:操作枚举。
返回值:操作符号。
ggml_unary_op_name
const char * ggml_unary_op_name(enum ggml_unary_op op);
描述:返回给定一元操作的名称。
参数:
op
:一元操作枚举。
返回值:一元操作名称。
ggml_op_desc
const char * ggml_op_desc(const struct ggml_tensor * t);
描述:返回给定张量的操作描述。
参数:
t
:张量指针。
返回值:操作描述。
GGML_MAX_DIMS
类型:整数
描述:表示张量的最大维度数。
GGML_MEM_ALIGN
类型:整数
描述:内存对齐的大小。
GGML_OBJECT_SIZE
类型:整数
描述:表示对象结构体的大小。
GGML_TENSOR_SIZE
类型:整数
描述:表示张量结构体的大小。
struct ggml_tensor
描述:表示一个张量的结构体。
字段 | 类型 | 描述 |
type | enum ggml_type | 张量的数据类型 |
ne | int64_t[GGML_MAX_DIMS] | 张量的维度大小 |
nb | size_t[GGML_MAX_DIMS] | 张量的块大小 |
op | enum ggml_op | 张量的操作类型 |
uop | enum ggml_unary_op | 张量的一元操作类型 |
view_src | struct ggml_tensor* | 视图源张量 |
view_offs | size_t | 视图偏移量 |
struct ggml_context
描述:表示一个ggml上下文的结构体。
字段 | 类型 | 描述 |
mem_size | size_t | 内存大小 |
mem_buffer | void* | 内存缓冲区 |
mem_buffer_owned | bool | 是否拥有内存缓冲区 |
no_alloc | bool | 是否禁止分配内存 |
n_objects | int | 对象数量 |
objects_begin | struct ggml_object* | 对象起始指针 |
objects_end | struct ggml_object* | 对象结束指针 |
scratch | struct ggml_scratch | 临时缓冲区 |
scratch_save | struct ggml_scratch | 保存的临时缓冲区 |
ggml_unary_op_name
const char * ggml_unary_op_name(enum ggml_unary_op uop);
描述:返回一元操作的名称。
ggml_op_name
const char * ggml_op_name(enum ggml_op op);
描述:返回操作的名称。
ggml_element_size
size_t ggml_element_size(const struct ggml_tensor * tensor);
描述:返回给定张量的元素大小。
ggml_is_scalar
bool ggml_is_scalar(const struct ggml_tensor * tensor);
描述:返回给定张量是否是标量。
ggml_is_vector
bool ggml_is_vector(const struct ggml_tensor * tensor);
描述:返回给定张量是否是向量。
ggml_is_matrix
bool ggml_is_matrix(const struct ggml_tensor * tensor);
描述:返回给定张量是否是矩阵。
ggml_is_3d
bool ggml_is_3d(const struct ggml_tensor * tensor);
描述:返回给定张量是否是3维的。
ggml_n_dims
int ggml_n_dims(const struct ggml_tensor * tensor);
描述:返回给定张量的维度数量。
ggml_can_mul_mat
static inline bool ggml_can_mul_mat(const struct ggml_tensor * t0, const struct ggml_tensor * t1);
描述:检查两个张量是否可以进行矩阵相乘。
ggml_can_out_prod
static inline bool ggml_can_out_prod(const struct ggml_tensor * t0, const struct ggml_tensor * t1);
描述:检查两个张量是否可以进行外积运算。
ggml_ftype_to_ggml_type
enum ggml_type ggml_ftype_to_ggml_type(enum ggml_ftype ftype);
描述:将ggml_ftype转换为ggml_type。
ggml_tensor_overhead
size_t ggml_tensor_overhead(void);
描述:返回GGML_OBJECT_SIZE和GGML_TENSOR_SIZE的总和,表示张量的开销。
ggml_is_transposed
bool ggml_is_transposed(const struct ggml_tensor * tensor);
描述:检查张量是否被转置。
ggml_is_contiguous
bool ggml_is_contiguous(const struct ggml_tensor * tensor);
描述:检查张量是否是连续的。
ggml_is_contiguous_except_dim_1
static inline bool ggml_is_contiguous_except_dim_1(const struct ggml_tensor * tensor);
描述:检查张量是否在第一维度以外是连续的。
ggml_is_permuted
bool ggml_is_permuted(const struct ggml_tensor * tensor);
描述:检查张量是否被置换。
ggml_is_padded_1d
static inline bool ggml_is_padded_1d(const struct ggml_tensor * tensor);
描述:检查张量是否在第一维度以外是填充的。
ggml_are_same_shape
bool ggml_are_same_shape(const struct ggml_tensor * t0, const struct ggml_tensor * t1);
描述:检查两个张量是否具有相同的形状。
ggml_can_repeat
static inline bool ggml_can_repeat(const struct ggml_tensor * t0, const struct ggml_tensor * t1);
描述:检查t1是否可以表示为t0的重复。
ggml_can_repeat_rows
static inline bool ggml_can_repeat_rows(const struct ggml_tensor * t0, const struct ggml_tensor * t1);
描述:检查t0和t1的第一个维度是否相等,并检查其余维度是否可以整除。
ggml_up32
static inline int ggml_up32(int n);
描述:将输入的整数n向上舍入到最接近的32的倍数。
ggml_up
static inline int ggml_up(int n, int m);
描述:将输入的整数n向上舍入到最接近的m的倍数。
ggml_assert_aligned
##define ggml_assert_aligned(ptr) \ GGML_ASSERT(((uintptr_t) (ptr))%GGML_MEM_ALIGN == 0)
描述:断言指针对齐到GGML_MEM_ALIGN。
ggml_init
struct ggml_context * ggml_init(struct ggml_init_params params);
描述:初始化ggml_context结构体的函数。
ggml_free
void ggml_free(struct ggml_context * ctx);
描述:释放ggml_context结构体的函数。
ggml_used_mem
size_t ggml_used_mem(const struct ggml_context * ctx);
描述:返回已使用的内存大小。
ggml_set_scratch
size_t ggml_set_scratch(struct ggml_context * ctx, struct ggml_scratch scratch);
描述:设置临时缓冲区,返回之前的临时缓冲区的偏移量。
ggml_get_no_alloc
bool ggml_get_no_alloc(struct ggml_context * ctx);
描述:获取是否禁止分配内存。
ggml_set_no_alloc
void ggml_set_no_alloc(struct ggml_context * ctx, bool no_alloc);
描述:设置是否禁止分配内存。
ggml_get_mem_buffer
void * ggml_get_mem_buffer(const struct ggml_context * ctx);
描述:获取内存缓冲区。
ggml_get_mem_size
size_t ggml_get_mem_size(const struct ggml_context * ctx);
描述:获取内存大小。
ggml_get_max_tensor_size
size_t ggml_get_max_tensor_size(const struct ggml_context * ctx);
描述:获取最大张量大小。
ggml_scratch_save
static void ggml_scratch_save(struct ggml_context * ctx);
描述:保存临时缓冲区。
ggml_scratch_load
static void ggml_scratch_load(struct ggml_context * ctx);
描述:加载临时缓冲区。
ggml_new_object
static struct ggml_object * ggml_new_object(struct ggml_context * ctx, enum ggml_object_type type, size_t size);
描述:创建新对象,始终将对象插入上下文内存池的末尾。
ggml_new_tensor_impl
static struct ggml_tensor * ggml_new_tensor_impl( struct ggml_context * ctx, enum ggml_type type, int n_dims, const int64_t * ne, struct ggml_tensor * view_src, size_t view_offs);
描述:创建新的张量对象。
GGML_MAX_DIMS
类型:整数常量
描述:表示张量的最大维度数。
GGML_MAX_OP_PARAMS
类型:整数常量
描述:表示张量操作参数的最大大小。
struct ggml_tensor
描述:表示一个张量,包含张量的类型、后端、缓冲区、维度大小、块大小、操作、操作参数、是否为参数、梯度、源张量、性能统计、视图源和偏移、数据、名称、额外信息和填充。
字段 | 类型 | 描述 |
type | enum ggml_type | 张量的数据类型 |
backend | enum ggml_backend | 张量的后端类型 |
buffer | void * | 张量的缓冲区指针 |
ne | int64_t[] | 张量的维度大小数组 |
nb | size_t[] | 张量的块大小数组 |
op | enum ggml_op | 张量的操作类型 |
op_params | void * | 张量的操作参数指针 |
is_param | bool | 是否为参数张量 |
grad | struct ggml_tensor * | 梯度张量 |
src | struct ggml_tensor *[] | 源张量数组 |
perf_runs | uint64_t | 性能统计运行次数 |
perf_cycles | uint64_t | 性能统计周期数 |
perf_time_us | uint64_t | 性能统计时间(微秒) |
view_src | struct ggml_tensor * | 视图源张量 |
view_offs | size_t | 视图偏移量 |
data | void * | 数据指针 |
name | char[] | 名称 |
extra | void * | 额外信息指针 |
padding | size_t[] | 填充数组 |
struct ggml_tensor * ggml_new_tensor(struct ggml_context * ctx, enum ggml_type type, int n_dims, const int64_t * ne)
{签名}
描述:创建一个新的张量,可以指定维度和类型。
参数:
ctx
:ggml上下文指针。type
:张量的数据类型。n_dims
:张量的维度数。ne
:指向张量维度大小数组的指针。
返回值:新创建的张量指针。
struct ggml_tensor * ggml_new_tensor_1d(struct ggml_context * ctx, enum ggml_type type, int64_t ne0)
{签名}
描述:创建一个一维张量。
参数:
ctx
:ggml上下文指针。type
:张量的数据类型。ne0
:一维张量的维度大小。
返回值:新创建的一维张量指针。
struct ggml_tensor * ggml_new_tensor_2d(struct ggml_context * ctx, enum ggml_type type, int64_t ne0, int64_t ne1)
{签名}
描述:创建一个二维张量。
参数:
ctx
:ggml上下文指针。type
:张量的数据类型。ne0
:二维张量的第一个维度大小。ne1
:二维张量的第二个维度大小。
返回值:新创建的二维张量指针。
struct ggml_tensor * ggml_new_tensor_3d(struct ggml_context * ctx, enum ggml_type type, int64_t ne0, int64_t ne1, int64_t ne2)
{签名}
描述:创建一个三维张量。
参数:
ctx
:ggml上下文指针。type
:张量的数据类型。ne0
:三维张量的第一个维度大小。ne1
:三维张量的第二个维度大小。ne2
:三维张量的第三个维度大小。
返回值:新创建的三维张量指针。
struct ggml_tensor * ggml_new_tensor_4d(struct ggml_context * ctx, enum ggml_type type, int64_t ne0, int64_t ne1, int64_t ne2, int64_t ne3)
{签名}
描述:创建一个四维张量。
参数:
ctx
:ggml上下文指针。type
:张量的数据类型。ne0
:四维张量的第一个维度大小。ne1
:四维张量的第二个维度大小。ne2
:四维张量的第三个维度大小。ne3
:四维张量的第四个维度大小。
返回值:新创建的四维张量指针。
struct ggml_tensor * ggml_new_i32(struct ggml_context * ctx, int32_t value)
{签名}
描述:创建一个包含单个 int32 值的张量。
参数:
ctx
:ggml上下文指针。value
:要设置的 int32 值。
返回值:新创建的包含单个 int32 值的张量指针。
struct ggml_tensor * ggml_new_f32(struct ggml_context * ctx, float value)
{签名}
描述:创建一个包含单个 float 值的张量。
参数:
ctx
:ggml上下文指针。value
:要设置的 float 值。
返回值:新创建的包含单个 float 值的张量指针。
struct ggml_tensor * ggml_dup_tensor(struct ggml_context * ctx, const struct ggml_tensor * src)
{签名}
描述:复制给定张量的内容,创建一个新的张量。
参数:
ctx
:ggml上下文指针。src
:要复制的源张量。
返回值:新创建的复制源张量内容的张量指针。
GGML 非官方中文文档(2)https://developer.aliyun.com/article/1524359