Lugh
view release on metacpan or search on metacpan
lib/Lugh/Quant.xs view on Meta::CPAN
OUTPUT:
RETVAL
int
is_quantized(type)
int type
CODE:
if (type < 0 || type >= GGML_TYPE_COUNT) {
RETVAL = 0;
} else {
RETVAL = ggml_is_quantized((enum ggml_type)type) ? 1 : 0;
}
OUTPUT:
RETVAL
double
type_sizef(type)
int type
CODE:
if (type < 0 || type >= GGML_TYPE_COUNT) {
croak("Invalid type: %d", type);
}
RETVAL = ggml_type_sizef((enum ggml_type)type);
OUTPUT:
RETVAL
size_t
row_size(type, n_elements)
int type
int64_t n_elements
CODE:
if (type < 0 || type >= GGML_TYPE_COUNT) {
croak("Invalid type: %d", type);
}
RETVAL = ggml_row_size((enum ggml_type)type, n_elements);
OUTPUT:
RETVAL
int
requires_imatrix(type)
int type
CODE:
if (type < 0 || type >= GGML_TYPE_COUNT) {
croak("Invalid type: %d", type);
}
RETVAL = ggml_quantize_requires_imatrix((enum ggml_type)type) ? 1 : 0;
OUTPUT:
RETVAL
int
type_count()
CODE:
RETVAL = GGML_TYPE_COUNT;
OUTPUT:
RETVAL
void
all_types()
PREINIT:
int i;
PPCODE:
EXTEND(SP, GGML_TYPE_COUNT);
for (i = 0; i < GGML_TYPE_COUNT; i++) {
const char *name = ggml_type_name((enum ggml_type)i);
if (name && strlen(name) > 0) {
mPUSHi(i);
}
}
void
all_quantized_types()
PREINIT:
int i;
PPCODE:
for (i = 0; i < GGML_TYPE_COUNT; i++) {
if (ggml_is_quantized((enum ggml_type)i)) {
XPUSHs(sv_2mortal(newSViv(i)));
}
}
int
type_from_name(name)
const char *name
CODE:
int i;
RETVAL = -1;
for (i = 0; i < GGML_TYPE_COUNT; i++) {
const char *tname = ggml_type_name((enum ggml_type)i);
if (tname && strEQ(tname, name)) {
RETVAL = i;
break;
}
}
OUTPUT:
RETVAL
void
type_info(type)
int type
PREINIT:
HV *hv;
const char *name;
CODE:
if (type < 0 || type >= GGML_TYPE_COUNT) {
croak("Invalid type: %d", type);
}
hv = newHV();
name = ggml_type_name((enum ggml_type)type);
hv_store(hv, "type", 4, newSViv(type), 0);
hv_store(hv, "name", 4, newSVpv(name ? name : "unknown", 0), 0);
hv_store(hv, "size", 4, newSVuv(ggml_type_size((enum ggml_type)type)), 0);
hv_store(hv, "blck_size", 9, newSViv(ggml_blck_size((enum ggml_type)type)), 0);
hv_store(hv, "sizef", 5, newSVnv(ggml_type_sizef((enum ggml_type)type)), 0);
hv_store(hv, "is_quantized", 12,
newSViv(ggml_is_quantized((enum ggml_type)type) ? 1 : 0), 0);
hv_store(hv, "requires_imatrix", 16,
newSViv(ggml_quantize_requires_imatrix((enum ggml_type)type) ? 1 : 0), 0);
ST(0) = sv_2mortal(newRV_noinc((SV*)hv));
XSRETURN(1);
BOOT:
{
dTHX;
HV *stash = gv_stashpv("Lugh::Quant", GV_ADD);
AV *export_ok;
HV *export_tags;
AV *types_tag;
AV *funcs_tag;
/* ========================================================================
* Type Constants
( run in 0.488 second using v1.01-cache-2.11-cpan-5511b514fd6 )