@@ -487,6 +487,22 @@ catch (sycl::exception const &exc) {
487
487
std::exit (1 );
488
488
}
489
489
490
+ static void ggml_backend_sycl_buffer_reset (ggml_backend_buffer_t buffer) {
491
+ GGML_SYCL_DEBUG (" [SYCL] call %s\n " , __func__);
492
+ if (buffer == nullptr ) {
493
+ return ;
494
+ }
495
+
496
+ ggml_backend_sycl_buffer_context * ctx = (ggml_backend_sycl_buffer_context *) buffer->context ;
497
+
498
+ if (ctx != nullptr ) {
499
+ for (ggml_tensor_extra_gpu * extra : ctx->tensor_extras ) {
500
+ release_extra_gpu (extra);
501
+ }
502
+ ctx->tensor_extras .clear (); // reset the tensor_extras vector
503
+ }
504
+ }
505
+
490
506
static const ggml_backend_buffer_i ggml_backend_sycl_buffer_interface = {
491
507
/* .free_buffer = */ ggml_backend_sycl_buffer_free_buffer,
492
508
/* .get_base = */ ggml_backend_sycl_buffer_get_base,
@@ -496,7 +512,7 @@ static const ggml_backend_buffer_i ggml_backend_sycl_buffer_interface = {
496
512
/* .get_tensor = */ ggml_backend_sycl_buffer_get_tensor,
497
513
/* .cpy_tensor = */ ggml_backend_sycl_buffer_cpy_tensor,
498
514
/* .clear = */ ggml_backend_sycl_buffer_clear,
499
- /* .reset = */ NULL ,
515
+ /* .reset = */ ggml_backend_sycl_buffer_reset ,
500
516
};
501
517
502
518
// sycl buffer type
@@ -577,7 +593,6 @@ ggml_backend_buffer_type_t ggml_backend_sycl_buffer_type(int device) {
577
593
static std::mutex mutex;
578
594
std::lock_guard<std::mutex> lock (mutex);
579
595
580
- GGML_SYCL_DEBUG (" [SYCL] call ggml_backend_sycl_buffer_type\n " );
581
596
582
597
auto dev_count = ggml_backend_sycl_get_device_count ();
583
598
@@ -3762,7 +3777,6 @@ bool ggml_backend_is_sycl(ggml_backend_t backend) {
3762
3777
}
3763
3778
3764
3779
int ggml_backend_sycl_get_device_count () {
3765
- GGML_SYCL_DEBUG (" [SYCL] call ggml_backend_sycl_get_device_count\n " );
3766
3780
return ggml_sycl_info ().device_count ;
3767
3781
}
3768
3782
0 commit comments