Skip to content

Commit fde385f

Browse files
committed
feat: add LlamaModelTensorBuftOverride class
1 parent f27c704 commit fde385f

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

ext/llama_cpp/llama_cpp.c

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ VALUE rb_mLlamaCpp;
44
VALUE rb_cLlamaVocab;
55
VALUE rb_cLlamaModel;
66
VALUE rb_cLlamaContext;
7+
VALUE rb_cLlamaModelTensorBuftOverride;
78
VALUE rb_cLlamaModelParams;
89
VALUE rb_cLlamaContextParams;
910
VALUE rb_cLlamaModelQuantizeParams;
@@ -361,6 +362,49 @@ static VALUE llama_model_kv_override_get_val_str(VALUE self) {
361362
return rb_utf8_str_new_cstr(data->val_str);
362363
}
363364

365+
/* struct llama_model_tensor_buft_override */
366+
static void llama_model_tensor_buft_override_free(void *ptr) {
367+
if (ptr) {
368+
ruby_xfree(ptr);
369+
}
370+
}
371+
372+
static size_t llama_model_tensor_buft_override_size(const void *ptr) {
373+
return sizeof(*((struct llama_model_tensor_buft_override*)ptr));
374+
}
375+
376+
static rb_data_type_t llama_model_tensor_buft_override_type = {
377+
"LlamaModelTensorBuftOverride",
378+
{ NULL,
379+
llama_model_tensor_buft_override_free,
380+
llama_model_tensor_buft_override_size },
381+
NULL,
382+
NULL,
383+
RUBY_TYPED_FREE_IMMEDIATELY
384+
};
385+
386+
static VALUE llama_model_tensor_buft_override_alloc(VALUE self) {
387+
struct llama_model_tensor_buft_override* data = (struct llama_model_tensor_buft_override*)ruby_xmalloc(sizeof(struct llama_model_tensor_buft_override));
388+
return TypedData_Wrap_Struct(self, &llama_model_tensor_buft_override_type, data);
389+
}
390+
391+
static struct llama_model_tensor_buft_override* get_llama_model_tensor_buft_override(VALUE self) {
392+
struct llama_model_tensor_buft_override* data = NULL;
393+
TypedData_Get_Struct(self, struct llama_model_tensor_buft_override, &llama_model_tensor_buft_override_type, data);
394+
return data;
395+
}
396+
397+
static VALUE llama_model_tensor_buft_override_get_pattern(VALUE self) {
398+
struct llama_model_tensor_buft_override* data = get_llama_model_tensor_buft_override(self);
399+
const char* pattern = data->pattern;
400+
return rb_utf8_str_new_cstr(pattern);
401+
}
402+
403+
// static VALUE llama_model_tensor_buft_override_get_buft(VALUE self) {
404+
// struct llama_model_tensor_buft_override* data = get_llama_model_tensor_buft_override(self);
405+
// return TypedData_Wrap_Struct(rb_cGgmlBackendBufferTypeT, &llama_model_wrapper_data_type, data->buft);
406+
// }
407+
364408
/* struct llama_model_params */
365409
static void llama_model_params_free(void *ptr) {
366410
if (ptr) {
@@ -4188,6 +4232,18 @@ void Init_llama_cpp(void) {
41884232
*/
41894233
rb_define_method(rb_cLlamaModelKvOverride, "val_str", RUBY_METHOD_FUNC(llama_model_kv_override_get_val_str), 0);
41904234

4235+
/**
4236+
* Document-class: LlamaCpp::LlamaModelTensorBuftOverride
4237+
* "struct llama_model_tensor_buf_override" wrapper class
4238+
*/
4239+
rb_cLlamaModelTensorBuftOverride = rb_define_class_under(rb_mLlamaCpp, "LlamaModelTensorBuftOverride", rb_cObject);
4240+
rb_define_alloc_func(rb_cLlamaModelTensorBuftOverride, llama_model_tensor_buft_override_alloc);
4241+
/**
4242+
* Document-method: pattern
4243+
* @return [String]
4244+
*/
4245+
rb_define_method(rb_cLlamaModelTensorBuftOverride, "pattern", RUBY_METHOD_FUNC(llama_model_tensor_buft_override_get_pattern), 0);
4246+
/* TODO: ggml_backend_buffer_type_t buff */
41914247

41924248
/**
41934249
* Document-class: LlamaCpp::LlamaModelParams
@@ -4196,6 +4252,7 @@ void Init_llama_cpp(void) {
41964252
rb_cLlamaModelParams = rb_define_class_under(rb_mLlamaCpp, "LlamaModelParams", rb_cObject);
41974253
rb_define_alloc_func(rb_cLlamaModelParams, llama_model_params_alloc);
41984254
/* TODO: ggml_backend_dev_t* devices */
4255+
/* TODO: const struct llama_model_tensor_buft_override * tensor_buft_overrides */
41994256
/**
42004257
* Document-method: n_gpu_layers
42014258
* @return [Integer]

0 commit comments

Comments
 (0)