Explorar el Código

cuda : fix device sync on buffer clear (#14033)

Diego Devesa hace 7 meses
padre
commit
8f47e25f56
Se han modificado 1 ficheros con 2 adiciones y 3 borrados
  1. 2 3
      ggml/src/ggml-cuda/ggml-cuda.cu

+ 2 - 3
ggml/src/ggml-cuda/ggml-cuda.cu

@@ -615,9 +615,8 @@ static void ggml_backend_cuda_buffer_clear(ggml_backend_buffer_t buffer, uint8_t
     ggml_backend_cuda_buffer_context * ctx = (ggml_backend_cuda_buffer_context *)buffer->context;
 
     ggml_cuda_set_device(ctx->device);
-    CUDA_CHECK(cudaDeviceSynchronize());
-    CUDA_CHECK(cudaMemset(ctx->dev_ptr, value, buffer->size));
-    CUDA_CHECK(cudaDeviceSynchronize());
+    CUDA_CHECK(cudaMemsetAsync(ctx->dev_ptr, value, buffer->size, cudaStreamPerThread));
+    CUDA_CHECK(cudaStreamSynchronize(cudaStreamPerThread));
 }
 
 static const ggml_backend_buffer_i ggml_backend_cuda_buffer_interface = {