include/static_kernel_information.h (123 lines of code) (raw):
#pragma once
struct kernel_properties {
int tile_m;
int tile_n;
int tile_k;
int vA;
int vB;
int vC;
int div;
bool op;
int threads;
std::vector<int> shared_sizes;
std::string tile_string;
};
kernel_properties kernel_properties_[6] = {
{128, 128, 8, 4, 4, 1, 2, false, 256, {0}, "128x128x8"},
{32, 32, 32, 4, 4, 1, 4, false, 128, {0, 1 << 14}, "32x32x32"},
{32, 64, 32, 8, 4, 4, 4, true, 128, {0, 1 << 13}, "32x64x32"},
{32, 32, 64, 8, 8, 4, 4, true, 128, {0}, "32x32x64"},
{16, 64, 64, 8, 4, 4, 4, true, 128, {0}, "16x64x64"},
{16, 64, 64, 8, 8, 4, 4, true, 128, {0}, "16x64x64"},
};
std::unordered_map<std::string, std::unordered_map<std::string, std::vector<kernel_properties>>>
selections = {
{"s", {
{"TN", {kernel_properties_[0], kernel_properties_[1]}},
{"NN", {kernel_properties_[0], kernel_properties_[1]}},
{"NT", {kernel_properties_[0], kernel_properties_[1]}},
{"TT", {kernel_properties_[0], kernel_properties_[1]}}
}
},
{"h", {
{"TN", {kernel_properties_[0], kernel_properties_[1]}},
{"NN", {kernel_properties_[0], kernel_properties_[1], kernel_properties_[2], kernel_properties_[4]}},
{"NT", {kernel_properties_[0], kernel_properties_[1], kernel_properties_[3], kernel_properties_[5]}},
{"TT", {kernel_properties_[0], kernel_properties_[1]}}
}
}
};
std::unordered_map<std::string, const uint8_t*> kernels_60 = {
{"hgemm_16x64x64_NN_sm_60", hgemm_16x64x64_NN_sm_60},
{"hgemm_16x64x64_NN_vec_sm_60", hgemm_16x64x64_NN_vec_sm_60},
{"hgemm_16x64x64_NT_sm_60", hgemm_16x64x64_NT_sm_60},
{"hgemm_16x64x64_NT_vec_sm_60", hgemm_16x64x64_NT_vec_sm_60},
{"hgemm_32x32x64_NT_sm_60", hgemm_32x32x64_NT_sm_60},
{"hgemm_32x32x64_NT_vec_sm_60", hgemm_32x32x64_NT_vec_sm_60},
{"hgemm_32x64x32_NN_sm_60", hgemm_32x64x32_NN_sm_60},
{"hgemm_32x64x32_NN_vec_sm_60", hgemm_32x64x32_NN_vec_sm_60},
{"hgemm_128x128x8_NN_sm_60", hgemm_128x128x8_NN_sm_60},
{"hgemm_128x128x8_TN_sm_60", hgemm_128x128x8_TN_sm_60},
{"hgemm_128x128x8_NT_sm_60", hgemm_128x128x8_NT_sm_60},
{"hgemm_128x128x8_TT_sm_60", hgemm_128x128x8_TT_sm_60},
{"hgemm_128x128x8_NN_vec_sm_60", hgemm_128x128x8_NN_vec_sm_60},
{"hgemm_128x128x8_TN_vec_sm_60", hgemm_128x128x8_TN_vec_sm_60},
{"hgemm_128x128x8_NT_vec_sm_60", hgemm_128x128x8_NT_vec_sm_60},
{"hgemm_128x128x8_TT_vec_sm_60", hgemm_128x128x8_TT_vec_sm_60},
{"hgemm_32x32x32_NN_sm_60", hgemm_32x32x32_NN_sm_60},
{"hgemm_32x32x32_TN_sm_60", hgemm_32x32x32_TN_sm_60},
{"hgemm_32x32x32_NT_sm_60", hgemm_32x32x32_NT_sm_60},
{"hgemm_32x32x32_TT_sm_60", hgemm_32x32x32_TT_sm_60},
{"hgemm_32x32x32_NN_vec_sm_60", hgemm_32x32x32_NN_vec_sm_60},
{"hgemm_32x32x32_TN_vec_sm_60", hgemm_32x32x32_TN_vec_sm_60},
{"hgemm_32x32x32_NT_vec_sm_60", hgemm_32x32x32_NT_vec_sm_60},
{"hgemm_32x32x32_TT_vec_sm_60", hgemm_32x32x32_TT_vec_sm_60},
{"sgemm_128x128x8_NN_sm_60", sgemm_128x128x8_NN_sm_60},
{"sgemm_128x128x8_TN_sm_60", sgemm_128x128x8_TN_sm_60},
{"sgemm_128x128x8_NT_sm_60", sgemm_128x128x8_NT_sm_60},
{"sgemm_128x128x8_TT_sm_60", sgemm_128x128x8_TT_sm_60},
{"sgemm_128x128x8_NN_vec_sm_60", sgemm_128x128x8_NN_vec_sm_60},
{"sgemm_128x128x8_TN_vec_sm_60", sgemm_128x128x8_TN_vec_sm_60},
{"sgemm_128x128x8_NT_vec_sm_60", sgemm_128x128x8_NT_vec_sm_60},
{"sgemm_128x128x8_TT_vec_sm_60", sgemm_128x128x8_TT_vec_sm_60},
{"sgemm_32x32x32_NN_sm_60", sgemm_32x32x32_NN_sm_60},
{"sgemm_32x32x32_TN_sm_60", sgemm_32x32x32_TN_sm_60},
{"sgemm_32x32x32_NT_sm_60", sgemm_32x32x32_NT_sm_60},
{"sgemm_32x32x32_TT_sm_60", sgemm_32x32x32_TT_sm_60},
{"sgemm_32x32x32_NN_vec_sm_60", sgemm_32x32x32_NN_vec_sm_60},
{"sgemm_32x32x32_TN_vec_sm_60", sgemm_32x32x32_TN_vec_sm_60},
{"sgemm_32x32x32_NT_vec_sm_60", sgemm_32x32x32_NT_vec_sm_60},
{"sgemm_32x32x32_TT_vec_sm_60", sgemm_32x32x32_TT_vec_sm_60},
};
std::unordered_map<std::string, const uint8_t*> kernels_50 = {
{"hgemm_16x64x64_NN_sm_50", hgemm_16x64x64_NN_sm_50},
{"hgemm_16x64x64_NN_vec_sm_50", hgemm_16x64x64_NN_vec_sm_50},
{"hgemm_16x64x64_NT_sm_50", hgemm_16x64x64_NT_sm_50},
{"hgemm_16x64x64_NT_vec_sm_50", hgemm_16x64x64_NT_vec_sm_50},
{"hgemm_32x32x64_NT_sm_50", hgemm_32x32x64_NT_sm_50},
{"hgemm_32x32x64_NT_vec_sm_50", hgemm_32x32x64_NT_vec_sm_50},
{"hgemm_32x64x32_NN_sm_50", hgemm_32x64x32_NN_sm_50},
{"hgemm_32x64x32_NN_vec_sm_50", hgemm_32x64x32_NN_vec_sm_50},
{"hgemm_128x128x8_NN_sm_50", hgemm_128x128x8_NN_sm_50},
{"hgemm_128x128x8_TN_sm_50", hgemm_128x128x8_TN_sm_50},
{"hgemm_128x128x8_NT_sm_50", hgemm_128x128x8_NT_sm_50},
{"hgemm_128x128x8_TT_sm_50", hgemm_128x128x8_TT_sm_50},
{"hgemm_128x128x8_NN_vec_sm_50", hgemm_128x128x8_NN_vec_sm_50},
{"hgemm_128x128x8_TN_vec_sm_50", hgemm_128x128x8_TN_vec_sm_50},
{"hgemm_128x128x8_NT_vec_sm_50", hgemm_128x128x8_NT_vec_sm_50},
{"hgemm_128x128x8_TT_vec_sm_50", hgemm_128x128x8_TT_vec_sm_50},
{"hgemm_32x32x32_NN_sm_50", hgemm_32x32x32_NN_sm_50},
{"hgemm_32x32x32_TN_sm_50", hgemm_32x32x32_TN_sm_50},
{"hgemm_32x32x32_NT_sm_50", hgemm_32x32x32_NT_sm_50},
{"hgemm_32x32x32_TT_sm_50", hgemm_32x32x32_TT_sm_50},
{"hgemm_32x32x32_NN_vec_sm_50", hgemm_32x32x32_NN_vec_sm_50},
{"hgemm_32x32x32_TN_vec_sm_50", hgemm_32x32x32_TN_vec_sm_50},
{"hgemm_32x32x32_NT_vec_sm_50", hgemm_32x32x32_NT_vec_sm_50},
{"hgemm_32x32x32_TT_vec_sm_50", hgemm_32x32x32_TT_vec_sm_50},
{"sgemm_128x128x8_NN_sm_50", sgemm_128x128x8_NN_sm_50},
{"sgemm_128x128x8_TN_sm_50", sgemm_128x128x8_TN_sm_50},
{"sgemm_128x128x8_NT_sm_50", sgemm_128x128x8_NT_sm_50},
{"sgemm_128x128x8_TT_sm_50", sgemm_128x128x8_TT_sm_50},
{"sgemm_128x128x8_NN_vec_sm_50", sgemm_128x128x8_NN_vec_sm_50},
{"sgemm_128x128x8_TN_vec_sm_50", sgemm_128x128x8_TN_vec_sm_50},
{"sgemm_128x128x8_NT_vec_sm_50", sgemm_128x128x8_NT_vec_sm_50},
{"sgemm_128x128x8_TT_vec_sm_50", sgemm_128x128x8_TT_vec_sm_50},
{"sgemm_32x32x32_NN_sm_50", sgemm_32x32x32_NN_sm_50},
{"sgemm_32x32x32_TN_sm_50", sgemm_32x32x32_TN_sm_50},
{"sgemm_32x32x32_NT_sm_50", sgemm_32x32x32_NT_sm_50},
{"sgemm_32x32x32_TT_sm_50", sgemm_32x32x32_TT_sm_50},
{"sgemm_32x32x32_NN_vec_sm_50", sgemm_32x32x32_NN_vec_sm_50},
{"sgemm_32x32x32_TN_vec_sm_50", sgemm_32x32x32_TN_vec_sm_50},
{"sgemm_32x32x32_NT_vec_sm_50", sgemm_32x32x32_NT_vec_sm_50},
{"sgemm_32x32x32_TT_vec_sm_50", sgemm_32x32x32_TT_vec_sm_50},
};