Skip to content

Commit e914ac7

Browse files
Ming Xieflynnjiang
authored andcommitted
ggml/kompute: Introducing struct ggml_backend_kompute_buffer_context
Signed-off-by: Ming Xie <xieming@kylinos.cn>
1 parent 3666c86 commit e914ac7

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

ggml/src/ggml-kompute.cpp

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,10 @@ struct ggml_vk_memory {
112112
vk::Buffer *stagingBuffer = nullptr;
113113
};
114114

115+
struct ggml_backend_kompute_buffer_context {
116+
struct ggml_vk_memory memory;
117+
};
118+
115119
#ifdef __linux__
116120
__attribute__((constructor))
117121
static void enable_sam() {
@@ -1826,15 +1830,16 @@ static const char * ggml_backend_kompute_buffer_get_name(ggml_backend_buffer_t b
18261830
}
18271831

18281832
static void ggml_backend_kompute_buffer_free_buffer(ggml_backend_buffer_t buffer) {
1829-
auto * memory = (ggml_vk_memory *)buffer->context;
1833+
auto * ctx = static_cast<ggml_backend_kompute_buffer_context *>(buffer->context);
18301834
if (ggml_vk_has_device()) {
1831-
ggml_vk_free_memory(*memory);
1835+
ggml_vk_free_memory(ctx->memory);
18321836
}
1833-
delete memory;
1837+
delete ctx;
18341838
}
18351839

18361840
static void * ggml_backend_kompute_buffer_get_base(ggml_backend_buffer_t buffer) {
1837-
return ((ggml_vk_memory *)buffer->context)->data;
1841+
auto * ctx = static_cast<ggml_backend_kompute_buffer_context *>(buffer->context);
1842+
return ctx->memory.data;
18381843
}
18391844

18401845
static void ggml_backend_kompute_buffer_set_tensor(ggml_backend_buffer_t buffer, ggml_tensor * tensor, const void * data, size_t offset, size_t size) {
@@ -1860,11 +1865,11 @@ static void ggml_backend_kompute_buffer_get_tensor(ggml_backend_buffer_t buffer,
18601865
}
18611866

18621867
static void ggml_backend_kompute_buffer_clear(ggml_backend_buffer_t buffer, uint8_t value) {
1863-
auto * memory = (ggml_vk_memory *)buffer->context;
1864-
memset(memory->data, value, buffer->size);
1868+
auto * ctx = static_cast<ggml_backend_kompute_buffer_context *>(buffer->context);
1869+
memset(ctx->memory.data, value, ctx->memory.size);
18651870

1866-
if (memory->stagingBuffer)
1867-
komputeManager()->sequence()->eval<kp::OpBufferSyncDevice>(memory->primaryBuffer, memory->stagingBuffer, memory->size);
1871+
if (ctx->memory.stagingBuffer)
1872+
komputeManager()->sequence()->eval<kp::OpBufferSyncDevice>(ctx->memory.primaryBuffer, ctx->memory.stagingBuffer, ctx->memory.size);
18681873
}
18691874

18701875
static ggml_backend_buffer_i ggml_backend_kompute_buffer_i = {
@@ -1888,7 +1893,8 @@ static const char * ggml_backend_kompute_buffer_type_get_name(ggml_backend_buffe
18881893

18891894
static ggml_backend_buffer_t ggml_backend_kompute_buffer_type_alloc_buffer(ggml_backend_buffer_type_t buft, size_t size) {
18901895
ggml_backend_kompute_device_ref(buft);
1891-
auto * ctx = new ggml_vk_memory(ggml_vk_allocate(size));
1896+
auto * ctx = new ggml_backend_kompute_buffer_context;
1897+
ctx->memory = ggml_vk_allocate(size);
18921898
return ggml_backend_buffer_init(buft, ggml_backend_kompute_buffer_i, ctx, size);
18931899
}
18941900

0 commit comments

Comments
 (0)