| 2349 | : type(type), type_idx(type_idx), ne(ne), nr23(nr23), r(r), v(v) {} |
| 2350 | |
| 2351 | ggml_tensor * build_graph(ggml_context * ctx) override { |
| 2352 | ggml_tensor * dst = ggml_new_tensor_4d(ctx, type, ne[0], ne[1], ne[2]*nr23[0], ne[3]*nr23[1]); |
| 2353 | ggml_set_name(dst, "dst"); |
| 2354 | |
| 2355 | ggml_tensor * src = ggml_new_tensor_4d(ctx, GGML_TYPE_F32, ne[0], r, ne[2]*nr23[0], ne[3]*nr23[1]); |
| 2356 | ggml_set_name(src, "src"); |
| 2357 | |
| 2358 | ggml_tensor * row_idxs = ggml_new_tensor_3d(ctx, type_idx, r, ne[2], ne[3]); |
| 2359 | ggml_set_name(row_idxs, "row_idxs"); |
| 2360 | |
| 2361 | if (v) { |
| 2362 | src = ggml_view_4d(ctx, src, ne[0], r/2, ne[2]*nr23[0], ne[3]*nr23[1], src->nb[1], src->nb[2], src->nb[3], 0); |
| 2363 | row_idxs = ggml_view_3d(ctx, row_idxs, r/2, ne[2], ne[3], row_idxs->nb[1], row_idxs->nb[2], 0); |
| 2364 | ggml_set_name(row_idxs, "view_of_rows"); |
| 2365 | } |
| 2366 | |
| 2367 | ggml_tensor * out = ggml_set_rows(ctx, dst, src, row_idxs); |
| 2368 | ggml_set_name(out, "out"); |
| 2369 | |
| 2370 | return out; |
| 2371 | } |
| 2372 | |
| 2373 | void initialize_tensors(ggml_context * ctx) override { |
| 2374 | for (ggml_tensor * t = ggml_get_first_tensor(ctx); t != NULL; t = ggml_get_next_tensor(ctx, t)) { |
nothing calls this directly
no test coverage detected