MCPcopy Create free account
hub / github.com/Tiiny-AI/PowerInfer / ggml_compute_backward

Function ggml_compute_backward

ggml.c:15403–16206  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15401}
15402
15403static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor * tensor, struct ggml_hash_set zero_table) {
15404 struct ggml_tensor * src0 = tensor->src[0];
15405 struct ggml_tensor * src1 = tensor->src[1];
15406
15407 switch (tensor->op) {
15408 case GGML_OP_DUP:
15409 {
15410 if (src0->grad) {
15411 src0->grad = ggml_add_or_set(ctx, src0->grad, tensor->grad, zero_table);
15412 }
15413 } break;
15414 case GGML_OP_ADD:
15415 {
15416 if (src0->grad) {
15417 src0->grad = ggml_add_or_set(ctx, src0->grad, tensor->grad, zero_table);
15418 }
15419 if (src1->grad) {
15420 src1->grad = ggml_add_or_set(ctx, src1->grad, tensor->grad, zero_table);
15421 }
15422 } break;
15423 case GGML_OP_ADD1:
15424 {
15425 if (src0->grad) {
15426 src0->grad = ggml_add_or_set(ctx, src0->grad, tensor->grad, zero_table);
15427 }
15428 if (src1->grad) {
15429 src1->grad = ggml_add_or_set(ctx,
15430 src1->grad,
15431 ggml_mean(ctx, tensor->grad), // TODO: should probably be sum instead of mean
15432 zero_table);
15433 }
15434 } break;
15435 case GGML_OP_ACC:
15436 {
15437 if (src0->grad) {
15438 src0->grad = ggml_add_or_set(ctx, src0->grad, tensor->grad, zero_table);
15439 }
15440 if (src1->grad) {
15441 const size_t nb1 = ((int32_t *) tensor->op_params)[0];
15442 const size_t nb2 = ((int32_t *) tensor->op_params)[1];
15443 const size_t nb3 = ((int32_t *) tensor->op_params)[2];
15444 const size_t offset = ((int32_t *) tensor->op_params)[3];
15445
15446 struct ggml_tensor * tensor_grad_view = ggml_view_4d(ctx,
15447 tensor->grad,
15448 src1->grad->ne[0],
15449 src1->grad->ne[1],
15450 src1->grad->ne[2],
15451 src1->grad->ne[3],
15452 nb1, nb2, nb3, offset);
15453
15454 src1->grad =
15455 ggml_add_or_set(ctx,
15456 src1->grad,
15457 ggml_reshape(ctx,
15458 ggml_cont(ctx, tensor_grad_view),
15459 src1->grad),
15460 zero_table);

Callers 1

Calls 15

ggml_soft_max_backFunction · 0.85
ggml_rope_backFunction · 0.85
ggml_add_or_setFunction · 0.70
ggml_meanFunction · 0.70
ggml_view_4dFunction · 0.70
ggml_reshapeFunction · 0.70
ggml_contFunction · 0.70
ggml_sub_or_setFunction · 0.70
ggml_mulFunction · 0.70
ggml_divFunction · 0.70
ggml_scaleFunction · 0.70
ggml_new_f32Function · 0.70

Tested by

no test coverage detected