Skip to content

Commit 598c938

Browse files
ggerganovakawrykow
authored andcommitted
ggml : sync (mem align to header + conv_transpose_2d fixes + ggml_alloc) (ggml-org#2852)
* ggml : sync (mem align to header + conv_transpose_2d fixes) ggml-ci * ggml-alloc : minor fix * ggml-alloc : sync more fixes
1 parent 5406a78 commit 598c938

File tree

3 files changed

+24
-22
lines changed

3 files changed

+24
-22
lines changed

ggml-alloc.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ struct ggml_allocr * ggml_allocr_new(void * data, size_t size, size_t alignment)
268268
/*.parse_seq = */ {0},
269269
/*.parse_seq_len = */ 0,
270270
#ifdef GGML_ALLOCATOR_DEBUG
271-
/*.allocated_tensors = */ = {0},
271+
/*.allocated_tensors = */ {0},
272272
#endif
273273
};
274274

@@ -297,7 +297,7 @@ struct ggml_allocr * ggml_allocr_new_measure(size_t alignment) {
297297
/*.parse_seq = */ {0},
298298
/*.parse_seq_len = */ 0,
299299
#ifdef GGML_ALLOCATOR_DEBUG
300-
/*.allocated_tensors = */ = {0},
300+
/*.allocated_tensors = */ {0},
301301
#endif
302302
};
303303

@@ -556,7 +556,7 @@ static size_t ggml_allocator_alloc_graph_tensors_n(
556556
struct ggml_tensor * view_src = get_view_source(parent);
557557
struct hash_node * view_src_hn = hash_get(ht, view_src);
558558
view_src_hn->n_views -= 1;
559-
AT_PRINTF("view_src %s\n", view_src->name);
559+
AT_PRINTF("view_src %s: %d children, %d views\n", view_src->name, view_src_hn->n_children, view_src_hn->n_views);
560560
if (view_src_hn->n_views == 0 && view_src_hn->n_children == 0 && view_src->data != node->data) {
561561
ggml_allocator_free_tensor(alloc, view_src);
562562
}

ggml.c

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,6 @@ typedef void * thread_ret_t;
157157
//#define GGML_SOFT_MAX_ACCELERATE
158158
#endif
159159

160-
#if UINTPTR_MAX == 0xFFFFFFFF
161-
#define GGML_MEM_ALIGN 4
162-
#else
163-
#define GGML_MEM_ALIGN 16
164-
#endif
165-
166160
//
167161
// logging
168162
//
@@ -7098,11 +7092,13 @@ struct ggml_tensor * ggml_conv_transpose_2d_p0(
70987092
};
70997093

71007094
struct ggml_tensor* result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, ne);
7095+
7096+
ggml_set_op_params_i32(result, 0, stride);
7097+
71017098
result->op = GGML_OP_CONV_TRANSPOSE_2D;
71027099
result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
71037100
result->src[0] = a;
71047101
result->src[1] = b;
7105-
result->src[2] = ggml_new_i32(ctx, stride);
71067102

71077103
return result;
71087104
}
@@ -13498,7 +13494,6 @@ static void ggml_compute_forward_conv_transpose_2d(
1349813494
const struct ggml_compute_params * params,
1349913495
const struct ggml_tensor * src0,
1350013496
const struct ggml_tensor * src1,
13501-
const struct ggml_tensor * opt0,
1350213497
struct ggml_tensor * dst) {
1350313498
GGML_ASSERT(src0->type == GGML_TYPE_F16);
1350413499
GGML_ASSERT(src1->type == GGML_TYPE_F32);
@@ -13558,7 +13553,7 @@ static void ggml_compute_forward_conv_transpose_2d(
1355813553
return;
1355913554
}
1356013555

13561-
const int32_t stride = ((const int32_t*)(opt0->data))[0];
13556+
const int32_t stride = ggml_get_op_params_i32(dst, 0);
1356213557

1356313558
// total patches in dst
1356413559
const int np = ne2;
@@ -13571,7 +13566,7 @@ static void ggml_compute_forward_conv_transpose_2d(
1357113566
const int ip1 = MIN(ip0 + dp, np);
1357213567

1357313568
ggml_fp16_t * const wdata = (ggml_fp16_t *) params->wdata + 0;
13574-
ggml_fp16_t * const wdata_src = (ggml_fp16_t *) params->wdata + nk;
13569+
ggml_fp16_t * const wdata_src = wdata + nk;
1357513570

1357613571
for (int i2 = ip0; i2 < ip1; i2++) { // Cout
1357713572
float * dst_data = (float *)((char *) dst->data + i2*nb2);
@@ -13583,9 +13578,8 @@ static void ggml_compute_forward_conv_transpose_2d(
1358313578
for (int i00 = 0; i00 < ne00; i00++) {
1358413579
float v = 0;
1358513580
ggml_vec_dot_f16(ne03, &v,
13586-
(ggml_fp16_t *) wdata_src + i1n,
13587-
(ggml_fp16_t *) wdata_kernel + i01*ne00*ne03 + i00*ne03);
13588-
13581+
wdata_src + i1n,
13582+
wdata_kernel + i01*ne00*ne03 + i00*ne03);
1358913583
dst_data[(i11*stride + i01)*ne0 + i10*stride + i00] += v;
1359013584
}
1359113585
}
@@ -15732,7 +15726,7 @@ static void ggml_compute_forward(struct ggml_compute_params * params, struct ggm
1573215726
} break;
1573315727
case GGML_OP_CONV_TRANSPOSE_2D:
1573415728
{
15735-
ggml_compute_forward_conv_transpose_2d(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor);
15729+
ggml_compute_forward_conv_transpose_2d(params, tensor->src[0], tensor->src[1], tensor);
1573615730
} break;
1573715731
case GGML_OP_POOL_1D:
1573815732
{

ggml.h

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,16 @@
130130
// The data of the tensor is accessed via the "data" pointer. For example:
131131
//
132132
// {
133-
// struct ggml_tensor * a = ggml_new_tensor_2d(ctx, GGML_TYPE_F32, 2, 3);
133+
// const int nx = 2;
134+
// const int ny = 3;
134135
//
135-
// // a[2, 1] = 1.0f;
136-
// *(float *) ((char *) a->data + 2*a->nb[1] + 1*a->nb[0]) = 1.0f;
136+
// struct ggml_tensor * a = ggml_new_tensor_2d(ctx, GGML_TYPE_F32, nx, ny);
137137
//
138-
// // a[0, 2] = 2.0f;
139-
// *(float *) ((char *) a->data + 0*a->nb[1] + 2*a->nb[0]) = 2.0f;
138+
// for (int y = 0; y < ny; y++) {
139+
// for (int x = 0; x < nx; x++) {
140+
// *(float *) ((char *) a->data + y*a->nb[1] + x*a->nb[0]) = x + y;
141+
// }
142+
// }
140143
//
141144
// ...
142145
// }
@@ -211,6 +214,11 @@
211214
#define GGML_MAX_OP_PARAMS 32
212215
#define GGML_DEFAULT_N_THREADS 4
213216

217+
#if UINTPTR_MAX == 0xFFFFFFFF
218+
#define GGML_MEM_ALIGN 4
219+
#else
220+
#define GGML_MEM_ALIGN 16
221+
#endif
214222

215223
#define GGML_EXIT_SUCCESS 0
216224
#define GGML_EXIT_ABORTED 1

0 commit comments

Comments
 (0)