Skip to content

Commit 8b826c5

Browse files
committed
ggml : skip empty tensors in all backends
1 parent 4551e7e commit 8b826c5

File tree

6 files changed

+16
-3
lines changed

6 files changed

+16
-3
lines changed

ggml-cuda.cu

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11354,7 +11354,7 @@ GGML_CALL static enum ggml_status ggml_backend_cuda_graph_compute(ggml_backend_t
1135411354
for (int i = 0; i < cgraph->n_nodes; i++) {
1135511355
ggml_tensor * node = cgraph->nodes[i];
1135611356

11357-
if (node->op == GGML_OP_RESHAPE || node->op == GGML_OP_TRANSPOSE || node->op == GGML_OP_VIEW || node->op == GGML_OP_PERMUTE || node->op == GGML_OP_NONE) {
11357+
if (ggml_is_empty(node) || node->op == GGML_OP_RESHAPE || node->op == GGML_OP_TRANSPOSE || node->op == GGML_OP_VIEW || node->op == GGML_OP_PERMUTE || node->op == GGML_OP_NONE) {
1135811358
continue;
1135911359
}
1136011360

ggml-kompute.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1430,6 +1430,10 @@ static void ggml_vk_graph_compute(struct ggml_kompute_context * ctx, struct ggml
14301430
struct ggml_tensor * dst = gf->nodes[i];
14311431
GGML_ASSERT(dst->data != nullptr);
14321432

1433+
if (ggml_is_empty(dst)) {
1434+
continue;
1435+
}
1436+
14331437
switch (dst->op) {
14341438
case GGML_OP_NONE:
14351439
case GGML_OP_RESHAPE:

ggml-metal.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -832,6 +832,10 @@ static enum ggml_status ggml_metal_graph_compute(
832832
struct ggml_tensor * src2 = gf->nodes[i]->src[2];
833833
struct ggml_tensor * dst = gf->nodes[i];
834834

835+
if (ggml_is_empty(dst)) {
836+
continue;
837+
}
838+
835839
switch (dst->op) {
836840
case GGML_OP_NONE:
837841
case GGML_OP_RESHAPE:

ggml-opencl.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2234,6 +2234,11 @@ static ggml_backend_buffer_type_t ggml_backend_opencl_get_default_buffer_type(gg
22342234
static ggml_status ggml_backend_opencl_graph_compute(ggml_backend_t backend, ggml_cgraph * graph) {
22352235
for (int i = 0; i < graph->n_nodes; ++i) {
22362236
ggml_tensor * node = graph->nodes[i];
2237+
2238+
if (ggml_is_empty(node)) {
2239+
continue;
2240+
}
2241+
22372242
switch (node->op) {
22382243
case GGML_OP_MUL_MAT:
22392244
ggml_cl_mul_mat(node->src[0], node->src[1], node, nullptr, 0);

ggml-sycl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17229,7 +17229,7 @@ GGML_CALL static ggml_status ggml_backend_sycl_graph_compute(ggml_backend_t back
1722917229
params.ith = 0;
1723017230
for (int i = 0; i < cgraph->n_nodes; i++) {
1723117231
ggml_tensor * node = cgraph->nodes[i];
17232-
if (node->op == GGML_OP_RESHAPE || node->op == GGML_OP_TRANSPOSE || node->op == GGML_OP_VIEW || node->op == GGML_OP_PERMUTE || node->op == GGML_OP_NONE) {
17232+
if (ggml_is_empty(node) || node->op == GGML_OP_RESHAPE || node->op == GGML_OP_TRANSPOSE || node->op == GGML_OP_VIEW || node->op == GGML_OP_PERMUTE || node->op == GGML_OP_NONE) {
1723317233
continue;
1723417234
}
1723517235
#ifndef NDEBUG

ggml-vulkan.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5566,7 +5566,7 @@ GGML_CALL static ggml_status ggml_backend_vk_graph_compute(ggml_backend_t backen
55665566
for (int i = 0; i < cgraph->n_nodes; i++) {
55675567
ggml_tensor * node = cgraph->nodes[i];
55685568

5569-
if (node->op == GGML_OP_RESHAPE || node->op == GGML_OP_TRANSPOSE || node->op == GGML_OP_VIEW || node->op == GGML_OP_PERMUTE || node->op == GGML_OP_NONE) {
5569+
if (ggml_is_empty(node) || node->op == GGML_OP_RESHAPE || node->op == GGML_OP_TRANSPOSE || node->op == GGML_OP_VIEW || node->op == GGML_OP_PERMUTE || node->op == GGML_OP_NONE) {
55705570
continue;
55715571
}
55725572

0 commit comments

Comments
 (0)