Neo Zhang Jianyu commited on
Commit
3d4b079
·
1 Parent(s): 5560cd6

Revert "sycl:remove redundant memcopy in function ggml_backend_sycl_buffer_set_tensor" (llama/12812)

Browse files

* Revert "sycl: remove redundant memcopy in function ggml_backend_sycl_buffer_s…"

This reverts commit 518a01480eb3a7c80a4951b430db9dee55428310.

* Update ggml/src/ggml-sycl/ggml-sycl.cpp

* Update ggml/src/ggml-sycl/ggml-sycl.cpp

* rm tail space

Files changed (1) hide show
  1. ggml/src/ggml-sycl/ggml-sycl.cpp +6 -1
ggml/src/ggml-sycl/ggml-sycl.cpp CHANGED
@@ -372,9 +372,14 @@ static void ggml_backend_sycl_buffer_set_tensor(ggml_backend_buffer_t buffer,
372
  auto stream = &(dpct::dev_mgr::instance().get_device(ctx->device).default_queue());
373
  SYCL_CHECK(
374
  CHECK_TRY_ERROR(dpct::dev_mgr::instance().get_device(ctx->device).queues_wait_and_throw()));
 
 
 
 
375
  SYCL_CHECK(
376
- CHECK_TRY_ERROR((*stream).memcpy((char *)tensor->data + offset, data, size)
377
  .wait()));
 
378
  }
379
  catch (sycl::exception const &exc) {
380
  std::cerr << exc.what() << "Exception caught at file:" << __FILE__
 
372
  auto stream = &(dpct::dev_mgr::instance().get_device(ctx->device).default_queue());
373
  SYCL_CHECK(
374
  CHECK_TRY_ERROR(dpct::dev_mgr::instance().get_device(ctx->device).queues_wait_and_throw()));
375
+ // Note: Use host buffer to save the data from mmap(), then copy to device. It's workaround for mmap() issue on PVC GPU.
376
+ // This function will be called during load model from disk. Use memory buffer replace dynamic won't save more time and brings potential memory leak risk here.
377
+ char* host_buf = (char*)malloc(size);
378
+ memcpy(host_buf, data, size);
379
  SYCL_CHECK(
380
+ CHECK_TRY_ERROR((*stream).memcpy((char *)tensor->data + offset, host_buf, size)
381
  .wait()));
382
+ free(host_buf);
383
  }
384
  catch (sycl::exception const &exc) {
385
  std::cerr << exc.what() << "Exception caught at file:" << __FILE__