Skip to content

Commit d04a23b

Browse files
committed
misc fixes
1 parent aa12f29 commit d04a23b

File tree

4 files changed

+20
-30
lines changed

4 files changed

+20
-30
lines changed

ggml/include/ggml-alloc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ struct ggml_tallocr {
1919
};
2020

2121
GGML_API struct ggml_tallocr ggml_tallocr_new(ggml_backend_buffer_t buffer);
22-
GGML_API void ggml_tallocr_alloc(struct ggml_tallocr * talloc, struct ggml_tensor * tensor);
22+
GGML_API enum ggml_status ggml_tallocr_alloc(struct ggml_tallocr * talloc, struct ggml_tensor * tensor);
2323

2424
// Graph allocator
2525
/*

ggml/src/ggml-alloc.c

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ struct ggml_tallocr ggml_tallocr_new(ggml_backend_buffer_t buffer) {
8989
return talloc;
9090
}
9191

92-
void ggml_tallocr_alloc(struct ggml_tallocr * talloc, struct ggml_tensor * tensor) {
92+
enum ggml_status ggml_tallocr_alloc(struct ggml_tallocr * talloc, struct ggml_tensor * tensor) {
9393
size_t size = ggml_backend_buffer_get_alloc_size(talloc->buffer, tensor);
9494
size = GGML_PAD(size, talloc->alignment);
9595

@@ -104,7 +104,7 @@ void ggml_tallocr_alloc(struct ggml_tallocr * talloc, struct ggml_tensor * tenso
104104

105105
assert(((uintptr_t)addr % talloc->alignment) == 0);
106106

107-
ggml_backend_tensor_alloc(talloc->buffer, tensor, addr);
107+
return ggml_backend_tensor_alloc(talloc->buffer, tensor, addr);
108108
}
109109

110110
// dynamic tensor allocator
@@ -933,7 +933,7 @@ size_t ggml_gallocr_get_buffer_size(ggml_gallocr_t galloc, int buffer_id) {
933933

934934
// utils
935935

936-
static void free_buffers(ggml_backend_buffer_t ** buffers, size_t * n_buffers) {
936+
static void free_buffers(ggml_backend_buffer_t ** buffers, const size_t * n_buffers) {
937937
for (size_t i = 0; i < *n_buffers; i++) {
938938
ggml_backend_buffer_free((*buffers)[i]);
939939
}
@@ -947,47 +947,37 @@ static bool alloc_tensor_range(struct ggml_context * ctx,
947947

948948
ggml_backend_buffer_t buffer = ggml_backend_buft_alloc_buffer(buft, size);
949949
if (buffer == NULL) {
950-
#ifndef NDEBUG
951-
GGML_LOG_DEBUG("%s: failed to allocate %s buffer of size %zu\n", __func__, ggml_backend_buft_name(buft), size);
952-
#endif
950+
GGML_LOG_ERROR("%s: failed to allocate %s buffer of size %zu\n", __func__, ggml_backend_buft_name(buft), size);
953951
free_buffers(buffers, n_buffers);
954952
return false;
955953
}
956954

955+
*buffers = realloc(*buffers, sizeof(ggml_backend_buffer_t) * (*n_buffers + 1));
956+
(*buffers)[(*n_buffers)++] = buffer;
957+
957958
struct ggml_tallocr tallocr = ggml_tallocr_new(buffer);
958959

959960
for (struct ggml_tensor * t = first; t != last; t = ggml_get_next_tensor(ctx, t)) {
961+
enum ggml_status status = GGML_STATUS_SUCCESS;
960962
if (t->data == NULL) {
961963
if (t->view_src == NULL) {
962-
ggml_tallocr_alloc(&tallocr, t);
964+
status = ggml_tallocr_alloc(&tallocr, t);
963965
} else if (t->buffer == NULL) {
964-
enum ggml_status status = ggml_backend_view_init(t);
965-
if (status != GGML_STATUS_SUCCESS) {
966-
GGML_LOG_WARN("%s: failed to ggml_backend_view_init: %s\n", __func__, ggml_status_to_string(status));
967-
free_buffers(buffers, n_buffers); // Check with reviewers
968-
ggml_backend_buffer_free(buffer);
969-
// Check with reviewers: any need to nullify all the tensors ptrs (first, ..., t)?
970-
return false;
971-
}
966+
status = ggml_backend_view_init(t);
972967
}
973968
} else {
974969
if (t->view_src != NULL && t->buffer == NULL) {
975970
// view of a pre-allocated tensor
976-
enum ggml_status status = ggml_backend_view_init(t);
977-
if (status != GGML_STATUS_SUCCESS) {
978-
GGML_LOG_WARN("%s: failed to ggml_backend_view_init: %s\n", __func__, ggml_status_to_string(status));
979-
// Check with reviewers: any need to nullify all the tensors (first, ..., t)?
980-
free_buffers(buffers, n_buffers); // Check with reviewers
981-
ggml_backend_buffer_free(buffer);
982-
return false;
983-
}
971+
status = ggml_backend_view_init(t);
984972
}
985973
}
974+
if (status != GGML_STATUS_SUCCESS) {
975+
GGML_LOG_ERROR("%s: failed to initialize tensor %s\n", __func__, t->name);
976+
free_buffers(buffers, n_buffers);
977+
return false;
978+
}
986979
}
987980

988-
*buffers = realloc(*buffers, sizeof(ggml_backend_buffer_t) * (*n_buffers + 1));
989-
(*buffers)[(*n_buffers)++] = buffer;
990-
991981
return true;
992982
}
993983

ggml/src/ggml-backend-impl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ extern "C" {
4444
// base address of the buffer
4545
void * (*get_base) (ggml_backend_buffer_t buffer);
4646
// (optional) initialize a tensor in the buffer (eg. add tensor extras)
47-
enum ggml_status (*init_tensor) (ggml_backend_buffer_t buffer, struct ggml_tensor * tensor);
47+
enum ggml_status (*init_tensor)(ggml_backend_buffer_t buffer, struct ggml_tensor * tensor);
4848
// tensor data access
4949
void (*memset_tensor)(ggml_backend_buffer_t buffer, struct ggml_tensor * tensor, uint8_t value, size_t offset, size_t size);
5050
void (*set_tensor) (ggml_backend_buffer_t buffer, struct ggml_tensor * tensor, const void * data, size_t offset, size_t size);

ggml/src/ggml-backend.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1709,7 +1709,8 @@ static void graph_copy_init_tensor(struct ggml_hash_set * hash_set, struct ggml_
17091709
struct ggml_tensor * dst = node_copies[id];
17101710
if (dst->view_src != NULL) {
17111711
graph_copy_init_tensor(hash_set, node_copies, node_init, src->view_src);
1712-
ggml_backend_view_init(dst);
1712+
enum ggml_status status = ggml_backend_view_init(dst);
1713+
GGML_ASSERT(status == GGML_STATUS_SUCCESS);
17131714
}
17141715
else {
17151716
ggml_backend_tensor_copy(src, dst);
@@ -1824,7 +1825,6 @@ bool ggml_backend_compare_graph_backend(ggml_backend_t backend1, ggml_backend_t
18241825
assert(g1->n_nodes == g2->n_nodes);
18251826

18261827
for (int i = 0; i < g1->n_nodes; i++) {
1827-
//printf("eval %d/%d\n", i, g1->n_nodes);
18281828
struct ggml_tensor * t1 = g1->nodes[i];
18291829
struct ggml_tensor * t2 = g2->nodes[i];
18301830

0 commit comments

Comments
 (0)