@@ -28,9 +28,40 @@ static std::string ggml_ne_string(const ggml_tensor * t) {
28
28
return str;
29
29
}
30
30
31
+ static float ggml_get_float_value (uint8_t * data, ggml_type type, const size_t * nb, size_t i0, size_t i1, size_t i2, size_t i3) {
32
+ size_t i = i3 * nb[3 ] + i2 * nb[2 ] + i1 * nb[1 ] + i0 * nb[0 ];
33
+ float v;
34
+ if (type == GGML_TYPE_F16) {
35
+ v = ggml_fp16_to_fp32 (*(ggml_fp16_t *) &data[i]);
36
+ } else if (type == GGML_TYPE_F32) {
37
+ v = *(float *) &data[i];
38
+ } else if (type == GGML_TYPE_I64) {
39
+ v = (float ) *(int64_t *) &data[i];
40
+ } else if (type == GGML_TYPE_I32) {
41
+ v = (float ) *(int32_t *) &data[i];
42
+ } else if (type == GGML_TYPE_I16) {
43
+ v = (float ) *(int16_t *) &data[i];
44
+ } else if (type == GGML_TYPE_I8) {
45
+ v = (float ) *(int8_t *) &data[i];
46
+ } else {
47
+ GGML_ABORT (" fatal error" );
48
+ }
49
+ return v;
50
+ }
51
+
31
52
static void ggml_print_tensor (uint8_t * data, ggml_type type, const int64_t * ne, const size_t * nb, int64_t n) {
32
53
GGML_ASSERT (n > 0 );
33
54
float sum = 0 ;
55
+ for (int64_t i3 = 0 ; i3 < ne[3 ]; i3++) {
56
+ for (int64_t i2 = 0 ; i2 < ne[2 ]; i2++) {
57
+ for (int64_t i1 = 0 ; i1 < ne[1 ]; i1++) {
58
+ for (int64_t i0 = 0 ; i0 < ne[0 ]; i0++) {
59
+ const float v = ggml_get_float_value (data, type, nb, i0, i1, i2, i3);
60
+ sum += v;
61
+ }
62
+ }
63
+ }
64
+ }
34
65
for (int64_t i3 = 0 ; i3 < ne[3 ]; i3++) {
35
66
LOG (" [\n " );
36
67
for (int64_t i2 = 0 ; i2 < ne[2 ]; i2++) {
@@ -50,25 +81,8 @@ static void ggml_print_tensor(uint8_t * data, ggml_type type, const int64_t * ne
50
81
LOG (" ..., " );
51
82
i0 = ne[0 ] - n;
52
83
}
53
- size_t i = i3 * nb[3 ] + i2 * nb[2 ] + i1 * nb[1 ] + i0 * nb[0 ];
54
- float v;
55
- if (type == GGML_TYPE_F16) {
56
- v = ggml_fp16_to_fp32 (*(ggml_fp16_t *) &data[i]);
57
- } else if (type == GGML_TYPE_F32) {
58
- v = *(float *) &data[i];
59
- } else if (type == GGML_TYPE_I64) {
60
- v = (float ) *(int64_t *) &data[i];
61
- } else if (type == GGML_TYPE_I32) {
62
- v = (float ) *(int32_t *) &data[i];
63
- } else if (type == GGML_TYPE_I16) {
64
- v = (float ) *(int16_t *) &data[i];
65
- } else if (type == GGML_TYPE_I8) {
66
- v = (float ) *(int8_t *) &data[i];
67
- } else {
68
- GGML_ABORT (" fatal error" );
69
- }
84
+ const float v = ggml_get_float_value (data, type, nb, i0, i1, i2, i3);
70
85
LOG (" %12.4f" , v);
71
- sum += v;
72
86
if (i0 < ne[0 ] - 1 ) LOG (" , " );
73
87
}
74
88
LOG (" ],\n " );
0 commit comments