ggml : store offset as opt arg for ggml_view_xd() operators
This commit is contained in:
parent
7ca81e9e65
commit
94ea9e7bfe
1 changed files with 42 additions and 0 deletions
42
ggml.c
42
ggml.c
|
@ -5802,10 +5802,18 @@ struct ggml_tensor * ggml_view_1d(
|
|||
|
||||
struct ggml_tensor * result = ggml_new_tensor_impl(ctx, a->type, 1, &ne0, (char *) a->data + offset);
|
||||
|
||||
ggml_scratch_save(ctx);
|
||||
|
||||
struct ggml_tensor * offs = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2);
|
||||
memcpy(offs->data, &offset, 2*sizeof(int32_t));
|
||||
|
||||
ggml_scratch_load(ctx);
|
||||
|
||||
result->op = GGML_OP_VIEW;
|
||||
result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
|
||||
result->src0 = a;
|
||||
result->src1 = NULL;
|
||||
result->opt[0] = offs;
|
||||
|
||||
if (is_node) {
|
||||
memcpy(result->padding, &offset, sizeof(offset));
|
||||
|
@ -5834,6 +5842,13 @@ struct ggml_tensor * ggml_view_2d(
|
|||
|
||||
struct ggml_tensor * result = ggml_new_tensor_impl(ctx, a->type, 2, ne, (char *) a->data + offset);
|
||||
|
||||
ggml_scratch_save(ctx);
|
||||
|
||||
struct ggml_tensor * offs = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2);
|
||||
memcpy(offs->data, &offset, 2*sizeof(int32_t));
|
||||
|
||||
ggml_scratch_load(ctx);
|
||||
|
||||
result->nb[1] = nb1;
|
||||
result->nb[2] = result->nb[1]*ne1;
|
||||
result->nb[3] = result->nb[2];
|
||||
|
@ -5842,6 +5857,7 @@ struct ggml_tensor * ggml_view_2d(
|
|||
result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
|
||||
result->src0 = a;
|
||||
result->src1 = NULL;
|
||||
result->opt[0] = offs;
|
||||
|
||||
if (is_node) {
|
||||
memcpy(result->padding, &offset, sizeof(offset));
|
||||
|
@ -5872,6 +5888,13 @@ struct ggml_tensor * ggml_view_3d(
|
|||
|
||||
struct ggml_tensor * result = ggml_new_tensor_impl(ctx, a->type, 3, ne, (char *) a->data + offset);
|
||||
|
||||
ggml_scratch_save(ctx);
|
||||
|
||||
struct ggml_tensor * offs = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2);
|
||||
memcpy(offs->data, &offset, 2*sizeof(int32_t));
|
||||
|
||||
ggml_scratch_load(ctx);
|
||||
|
||||
result->nb[1] = nb1;
|
||||
result->nb[2] = nb2;
|
||||
result->nb[3] = result->nb[2]*ne2;
|
||||
|
@ -5880,6 +5903,7 @@ struct ggml_tensor * ggml_view_3d(
|
|||
result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
|
||||
result->src0 = a;
|
||||
result->src1 = NULL;
|
||||
result->opt[0] = offs;
|
||||
|
||||
if (is_node) {
|
||||
memcpy(result->padding, &offset, sizeof(offset));
|
||||
|
@ -5912,6 +5936,13 @@ struct ggml_tensor * ggml_view_4d(
|
|||
|
||||
struct ggml_tensor * result = ggml_new_tensor_impl(ctx, a->type, 4, ne, (char *) a->data + offset);
|
||||
|
||||
ggml_scratch_save(ctx);
|
||||
|
||||
struct ggml_tensor * offs = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2);
|
||||
memcpy(offs->data, &offset, 2*sizeof(int32_t));
|
||||
|
||||
ggml_scratch_load(ctx);
|
||||
|
||||
result->nb[1] = nb1;
|
||||
result->nb[2] = nb2;
|
||||
result->nb[3] = nb3;
|
||||
|
@ -5920,6 +5951,7 @@ struct ggml_tensor * ggml_view_4d(
|
|||
result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
|
||||
result->src0 = a;
|
||||
result->src1 = NULL;
|
||||
result->opt[0] = offs;
|
||||
|
||||
if (is_node) {
|
||||
memcpy(result->padding, &offset, sizeof(offset));
|
||||
|
@ -15021,6 +15053,16 @@ struct ggml_cgraph ggml_graph_import(const char * fname, struct ggml_context **
|
|||
{
|
||||
tensor = ggml_reshape_4d(*ctx_eval, args[0], ne[0], ne[1], ne[2], ne[3]);
|
||||
} break;
|
||||
case GGML_OP_VIEW:
|
||||
{
|
||||
tensor = ggml_view_4d(*ctx_eval, args[0], ne[0], ne[1], ne[2], ne[3], 0, 0, 0, 0);
|
||||
|
||||
uint64_t offs;
|
||||
memcpy(&offs, args[2]->data, sizeof(offs));
|
||||
|
||||
tensor->data = ((char *) tensor->data) + offs;
|
||||
printf("xxxxxx offs: %zu\n", offs);
|
||||
} break;
|
||||
case GGML_OP_TRANSPOSE:
|
||||
{
|
||||
tensor = ggml_transpose(*ctx_eval, args[0]);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue