* Copyright (c) 2025 Huawei Technologies Co., Ltd.
* This program is free software, you can redistribute it and/or modify it under the terms and conditions of
* CANN Open Software License Agreement Version 2.0 (the "License").
* Please refer to the License for details. You may not use this file except in compliance with the License.
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
* See LICENSE in the root of the software repository for the full text of the License.
*/
#include "gtest/gtest.h"
#include "ascir_ops.h"
#include "ascir_ops_utils.h"
#include "codegen_kernel.h"
#include "codegen_tiling_data.h"
class TestCodegenTilingData : public testing::Test, public codegen::TilingData {
protected:
TestCodegenTilingData() : codegen::TilingData("TestKernel", "TilingData") {}
};
TEST_F(TestCodegenTilingData, ClassBegin) {
EXPECT_EQ(this->ClassBegin("TestKernelTilingData", ""), "BEGIN_TILING_DATA_DEF_T(TestKernelTilingData)");
}
TEST_F(TestCodegenTilingData, ClassEnd) {
EXPECT_EQ(this->ClassEnd(), "END_TILING_DATA_DEF_T;");
}
TEST_F(TestCodegenTilingData, DataFieldDefine) {
af::SizeVar s0(af::Symbol("s0"));
EXPECT_EQ(this->DataFieldDefine(s0), "TILING_DATA_FIELD_DEF_T(uint32_t, s0);");
}
TEST_F(TestCodegenTilingData, ClassRegister) {
EXPECT_EQ(this->ClassRegister(), "REGISTER_TILING_DATA_CLASS(TestKernel, TilingData)");
}
TEST_F(TestCodegenTilingData, SingleGroupGenerateTilingData) {
af::AscGraph graph0("test_graph0");
graph0.CreateSizeVar("s0");
graph0.CreateSizeVar("s1");
af::AscGraph graph1("test_graph1");
graph1.CreateSizeVar("s1");
graph1.CreateSizeVar("s2");
std::vector<ascir::ImplGraph> impl_graphs;
impl_graphs.push_back(graph0);
impl_graphs.push_back(graph1);
std::vector<ascir::ScheduledResult> schedule_results;
ascir::ScheduledResult schedule_result;
ascir::ScheduleGroup schedule_group;
schedule_group.impl_graphs = impl_graphs;
schedule_result.schedule_groups.push_back(schedule_group);
schedule_results.push_back(schedule_result);
ascir::FusedScheduledResult fused_schedule_result;
fused_schedule_result.node_idx_to_scheduled_results.push_back(schedule_results);
const std::string test_res = R"rawliteral(#ifndef __TestKernel_Tiling_Data_H__
#define __TestKernel_Tiling_Data_H__
#include <stdint.h>
#include "kernel_tiling/kernel_tiling.h"
#define BEGIN_TILING_DATA_DEF_T(name) struct name {
#define TILING_DATA_FIELD_DEF_T(type, name) \
type name; \
inline void set_##name(type value) { name = value; } \
inline type get_##name() const { return name; } \
inline type* get_addr_##name() {return &name;}
#define END_TILING_DATA_DEF_T };
#define TILING_DATA_FIELD_DEF_T_STRUCT(struct_type, filed_name) \
struct_type filed_name;
BEGIN_TILING_DATA_DEF_T(TestKernelTilingData)
TILING_DATA_FIELD_DEF_T(uint32_t, block_dim);
TILING_DATA_FIELD_DEF_T(uint32_t, corenum);
TILING_DATA_FIELD_DEF_T(uint32_t, ub_size);
TILING_DATA_FIELD_DEF_T(uint32_t, hbm_size);
TILING_DATA_FIELD_DEF_T(uint32_t, tiling_key);
TILING_DATA_FIELD_DEF_T(uint32_t, s0);
TILING_DATA_FIELD_DEF_T(uint32_t, s1);
TILING_DATA_FIELD_DEF_T(uint32_t, s2);
END_TILING_DATA_DEF_T;
using AutofuseTilingData = TestKernelTilingData;
struct AutofuseTilingDataPerf {
AutofuseTilingData tiling_data;
double best_perf;
};
#endif
)rawliteral";
EXPECT_EQ(this->Generate(fused_schedule_result), test_res);
}
TEST_F(TestCodegenTilingData, SingleGroupGenerateTilingDataWithTranspose) {
af::AscGraph graph0("test_graph0");
graph0.CreateSizeVar("s0");
graph0.CreateSizeVar("s1");
af::AscGraph graph1("test_graph1");
graph1.CreateSizeVar("s1");
graph1.CreateSizeVar("s2");
af::ascir_op::Transpose transpose_op("Transpose");
graph1.AddNode(transpose_op);
std::vector<ascir::ImplGraph> impl_graphs;
impl_graphs.push_back(graph0);
impl_graphs.push_back(graph1);
std::vector<ascir::ScheduledResult> schedule_results;
ascir::ScheduledResult schedule_result;
ascir::ScheduleGroup schedule_group;
schedule_group.impl_graphs = impl_graphs;
schedule_result.schedule_groups.push_back(schedule_group);
schedule_results.push_back(schedule_result);
ascir::FusedScheduledResult fused_schedule_result;
fused_schedule_result.node_idx_to_scheduled_results.push_back(schedule_results);
const std::string test_res = R"rawliteral(#ifndef __TestKernel_Tiling_Data_H__
#define __TestKernel_Tiling_Data_H__
#include <stdint.h>
#include "kernel_tiling/kernel_tiling.h"
#define BEGIN_TILING_DATA_DEF_T(name) struct name {
#define TILING_DATA_FIELD_DEF_T(type, name) \
type name; \
inline void set_##name(type value) { name = value; } \
inline type get_##name() const { return name; } \
inline type* get_addr_##name() {return &name;}
#define END_TILING_DATA_DEF_T };
#define TILING_DATA_FIELD_DEF_T_STRUCT(struct_type, filed_name) \
struct_type filed_name;
BEGIN_TILING_DATA_DEF_T(TestKernelTilingData)
TILING_DATA_FIELD_DEF_T(uint32_t, block_dim);
TILING_DATA_FIELD_DEF_T(uint32_t, corenum);
TILING_DATA_FIELD_DEF_T(uint32_t, ub_size);
TILING_DATA_FIELD_DEF_T(uint32_t, hbm_size);
TILING_DATA_FIELD_DEF_T(uint32_t, tiling_key);
TILING_DATA_FIELD_DEF_T(uint32_t, s0);
TILING_DATA_FIELD_DEF_T(uint32_t, s1);
TILING_DATA_FIELD_DEF_T(uint32_t, s2);
TILING_DATA_FIELD_DEF_T_STRUCT(ConfusionTransposeTiling, Transpose_tilingData_1);
END_TILING_DATA_DEF_T;
using AutofuseTilingData = TestKernelTilingData;
struct AutofuseTilingDataPerf {
AutofuseTilingData tiling_data;
double best_perf;
};
#endif
)rawliteral";
EXPECT_EQ(this->Generate(fused_schedule_result), test_res);
}
TEST_F(TestCodegenTilingData, SingleGroupGenerateConstTilingDataWithTranspose) {
af::AscGraph graph0("test_graph0");
graph0.CreateSizeVar("s0");
graph0.CreateSizeVar("s1");
af::AscGraph graph1("test_graph1");
graph1.CreateSizeVar("s1");
graph1.CreateSizeVar("s2");
af::ascir_op::Transpose transpose_op("Transpose");
graph1.AddNode(transpose_op);
std::vector<ascir::ImplGraph> impl_graphs;
impl_graphs.push_back(graph0);
impl_graphs.push_back(graph1);
std::vector<ascir::ScheduledResult> schedule_results;
ascir::ScheduledResult schedule_result;
ascir::ScheduleGroup schedule_group;
schedule_group.impl_graphs = impl_graphs;
schedule_result.schedule_groups.push_back(schedule_group);
schedule_results.push_back(schedule_result);
ascir::FusedScheduledResult fused_schedule_result;
fused_schedule_result.node_idx_to_scheduled_results.push_back(schedule_results);
const std::string test_res = R"rawliteral(std::string tiling_data_const_gen_result;
AutofuseTilingData TilingDataValue;
void replaceSubstring(std::string& ori_str, const std::string& old_sub_str, const std::string& new_sub_str) {
size_t pos = ori_str.find(old_sub_str);
if (pos != std::string::npos) {
ori_str.replace(pos, old_sub_str.length(), new_sub_str);
}
}
std::string GenTilingDataFieldConstDefFunc(const std::string &f_name, uint32_t value) {
std::stringstream ss_mid;
ss_mid << "const uint32_t ";
ss_mid << f_name << " = " << std::to_string(value) << ";" << std::endl;
return ss_mid.str();
}
std::string GenTilingDataFieldConstValueFunc(uint32_t value) {
std::stringstream ss_mid;
ss_mid << std::to_string(value) << std::endl;
return ss_mid.str();
}
extern "C" const char* GenConstTilingData(char* config_file, int aiv_num, int ub_size) {
uint32_t workspace_size;
uint32_t block_dim;
ResLimit limit;
limit.aiv_num = aiv_num;
limit.ub_size = ub_size - 256;
(void)AutofuseTilingWithConfig(config_file, &TilingDataValue, &workspace_size, &block_dim, nullptr);
std::string GenTilingDataValue_block_dim_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("block_dim", TilingDataValue.block_dim);
std::string GenTilingDataValue_corenum_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("corenum", TilingDataValue.corenum);
std::string GenTilingDataValue_ub_size_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("ub_size", TilingDataValue.ub_size);
std::string GenTilingDataValue_hbm_size_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("hbm_size", TilingDataValue.hbm_size);
std::string GenTilingDataValue_tiling_key_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("tiling_key", TilingDataValue.tiling_key);
std::string GenTilingDataValue_s0_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("s0", TilingDataValue.s0);
std::string GenTilingDataValue_s1_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("s1", TilingDataValue.s1);
std::string GenTilingDataValue_s2_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("s2", TilingDataValue.s2);
std::string GenTilingDataValue_Transpose_tilingData_1_param0_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param0);
std::string GenTilingDataValue_Transpose_tilingData_1_param1_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param1);
std::string GenTilingDataValue_Transpose_tilingData_1_param2_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param2);
std::string GenTilingDataValue_Transpose_tilingData_1_param3_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param3);
std::string GenTilingDataValue_Transpose_tilingData_1_param4_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param4);
std::string GenTilingDataValue_Transpose_tilingData_1_param5_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param5);
std::string GenTilingDataValue_Transpose_tilingData_1_param6_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param6);
std::string GenTilingDataValue_Transpose_tilingData_1_param7_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param7);
std::string GenTilingDataValue_Transpose_tilingData_1_param8_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param8);
std::string GenTilingDataValue_Transpose_tilingData_1_param9_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param9);
std::string GenTilingDataValue_Transpose_tilingData_1_param10_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param10);
std::string GenTilingDataValue_Transpose_tilingData_1_param11_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param11);
std::string GenTilingDataValue_Transpose_tilingData_1_param12_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param12);
std::string GenTilingDataValue_Transpose_tilingData_1_param13_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param13);
std::string GenTilingDataValue_Transpose_tilingData_1_param14_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param14);
std::string GenTilingDataValue_Transpose_tilingData_1_param15_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param15);
std::string GenTilingDataValue_Transpose_tilingData_1_param16_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param16);
std::string GenTilingDataValue_Transpose_tilingData_1_param17_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.Transpose_tilingData_1.param17);
tiling_data_const_gen_result = R"(#ifndef __TestKernel_Tiling_Data_H__
#define __TestKernel_Tiling_Data_H__
#include <stdint.h>
#include "kernel_tiling/kernel_tiling.h"
#define BEGIN_TILING_DATA_DEF_T(name) struct name {
#define TILING_DATA_FIELD_DEF_T(type, name) \
type name; \
inline void set_##name(type value) { name = value; } \
inline type get_##name() const { return name; } \
inline type* get_addr_##name() {return &name;}
#define END_TILING_DATA_DEF_T };
#define TILING_DATA_FIELD_DEF_T_STRUCT(struct_type, filed_name) \
struct_type filed_name;
BEGIN_TILING_DATA_DEF_T(TestKernelTilingData)
GenTilingDataValue_block_dim_field_DeclareFunc_def
GenTilingDataValue_corenum_field_DeclareFunc_def
GenTilingDataValue_ub_size_field_DeclareFunc_def
GenTilingDataValue_hbm_size_field_DeclareFunc_def
GenTilingDataValue_tiling_key_field_DeclareFunc_def
GenTilingDataValue_s0_field_DeclareFunc_def
GenTilingDataValue_s1_field_DeclareFunc_def
GenTilingDataValue_s2_field_DeclareFunc_def
const ConfusionTransposeTiling Transpose_tilingData_1 = {GenTilingDataValue_Transpose_tilingData_1_param0_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param1_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param2_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param3_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param4_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param5_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param6_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param7_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param8_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param9_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param10_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param11_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param12_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param13_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param14_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param15_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param16_field_DeclareFunc_field_def, GenTilingDataValue_Transpose_tilingData_1_param17_field_DeclareFunc_field_def};
END_TILING_DATA_DEF_T;
using AutofuseTilingData = TestKernelTilingData;
struct AutofuseTilingDataPerf {
AutofuseTilingData tiling_data;
double best_perf;
};
#endif
)";
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_block_dim_field_DeclareFunc_def",GenTilingDataValue_block_dim_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_corenum_field_DeclareFunc_def",GenTilingDataValue_corenum_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_ub_size_field_DeclareFunc_def",GenTilingDataValue_ub_size_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_hbm_size_field_DeclareFunc_def",GenTilingDataValue_hbm_size_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_tiling_key_field_DeclareFunc_def",GenTilingDataValue_tiling_key_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_s0_field_DeclareFunc_def",GenTilingDataValue_s0_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_s1_field_DeclareFunc_def",GenTilingDataValue_s1_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_s2_field_DeclareFunc_def",GenTilingDataValue_s2_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param0_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param0_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param1_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param1_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param2_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param2_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param3_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param3_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param4_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param4_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param5_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param5_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param6_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param6_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param7_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param7_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param8_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param8_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param9_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param9_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param10_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param10_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param11_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param11_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param12_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param12_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param13_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param13_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param14_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param14_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param15_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param15_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param16_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param16_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_Transpose_tilingData_1_param17_field_DeclareFunc_field_def",GenTilingDataValue_Transpose_tilingData_1_param17_field_DeclareFunc_field_def);
return tiling_data_const_gen_result.c_str();
}
)rawliteral";
EXPECT_EQ(this->GenerateConst(fused_schedule_result), test_res);
}
TEST_F(TestCodegenTilingData, multiGroupGenerateConstTilingDataWithTranspose) {
af::AscGraph graph0("test_graph0");
graph0.CreateSizeVar("s0");
graph0.CreateSizeVar("s1");
af::AscGraph graph1("test_graph1");
graph1.CreateSizeVar("s1");
graph1.CreateSizeVar("s2");
af::ascir_op::Transpose transpose_op("Transpose");
graph1.AddNode(transpose_op);
std::vector<ascir::ImplGraph> impl_graphs;
impl_graphs.push_back(graph0);
impl_graphs.push_back(graph1);
std::vector<ascir::ScheduledResult> schedule_results;
ascir::ScheduledResult schedule_result;
ascir::ScheduleGroup schedule_group;
schedule_group.impl_graphs = impl_graphs;
schedule_result.schedule_groups.push_back(schedule_group);
schedule_result.schedule_groups.push_back(schedule_group);
schedule_results.push_back(schedule_result);
ascir::FusedScheduledResult fused_schedule_result;
fused_schedule_result.node_idx_to_scheduled_results.push_back(schedule_results);
const std::string test_res = R"rawliteral(std::string tiling_data_const_gen_result;
AutofuseTilingData TilingDataValue;
void replaceSubstring(std::string& ori_str, const std::string& old_sub_str, const std::string& new_sub_str) {
size_t pos = ori_str.find(old_sub_str);
if (pos != std::string::npos) {
ori_str.replace(pos, old_sub_str.length(), new_sub_str);
}
}
std::string GenTilingDataFieldConstDefFunc(const std::string &f_name, uint32_t value) {
std::stringstream ss_mid;
ss_mid << "const uint32_t ";
ss_mid << f_name << " = " << std::to_string(value) << ";" << std::endl;
return ss_mid.str();
}
std::string GenTilingDataFieldConstValueFunc(uint32_t value) {
std::stringstream ss_mid;
ss_mid << std::to_string(value) << std::endl;
return ss_mid.str();
}
extern "C" const char* GenConstTilingData(char* config_file, int aiv_num, int ub_size) {
uint32_t workspace_size;
uint32_t block_dim;
ResLimit limit;
limit.aiv_num = aiv_num;
limit.ub_size = ub_size - 256;
(void)AutofuseTilingWithConfig(config_file, &TilingDataValue, &workspace_size, &block_dim, nullptr);
std::string GenTilingDataValue_block_dim_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("block_dim", TilingDataValue.block_dim);
std::string GenTilingDataValue_corenum_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("corenum", TilingDataValue.corenum);
std::string GenTilingDataValue_ub_size_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("ub_size", TilingDataValue.ub_size);
std::string GenTilingDataValue_hbm_size_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("hbm_size", TilingDataValue.hbm_size);
std::string GenTilingDataValue_graph0_tiling_key_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("graph0_tiling_key", TilingDataValue.graph0_tiling_key);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_block_dim_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("block_dim", TilingDataValue.graph0_result0_g0_tiling_data.block_dim);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_corenum_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("corenum", TilingDataValue.graph0_result0_g0_tiling_data.corenum);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_ub_size_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("ub_size", TilingDataValue.graph0_result0_g0_tiling_data.ub_size);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_hbm_size_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("hbm_size", TilingDataValue.graph0_result0_g0_tiling_data.hbm_size);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_tiling_key_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("tiling_key", TilingDataValue.graph0_result0_g0_tiling_data.tiling_key);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_s0_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("s0", TilingDataValue.graph0_result0_g0_tiling_data.s0);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_s1_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("s1", TilingDataValue.graph0_result0_g0_tiling_data.s1);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_s2_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("s2", TilingDataValue.graph0_result0_g0_tiling_data.s2);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param0_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param0);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param1_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param1);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param2_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param2);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param3_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param3);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param4_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param4);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param5_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param5);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param6_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param6);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param7_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param7);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param8_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param8);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param9_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param9);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param10_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param10);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param11_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param11);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param12_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param12);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param13_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param13);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param14_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param14);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param15_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param15);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param16_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param16);
std::string GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param17_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g0_tiling_data.Transpose_tilingData_1.param17);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_block_dim_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("block_dim", TilingDataValue.graph0_result0_g1_tiling_data.block_dim);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_corenum_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("corenum", TilingDataValue.graph0_result0_g1_tiling_data.corenum);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_ub_size_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("ub_size", TilingDataValue.graph0_result0_g1_tiling_data.ub_size);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_hbm_size_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("hbm_size", TilingDataValue.graph0_result0_g1_tiling_data.hbm_size);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_tiling_key_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("tiling_key", TilingDataValue.graph0_result0_g1_tiling_data.tiling_key);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_s0_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("s0", TilingDataValue.graph0_result0_g1_tiling_data.s0);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_s1_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("s1", TilingDataValue.graph0_result0_g1_tiling_data.s1);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_s2_field_DeclareFunc_def = GenTilingDataFieldConstDefFunc("s2", TilingDataValue.graph0_result0_g1_tiling_data.s2);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param0_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param0);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param1_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param1);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param2_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param2);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param3_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param3);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param4_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param4);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param5_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param5);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param6_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param6);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param7_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param7);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param8_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param8);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param9_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param9);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param10_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param10);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param11_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param11);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param12_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param12);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param13_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param13);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param14_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param14);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param15_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param15);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param16_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param16);
std::string GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param17_field_DeclareFunc_field_def = GenTilingDataFieldConstValueFunc(TilingDataValue.graph0_result0_g1_tiling_data.Transpose_tilingData_1.param17);
tiling_data_const_gen_result = R"(#ifndef __TestKernel_Tiling_Data_H__
#define __TestKernel_Tiling_Data_H__
#include <stdint.h>
#include "kernel_tiling/kernel_tiling.h"
#define BEGIN_TILING_DATA_DEF_T(name) struct name {
#define TILING_DATA_FIELD_DEF_T(type, name) \
type name; \
inline void set_##name(type value) { name = value; } \
inline type get_##name() const { return name; } \
inline type* get_addr_##name() {return &name;}
#define END_TILING_DATA_DEF_T };
#define TILING_DATA_FIELD_DEF_T_STRUCT(struct_type, filed_name) \
struct_type filed_name;
BEGIN_TILING_DATA_DEF_T(AscGraph0ScheduleResult0G0TilingData)
GenTilingDataValue_graph0_result0_g0_tiling_data_block_dim_field_DeclareFunc_def
GenTilingDataValue_graph0_result0_g0_tiling_data_corenum_field_DeclareFunc_def
GenTilingDataValue_graph0_result0_g0_tiling_data_ub_size_field_DeclareFunc_def
GenTilingDataValue_graph0_result0_g0_tiling_data_hbm_size_field_DeclareFunc_def
GenTilingDataValue_graph0_result0_g0_tiling_data_tiling_key_field_DeclareFunc_def
GenTilingDataValue_graph0_result0_g0_tiling_data_s0_field_DeclareFunc_def
GenTilingDataValue_graph0_result0_g0_tiling_data_s1_field_DeclareFunc_def
GenTilingDataValue_graph0_result0_g0_tiling_data_s2_field_DeclareFunc_def
const ConfusionTransposeTiling Transpose_tilingData_1 = {GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param0_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param1_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param2_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param3_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param4_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param5_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param6_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param7_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param8_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param9_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param10_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param11_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param12_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param13_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param14_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param15_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param16_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param17_field_DeclareFunc_field_def};
END_TILING_DATA_DEF_T;
BEGIN_TILING_DATA_DEF_T(AscGraph0ScheduleResult0G1TilingData)
GenTilingDataValue_graph0_result0_g1_tiling_data_block_dim_field_DeclareFunc_def
GenTilingDataValue_graph0_result0_g1_tiling_data_corenum_field_DeclareFunc_def
GenTilingDataValue_graph0_result0_g1_tiling_data_ub_size_field_DeclareFunc_def
GenTilingDataValue_graph0_result0_g1_tiling_data_hbm_size_field_DeclareFunc_def
GenTilingDataValue_graph0_result0_g1_tiling_data_tiling_key_field_DeclareFunc_def
GenTilingDataValue_graph0_result0_g1_tiling_data_s0_field_DeclareFunc_def
GenTilingDataValue_graph0_result0_g1_tiling_data_s1_field_DeclareFunc_def
GenTilingDataValue_graph0_result0_g1_tiling_data_s2_field_DeclareFunc_def
const ConfusionTransposeTiling Transpose_tilingData_1 = {GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param0_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param1_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param2_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param3_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param4_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param5_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param6_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param7_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param8_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param9_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param10_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param11_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param12_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param13_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param14_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param15_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param16_field_DeclareFunc_field_def, GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param17_field_DeclareFunc_field_def};
END_TILING_DATA_DEF_T;
BEGIN_TILING_DATA_DEF_T(TestKernelTilingData)
GenTilingDataValue_block_dim_field_DeclareFunc_def
GenTilingDataValue_corenum_field_DeclareFunc_def
GenTilingDataValue_ub_size_field_DeclareFunc_def
GenTilingDataValue_hbm_size_field_DeclareFunc_def
GenTilingDataValue_graph0_tiling_key_field_DeclareFunc_def
TILING_DATA_FIELD_DEF_T_STRUCT(AscGraph0ScheduleResult0G0TilingData, graph0_result0_g0_tiling_data);
TILING_DATA_FIELD_DEF_T_STRUCT(AscGraph0ScheduleResult0G1TilingData, graph0_result0_g1_tiling_data);
END_TILING_DATA_DEF_T;
using AutofuseTilingData = TestKernelTilingData;
struct AutofuseTilingDataPerf {
AutofuseTilingData tiling_data;
double best_perf;
};
#endif
)";
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_block_dim_field_DeclareFunc_def",GenTilingDataValue_block_dim_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_corenum_field_DeclareFunc_def",GenTilingDataValue_corenum_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_ub_size_field_DeclareFunc_def",GenTilingDataValue_ub_size_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_hbm_size_field_DeclareFunc_def",GenTilingDataValue_hbm_size_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_tiling_key_field_DeclareFunc_def",GenTilingDataValue_graph0_tiling_key_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_block_dim_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g0_tiling_data_block_dim_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_corenum_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g0_tiling_data_corenum_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_ub_size_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g0_tiling_data_ub_size_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_hbm_size_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g0_tiling_data_hbm_size_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_tiling_key_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g0_tiling_data_tiling_key_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_s0_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g0_tiling_data_s0_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_s1_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g0_tiling_data_s1_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_s2_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g0_tiling_data_s2_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param0_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param0_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param1_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param1_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param2_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param2_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param3_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param3_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param4_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param4_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param5_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param5_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param6_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param6_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param7_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param7_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param8_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param8_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param9_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param9_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param10_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param10_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param11_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param11_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param12_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param12_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param13_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param13_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param14_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param14_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param15_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param15_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param16_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param16_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param17_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g0_tiling_data_Transpose_tilingData_1_param17_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_block_dim_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g1_tiling_data_block_dim_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_corenum_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g1_tiling_data_corenum_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_ub_size_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g1_tiling_data_ub_size_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_hbm_size_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g1_tiling_data_hbm_size_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_tiling_key_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g1_tiling_data_tiling_key_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_s0_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g1_tiling_data_s0_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_s1_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g1_tiling_data_s1_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_s2_field_DeclareFunc_def",GenTilingDataValue_graph0_result0_g1_tiling_data_s2_field_DeclareFunc_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param0_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param0_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param1_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param1_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param2_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param2_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param3_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param3_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param4_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param4_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param5_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param5_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param6_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param6_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param7_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param7_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param8_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param8_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param9_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param9_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param10_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param10_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param11_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param11_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param12_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param12_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param13_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param13_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param14_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param14_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param15_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param15_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param16_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param16_field_DeclareFunc_field_def);
replaceSubstring(tiling_data_const_gen_result, "GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param17_field_DeclareFunc_field_def",GenTilingDataValue_graph0_result0_g1_tiling_data_Transpose_tilingData_1_param17_field_DeclareFunc_field_def);
return tiling_data_const_gen_result.c_str();
}
)rawliteral";
EXPECT_EQ(this->GenerateConst(fused_schedule_result), test_res);
}
TEST_F(TestCodegenTilingData, MultiGroupGenerateTilingData) {
af::AscGraph graph0("test_graph0");
graph0.CreateSizeVar("s0");
graph0.CreateSizeVar("s1");
af::AscGraph graph1("test_graph1");
graph1.CreateSizeVar("s1");
graph1.CreateSizeVar("s2");
af::AscGraph graph2("test_graph2");
graph2.CreateSizeVar("s0");
graph2.CreateSizeVar("s1");
af::AscGraph graph3("test_graph3");
graph3.CreateSizeVar("s1");
graph3.CreateSizeVar("s2");
af::AscGraph graph4("test_graph4");
graph4.CreateSizeVar("s0");
graph4.CreateSizeVar("s1");
af::AscGraph graph5("test_graph5");
graph5.CreateSizeVar("s1");
graph5.CreateSizeVar("s2");
std::vector<ascir::ImplGraph> impl_graphs0;
impl_graphs0.push_back(graph0);
impl_graphs0.push_back(graph1);
std::vector<ascir::ImplGraph> impl_graphs1;
impl_graphs1.push_back(graph2);
impl_graphs1.push_back(graph3);
std::vector<ascir::ImplGraph> impl_graphs2;
impl_graphs2.push_back(graph4);
impl_graphs2.push_back(graph5);
std::vector<ascir::ScheduledResult> schedule_results;
ascir::ScheduledResult schedule_result0;
ascir::ScheduleGroup schedule_group0;
schedule_group0.impl_graphs = impl_graphs0;
schedule_result0.schedule_groups.push_back(schedule_group0);
schedule_results.push_back(schedule_result0);
ascir::ScheduledResult schedule_result1;
ascir::ScheduleGroup schedule_group10;
schedule_group10.impl_graphs = impl_graphs1;
ascir::ScheduleGroup schedule_group11;
schedule_group11.impl_graphs = impl_graphs2;
schedule_result1.schedule_groups.push_back(schedule_group10);
schedule_result1.schedule_groups.push_back(schedule_group11);
schedule_results.push_back(schedule_result1);
ascir::FusedScheduledResult fused_schedule_result;
fused_schedule_result.node_idx_to_scheduled_results.push_back(schedule_results);
const std::string test_res = R"rawliteral(#ifndef __TestKernel_Tiling_Data_H__
#define __TestKernel_Tiling_Data_H__
#include <stdint.h>
#include "kernel_tiling/kernel_tiling.h"
#define BEGIN_TILING_DATA_DEF_T(name) struct name {
#define TILING_DATA_FIELD_DEF_T(type, name) \
type name; \
inline void set_##name(type value) { name = value; } \
inline type get_##name() const { return name; } \
inline type* get_addr_##name() {return &name;}
#define END_TILING_DATA_DEF_T };
#define TILING_DATA_FIELD_DEF_T_STRUCT(struct_type, filed_name) \
struct_type filed_name;
BEGIN_TILING_DATA_DEF_T(AscGraph0ScheduleResult0G0TilingData)
TILING_DATA_FIELD_DEF_T(uint32_t, block_dim);
TILING_DATA_FIELD_DEF_T(uint32_t, corenum);
TILING_DATA_FIELD_DEF_T(uint32_t, ub_size);
TILING_DATA_FIELD_DEF_T(uint32_t, hbm_size);
TILING_DATA_FIELD_DEF_T(uint32_t, tiling_key);
TILING_DATA_FIELD_DEF_T(uint32_t, s0);
TILING_DATA_FIELD_DEF_T(uint32_t, s1);
TILING_DATA_FIELD_DEF_T(uint32_t, s2);
END_TILING_DATA_DEF_T;
BEGIN_TILING_DATA_DEF_T(AscGraph0ScheduleResult1G0TilingData)
TILING_DATA_FIELD_DEF_T(uint32_t, block_dim);
TILING_DATA_FIELD_DEF_T(uint32_t, corenum);
TILING_DATA_FIELD_DEF_T(uint32_t, ub_size);
TILING_DATA_FIELD_DEF_T(uint32_t, hbm_size);
TILING_DATA_FIELD_DEF_T(uint32_t, tiling_key);
TILING_DATA_FIELD_DEF_T(uint32_t, s0);
TILING_DATA_FIELD_DEF_T(uint32_t, s1);
TILING_DATA_FIELD_DEF_T(uint32_t, s2);
END_TILING_DATA_DEF_T;
BEGIN_TILING_DATA_DEF_T(AscGraph0ScheduleResult1G1TilingData)
TILING_DATA_FIELD_DEF_T(uint32_t, block_dim);
TILING_DATA_FIELD_DEF_T(uint32_t, corenum);
TILING_DATA_FIELD_DEF_T(uint32_t, ub_size);
TILING_DATA_FIELD_DEF_T(uint32_t, hbm_size);
TILING_DATA_FIELD_DEF_T(uint32_t, tiling_key);
TILING_DATA_FIELD_DEF_T(uint32_t, s0);
TILING_DATA_FIELD_DEF_T(uint32_t, s1);
TILING_DATA_FIELD_DEF_T(uint32_t, s2);
END_TILING_DATA_DEF_T;
BEGIN_TILING_DATA_DEF_T(TestKernelTilingData)
TILING_DATA_FIELD_DEF_T(uint32_t, block_dim);
TILING_DATA_FIELD_DEF_T(uint32_t, corenum);
TILING_DATA_FIELD_DEF_T(uint32_t, ub_size);
TILING_DATA_FIELD_DEF_T(uint32_t, hbm_size);
TILING_DATA_FIELD_DEF_T(uint32_t, graph0_tiling_key);
TILING_DATA_FIELD_DEF_T_STRUCT(AscGraph0ScheduleResult0G0TilingData, graph0_result0_g0_tiling_data);
TILING_DATA_FIELD_DEF_T_STRUCT(AscGraph0ScheduleResult1G0TilingData, graph0_result1_g0_tiling_data);
TILING_DATA_FIELD_DEF_T_STRUCT(AscGraph0ScheduleResult1G1TilingData, graph0_result1_g1_tiling_data);
END_TILING_DATA_DEF_T;
using AutofuseTilingData = TestKernelTilingData;
struct AutofuseTilingDataPerf {
AutofuseTilingData tiling_data;
double best_perf;
};
#endif
)rawliteral";
EXPECT_EQ(this->Generate(fused_schedule_result), test_res);
}
TEST_F(TestCodegenTilingData, AddApiTilingData) {
af::AscGraph graph("test_graph");
auto s0 = graph.CreateSizeVar("s0");
auto s1 = graph.CreateSizeVar("s1");
auto z0 = graph.CreateAxis("z0", s0);
auto z1 = graph.CreateAxis("z1", s1);
af::ascir_op::Transpose transpose_op("Transpose");
graph.AddNode(transpose_op);
*transpose_op.y.axis = {z1.id, z0.id};
auto transpose = graph.FindNode("Transpose");
transpose->attr.api.compute_type = af::ComputeType::kComputeTranspose;
transpose->attr.api.type = af::ApiType::kAPITypeCompute;
transpose->attr.api.unit = af::ComputeUnit::kUnitVector;
transpose->attr.sched.loop_axis = z0.id;
transpose->outputs[0].attr.vectorized_axis = {z1.id, z0.id};
transpose->outputs[0].attr.dtype = ge::DT_FLOAT;
transpose->outputs[0].attr.mem.position = af::Position::kPositionVecOut;
transpose->outputs[0].attr.mem.tensor_id = 1;
transpose->outputs[0].attr.mem.alloc_type = af::AllocType::kAllocTypeQueue;
transpose->outputs[0].attr.que.id = 2;
transpose->outputs[0].attr.opt.merge_scope = af::kIdNone;
codegen::Tiler tiler;
codegen::TPipe tpipe("tpipe", tiler);
tpipe.AddTensor(transpose->outputs[0]);
tiler.AddAxis(z0);
tiler.AddAxis(z1);
tiler.AddSizeVar(af::SizeVar(s0));
tiler.AddSizeVar(af::SizeVar(s1));
tiler.SetTilingCaseId(0);
codegen::ApiTensor x;
std::stringstream ss;
uint32_t tiling_case_id = 0;
std::string tilingString;
codegen::TilingData::AddApiTilingData(graph, ss, tiling_case_id);
tilingString = ss.str();
EXPECT_EQ(tilingString, std::string{
" TILING_DATA_FIELD_DEF_T_STRUCT(ConfusionTransposeTiling, Transpose_tilingData_0);\n"
});
}