]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
OpenCL: Add release memory (#1741)
authorRobert Sung-wook Shin <redacted>
Fri, 9 Jun 2023 16:24:40 +0000 (01:24 +0900)
committerGitHub <redacted>
Fri, 9 Jun 2023 16:24:40 +0000 (18:24 +0200)
* Add opencl release memory

* Rename function name

ggml-opencl.cpp
ggml-opencl.h
llama.cpp

index 81a975cf8b4ead2a7da9a671173266265f9b2228..7b6daf4a87e8571bd00cb774ec45f7f7d8a84eab 100644 (file)
@@ -662,6 +662,15 @@ static void ggml_cl_pool_free(cl_mem mem, size_t size) {
     clReleaseMemObject(mem);
 }
 
+void ggml_cl_free_data(const struct ggml_tensor* tensor) {
+    if (tensor->backend != GGML_BACKEND_GPU) {
+        return;
+    }
+
+    cl_mem mem = (cl_mem)tensor->data;
+    clReleaseMemObject(mem);
+}
+
 static cl_int ggml_cl_h2d_tensor_2d(cl_command_queue queue, cl_mem dst, size_t offset, const struct ggml_tensor * src, uint64_t i3, uint64_t i2, cl_event* ev) {
     cl_int err;
     const uint64_t ne0 = src->ne[0];
index c850bb8ad1d060f2bc9b750e74a1f9399648df4b..bf95e5cd0b9de860e9fb4a0d5ea3eecd412754d8 100644 (file)
@@ -16,6 +16,8 @@ void   ggml_cl_mul_mat(const struct ggml_tensor * src0, const struct ggml_tensor
 void * ggml_cl_host_malloc(size_t size);
 void   ggml_cl_host_free(void * ptr);
 
+void ggml_cl_free_data(const struct ggml_tensor* tensor);
+
 void ggml_cl_transform_tensor(struct ggml_tensor * tensor);
 void ggml_cl_load_data(const char * fname, struct ggml_tensor * tensor, size_t offset);
 
index 16d6f6ef1c68c9b3d9ec31496a710f1c6d806df3..f40c5afa2fc4f68f40f931572ef0e5bfc662d1e1 100644 (file)
--- a/llama.cpp
+++ b/llama.cpp
@@ -210,7 +210,11 @@ struct llama_model {
         for (size_t i = 0; i < tensors_by_name.size(); ++i) {
             ggml_cuda_free_data(tensors_by_name[i].second);
         }
-#endif // GGML_USE_CUBLAS
+#elif defined(GGML_USE_CLBLAST)
+        for (size_t i = 0; i < tensors_by_name.size(); ++i) {
+            ggml_cl_free_data(tensors_by_name[i].second);
+        }
+#endif
     }
 };