@@ -16424,7 +16424,6 @@ void ggml_graph_compute(struct ggml_graph_compute_plan * plan, struct ggml_cgrap
16424
16424
GGML_ASSERT(plan->n_tasks[i] > 0);
16425
16425
}
16426
16426
}
16427
-
16428
16427
}
16429
16428
16430
16429
const int n_threads = plan->n_threads;
@@ -16491,6 +16490,20 @@ void ggml_graph_compute(struct ggml_graph_compute_plan * plan, struct ggml_cgrap
16491
16490
}
16492
16491
}
16493
16492
16493
+ static void ggml_graph_compute_sugar(struct ggml_cgraph * cgraph, int n_threads) {
16494
+ struct ggml_graph_compute_plan plan = ggml_graph_compute_make_plan(cgraph, n_threads);
16495
+ if (plan.work_size > 0) {
16496
+ plan.work_data = malloc(plan.work_size);
16497
+ GGML_ASSERT(plan.work_data);
16498
+ }
16499
+
16500
+ ggml_graph_compute(&plan, cgraph);
16501
+
16502
+ if (plan.work_data) {
16503
+ free(plan.work_data);
16504
+ }
16505
+ }
16506
+
16494
16507
void ggml_graph_reset(struct ggml_cgraph * cgraph) {
16495
16508
for (int i = 0; i < cgraph->n_nodes; i++) {
16496
16509
struct ggml_tensor * grad = cgraph->grads[i];
@@ -17327,17 +17340,7 @@ static enum ggml_opt_result ggml_opt_adam(
17327
17340
ggml_graph_reset (gf);
17328
17341
ggml_set_f32 (f->grad, 1.0f);
17329
17342
17330
- {
17331
- struct ggml_graph_compute_plan plan = ggml_graph_compute_make_plan(gb, params.n_threads);
17332
- if (plan.work_size > 0) {
17333
- plan.work_data = malloc(plan.work_size);
17334
- GGML_ASSERT(plan.work_data);
17335
- }
17336
- ggml_graph_compute(&plan, gb);
17337
- if (plan.work_data) {
17338
- free(plan.work_data);
17339
- }
17340
- }
17343
+ ggml_graph_compute_sugar(gb, params.n_threads);
17341
17344
17342
17345
opt->adam.fx_prev = ggml_get_f32_1d(f, 0);
17343
17346
opt->adam.fx_best = opt->adam.fx_prev;
@@ -17418,17 +17421,7 @@ static enum ggml_opt_result ggml_opt_adam(
17418
17421
ggml_graph_reset (gf);
17419
17422
ggml_set_f32 (f->grad, 1.0f);
17420
17423
17421
- {
17422
- struct ggml_graph_compute_plan plan = ggml_graph_compute_make_plan(gb, params.n_threads);
17423
- if (plan.work_size > 0) {
17424
- plan.work_data = malloc(plan.work_size);
17425
- GGML_ASSERT(plan.work_data);
17426
- }
17427
- ggml_graph_compute(&plan, gb);
17428
- if (plan.work_data) {
17429
- free(plan.work_data);
17430
- }
17431
- }
17424
+ ggml_graph_compute_sugar(gb, params.n_threads);
17432
17425
17433
17426
const float fx = ggml_get_f32_1d(f, 0);
17434
17427
@@ -17550,17 +17543,7 @@ static enum ggml_opt_result linesearch_backtracking(
17550
17543
ggml_graph_reset (gf);
17551
17544
ggml_set_f32 (f->grad, 1.0f);
17552
17545
17553
- {
17554
- struct ggml_graph_compute_plan plan = ggml_graph_compute_make_plan(gb, params->n_threads);
17555
- if (plan.work_size > 0) {
17556
- plan.work_data = malloc(plan.work_size);
17557
- GGML_ASSERT(plan.work_data);
17558
- }
17559
- ggml_graph_compute(&plan, gb);
17560
- if (plan.work_data) {
17561
- free(plan.work_data);
17562
- }
17563
- }
17546
+ ggml_graph_compute_sugar(gb, params->n_threads);
17564
17547
17565
17548
ggml_opt_get_grad(np, ps, g);
17566
17549
@@ -17679,17 +17662,8 @@ static enum ggml_opt_result ggml_opt_lbfgs(
17679
17662
17680
17663
ggml_graph_reset (gf);
17681
17664
ggml_set_f32 (f->grad, 1.0f);
17682
- {
17683
- struct ggml_graph_compute_plan plan = ggml_graph_compute_make_plan(gb, params.n_threads);
17684
- if (plan.work_size > 0) {
17685
- plan.work_data = malloc(plan.work_size);
17686
- GGML_ASSERT(plan.work_data);
17687
- }
17688
- ggml_graph_compute(&plan, gb);
17689
- if (plan.work_data) {
17690
- free(plan.work_data);
17691
- }
17692
- }
17665
+
17666
+ ggml_graph_compute_sugar(gb, params.n_threads);
17693
17667
17694
17668
ggml_opt_get_grad(np, ps, g);
17695
17669
0 commit comments