Skip to content

Commit a79b7b6

Browse files
committed
vec2 unpack for q8
1 parent 15d073a commit a79b7b6

File tree

4 files changed

+8
-8
lines changed

4 files changed

+8
-8
lines changed

ggml/src/ggml-vulkan/vulkan-shaders/dequant_funcs.comp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,9 @@ vec2 dequantize(uint ib, uint iqs, uint a_offset) {
8282
return vec2(int(data_a[a_offset + ib].qs[iqs]), int(data_a[a_offset + ib].qs[iqs + 1]));
8383
}
8484
vec4 dequantize4(uint ib, uint iqs, uint a_offset) {
85-
uint32_t v0 = data_a_packed16[a_offset + ib].qs[iqs/2];
86-
uint32_t v1 = data_a_packed16[a_offset + ib].qs[iqs/2 + 1];
87-
return vec4(int8_t(v0 & 0xFF), int8_t(v0 >> 8), int8_t(v1 & 0xFF), int8_t(v1 >> 8));
85+
const i8vec2 v0 = unpack8(data_a_packed16[a_offset + ib].qs[iqs/2]);
86+
const i8vec2 v1 = unpack8(data_a_packed16[a_offset + ib].qs[iqs/2 + 1]);
87+
return vec4(v0.x, v0.y, v1.x, v1.y);
8888
}
8989
#endif
9090

ggml/src/ggml-vulkan/vulkan-shaders/dequant_funcs_cm2.comp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ float16_t dequantFuncQ8_0(const in decodeBufQ8_0 bl, const in uint blockCoords[2
9292
const uint iqs = idx;
9393

9494
// Load 16b and select the byte for this element
95-
int32_t qs = unpack8(int32_t(bl.block.qs[(iqs & 0x1E) >> 1]))[iqs & 1];
95+
int32_t qs = unpack8(bl.block.qs[(iqs & 0x1E) >> 1])[iqs & 1];
9696
float16_t ret = float16_t(qs) * d;
9797
return ret;
9898
}

ggml/src/ggml-vulkan/vulkan-shaders/mul_mm.comp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -336,9 +336,9 @@ void main() {
336336
const uint iqs = idx & 0x07;
337337

338338
const float d = float(data_a_packed16[ib].d);
339-
const uint v0 = uint(data_a_packed16[ib].qs[2*iqs]);
340-
const uint v1 = uint(data_a_packed16[ib].qs[2*iqs + 1]);
341-
const vec4 v = vec4(int8_t(v0 & 0xFF), int8_t(v0 >> 8), int8_t(v1 & 0xFF), int8_t(v1 >> 8)) * d;
339+
const i8vec2 v0 = unpack8(data_a_packed16[ib].qs[2*iqs]);
340+
const i8vec2 v1 = unpack8(data_a_packed16[ib].qs[2*iqs + 1]);
341+
const vec4 v = vec4(v0.x, v0.y, v1.x, v1.y) * d;
342342

343343
buf_a[buf_idx ] = FLOAT_TYPE(v.x);
344344
buf_a[buf_idx + 1] = FLOAT_TYPE(v.y);

ggml/src/ggml-vulkan/vulkan-shaders/types.comp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ struct block_q8_0
139139
struct block_q8_0_packed16
140140
{
141141
float16_t d;
142-
uint16_t qs[32/2];
142+
int16_t qs[32/2];
143143
};
144144

145145
#if defined(DATA_A_Q8_0)

0 commit comments

Comments
 (0)