File size: 902 Bytes
fb6457c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #ifndef BSH_GEMM_BLOCKING_H
#define BSH_GEMM_BLOCKING_H
#include "../memory/allocator.h"
#include <stddef.h>
#define MC 64
#define NC 128
#define KC 64
typedef struct {
size_t mc, nc, kc;
} block_config_t;
block_config_t* blocking_config_create(size_t mc, size_t nc, size_t kc);
void blocking_config_free(block_config_t* cfg);
void gemm_blocked_f32(
const matrix_t* A,
const matrix_t* B,
matrix_t* C,
float alpha,
float beta,
const block_config_t* cfg
);
void pack_A_f32(
float* packed,
const matrix_t* A,
size_t k_start, size_t k_end,
size_t m_start, size_t m_end
);
void pack_B_f32(
float* packed,
const matrix_t* B,
size_t k_start, size_t k_end,
size_t n_start, size_t n_end
);
void microkernel_f32(
float* C,
const float* packed_A,
const float* packed_B,
size_t mc, size_t nc, size_t kc,
size_t ldc
);
#endif
|