store view offset like in master branch
This commit is contained in:
parent
7aa10d0518
commit
edf6fc252a
1 changed files with 32 additions and 56 deletions
88
ggml.c
88
ggml.c
|
@ -5878,24 +5878,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;
|
||||
|
||||
if (is_node) {
|
||||
ggml_scratch_save(ctx);
|
||||
|
||||
struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2);
|
||||
|
||||
GGML_ASSERT(sizeof(offset) <= ggml_nbytes(b));
|
||||
|
||||
memcpy(b->data, &offset, sizeof(offset));
|
||||
|
||||
ggml_scratch_load(ctx);
|
||||
|
||||
result->opt[0] = b;
|
||||
}
|
||||
result->opt[0] = offs;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -5920,6 +5914,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];
|
||||
|
@ -5928,20 +5929,7 @@ struct ggml_tensor * ggml_view_2d(
|
|||
result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
|
||||
result->src0 = a;
|
||||
result->src1 = NULL;
|
||||
|
||||
if (is_node) {
|
||||
ggml_scratch_save(ctx);
|
||||
|
||||
struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2);
|
||||
|
||||
GGML_ASSERT(sizeof(offset) <= ggml_nbytes(b));
|
||||
|
||||
memcpy(b->data, &offset, sizeof(offset));
|
||||
|
||||
ggml_scratch_load(ctx);
|
||||
|
||||
result->opt[0] = b;
|
||||
}
|
||||
result->opt[0] = offs;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -5968,6 +5956,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;
|
||||
|
@ -5976,20 +5971,7 @@ struct ggml_tensor * ggml_view_3d(
|
|||
result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
|
||||
result->src0 = a;
|
||||
result->src1 = NULL;
|
||||
|
||||
if (is_node) {
|
||||
ggml_scratch_save(ctx);
|
||||
|
||||
struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2);
|
||||
|
||||
GGML_ASSERT(sizeof(offset) <= ggml_nbytes(b));
|
||||
|
||||
memcpy(b->data, &offset, sizeof(offset));
|
||||
|
||||
ggml_scratch_load(ctx);
|
||||
|
||||
result->opt[0] = b;
|
||||
}
|
||||
result->opt[0] = offs;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -6018,6 +6000,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;
|
||||
|
@ -6026,20 +6015,7 @@ struct ggml_tensor * ggml_view_4d(
|
|||
result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
|
||||
result->src0 = a;
|
||||
result->src1 = NULL;
|
||||
|
||||
if (is_node) {
|
||||
ggml_scratch_save(ctx);
|
||||
|
||||
struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2);
|
||||
|
||||
GGML_ASSERT(sizeof(offset) <= ggml_nbytes(b));
|
||||
|
||||
memcpy(b->data, &offset, sizeof(offset));
|
||||
|
||||
ggml_scratch_load(ctx);
|
||||
|
||||
result->opt[0] = b;
|
||||
}
|
||||
result->opt[0] = offs;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue