Skip to content

Commit 98ed165

Browse files
authored
OpenCL: Add release memory (#1741)
* Add opencl release memory * Rename function name
1 parent ae9663f commit 98ed165

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

ggml-opencl.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,15 @@ static void ggml_cl_pool_free(cl_mem mem, size_t size) {
662662
clReleaseMemObject(mem);
663663
}
664664

665+
void ggml_cl_free_data(const struct ggml_tensor* tensor) {
666+
if (tensor->backend != GGML_BACKEND_GPU) {
667+
return;
668+
}
669+
670+
cl_mem mem = (cl_mem)tensor->data;
671+
clReleaseMemObject(mem);
672+
}
673+
665674
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) {
666675
cl_int err;
667676
const uint64_t ne0 = src->ne[0];

ggml-opencl.h

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ void ggml_cl_mul_mat(const struct ggml_tensor * src0, const struct ggml_tensor
1616
void * ggml_cl_host_malloc(size_t size);
1717
void ggml_cl_host_free(void * ptr);
1818

19+
void ggml_cl_free_data(const struct ggml_tensor* tensor);
20+
1921
void ggml_cl_transform_tensor(struct ggml_tensor * tensor);
2022
void ggml_cl_load_data(const char * fname, struct ggml_tensor * tensor, size_t offset);
2123

llama.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,11 @@ struct llama_model {
210210
for (size_t i = 0; i < tensors_by_name.size(); ++i) {
211211
ggml_cuda_free_data(tensors_by_name[i].second);
212212
}
213-
#endif // GGML_USE_CUBLAS
213+
#elif defined(GGML_USE_CLBLAST)
214+
for (size_t i = 0; i < tensors_by_name.size(); ++i) {
215+
ggml_cl_free_data(tensors_by_name[i].second);
216+
}
217+
#endif
214218
}
215219
};
216220

0 commit comments

Comments
 (0)