@@ -487,6 +487,22 @@ catch (sycl::exception const &exc) {
487487 std::exit (1 );
488488}
489489
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+
490506static const ggml_backend_buffer_i ggml_backend_sycl_buffer_interface = {
491507 /* .free_buffer = */ ggml_backend_sycl_buffer_free_buffer,
492508 /* .get_base = */ ggml_backend_sycl_buffer_get_base,
@@ -496,7 +512,7 @@ static const ggml_backend_buffer_i ggml_backend_sycl_buffer_interface = {
496512 /* .get_tensor = */ ggml_backend_sycl_buffer_get_tensor,
497513 /* .cpy_tensor = */ ggml_backend_sycl_buffer_cpy_tensor,
498514 /* .clear = */ ggml_backend_sycl_buffer_clear,
499- /* .reset = */ NULL ,
515+ /* .reset = */ ggml_backend_sycl_buffer_reset ,
500516};
501517
502518// sycl buffer type
@@ -577,7 +593,6 @@ ggml_backend_buffer_type_t ggml_backend_sycl_buffer_type(int device) {
577593 static std::mutex mutex;
578594 std::lock_guard<std::mutex> lock (mutex);
579595
580- GGML_SYCL_DEBUG (" [SYCL] call ggml_backend_sycl_buffer_type\n " );
581596
582597 auto dev_count = ggml_backend_sycl_get_device_count ();
583598
@@ -3762,7 +3777,6 @@ bool ggml_backend_is_sycl(ggml_backend_t backend) {
37623777}
37633778
37643779int ggml_backend_sycl_get_device_count () {
3765- GGML_SYCL_DEBUG (" [SYCL] call ggml_backend_sycl_get_device_count\n " );
37663780 return ggml_sycl_info ().device_count ;
37673781}
37683782
0 commit comments