@@ -4,6 +4,7 @@ VALUE rb_mLlamaCpp;
4
4
VALUE rb_cLlamaVocab ;
5
5
VALUE rb_cLlamaModel ;
6
6
VALUE rb_cLlamaContext ;
7
+ VALUE rb_cLlamaModelTensorBuftOverride ;
7
8
VALUE rb_cLlamaModelParams ;
8
9
VALUE rb_cLlamaContextParams ;
9
10
VALUE rb_cLlamaModelQuantizeParams ;
@@ -361,6 +362,49 @@ static VALUE llama_model_kv_override_get_val_str(VALUE self) {
361
362
return rb_utf8_str_new_cstr (data -> val_str );
362
363
}
363
364
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
+
364
408
/* struct llama_model_params */
365
409
static void llama_model_params_free (void * ptr ) {
366
410
if (ptr ) {
@@ -4188,6 +4232,18 @@ void Init_llama_cpp(void) {
4188
4232
*/
4189
4233
rb_define_method (rb_cLlamaModelKvOverride , "val_str" , RUBY_METHOD_FUNC (llama_model_kv_override_get_val_str ), 0 );
4190
4234
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 */
4191
4247
4192
4248
/**
4193
4249
* Document-class: LlamaCpp::LlamaModelParams
@@ -4196,6 +4252,7 @@ void Init_llama_cpp(void) {
4196
4252
rb_cLlamaModelParams = rb_define_class_under (rb_mLlamaCpp , "LlamaModelParams" , rb_cObject );
4197
4253
rb_define_alloc_func (rb_cLlamaModelParams , llama_model_params_alloc );
4198
4254
/* TODO: ggml_backend_dev_t* devices */
4255
+ /* TODO: const struct llama_model_tensor_buft_override * tensor_buft_overrides */
4199
4256
/**
4200
4257
* Document-method: n_gpu_layers
4201
4258
* @return [Integer]
0 commit comments