const int lda = KB * sizeof(TA);
//const int ldb = KB * sizeof(TB);
- static thread_local packed_B_t Tile0[TILE_N * TILE_K];
- static thread_local packed_B_t Tile1[TILE_N * TILE_K];
- static thread_local int8_t Tile23[TILE_M * TILE_K];
+ alignas(64) static thread_local packed_B_t Tile0[TILE_N * TILE_K];
+ alignas(64) static thread_local packed_B_t Tile1[TILE_N * TILE_K];
+ alignas(64) static thread_local int8_t Tile23[TILE_M * TILE_K];
- static thread_local int32_t TileC0[TILE_M * TILE_N * 4];
- static thread_local int32_t TileC1[TILE_M * TILE_N * 4];
+ alignas(64) static thread_local int32_t TileC0[TILE_M * TILE_N * 4];
+ alignas(64) static thread_local int32_t TileC1[TILE_M * TILE_N * 4];
// double buffering C to interleave avx512 and amx
int32_t * C_cur = TileC0;
const int m1 = std::max(M - TILE_M, 0);
//const int lda = KB * sizeof(TA);
- static thread_local int8_t Tile0[TILE_N * TILE_K];
- static thread_local int8_t Tile1[TILE_N * TILE_K];
- static thread_local int8_t Tile23[TILE_M * TILE_K];
+ alignas(64) static thread_local int8_t Tile0[TILE_N * TILE_K];
+ alignas(64) static thread_local int8_t Tile1[TILE_N * TILE_K];
+ alignas(64) static thread_local int8_t Tile23[TILE_M * TILE_K];
// mat mul result for each group
- static thread_local int32_t Tile4[TILE_M * TILE_N];
- static thread_local int32_t Tile5[TILE_M * TILE_N];
- static thread_local int32_t Tile6[TILE_M * TILE_N];
- static thread_local int32_t Tile7[TILE_M * TILE_N];
+ alignas(64) static thread_local int32_t Tile4[TILE_M * TILE_N];
+ alignas(64) static thread_local int32_t Tile5[TILE_M * TILE_N];
+ alignas(64) static thread_local int32_t Tile6[TILE_M * TILE_N];
+ alignas(64) static thread_local int32_t Tile7[TILE_M * TILE_N];
// sum of each QK_K block, contains 8 groups, int32
- static thread_local int32_t Sumi4[TILE_M * TILE_N];
- static thread_local int32_t Sumi5[TILE_M * TILE_N];
- static thread_local int32_t Sumi6[TILE_M * TILE_N];
- static thread_local int32_t Sumi7[TILE_M * TILE_N];
+ alignas(64) static thread_local int32_t Sumi4[TILE_M * TILE_N];
+ alignas(64) static thread_local int32_t Sumi5[TILE_M * TILE_N];
+ alignas(64) static thread_local int32_t Sumi6[TILE_M * TILE_N];
+ alignas(64) static thread_local int32_t Sumi7[TILE_M * TILE_N];
const int k_group_size = std::is_same<TB, block_q6_K>::value ? 16 : 32;
for (int i = 0; i < KB; ++i) {