已合并
fix: 修复 ATT 注册表并删除历史 pass #1821
fix: 修复 ATT 注册表并删除历史 pass #1821
已合并
zhang_shengjie创建于 14 天前
10 个文件变更+405-719
@@ -16,14 +16,17 @@ ApiPerfFactory &ApiPerfFactory::Instance() {
16}16}
17 17 
18std::unique_ptr<ApiPerf> ApiPerfFactory::Create(const std::string &class_name) {18std::unique_ptr<ApiPerf> ApiPerfFactory::Create(const std::string &class_name) {
19- std::lock_guard<std::mutex> lock(mutex_);19+ ApiPerfCreatorFun creator;
20- const auto iter = creator_map_.find(class_name);20+ {
21- if (iter == creator_map_.end()) {21+ std::lock_guard<std::mutex> lock(mutex_);
22- GELOGW("Cannot find node type %s in inner map.", class_name.c_str());22+ const auto iter = creator_map_.find(class_name);
23- return nullptr;23+ if (iter == creator_map_.end()) {
24+ GELOGW("Cannot find node type %s in inner map.", class_name.c_str());
25+ return nullptr;
26+ }
27+ creator = iter->second;
24 }28 }
25- auto &func = creator_map_[class_name];
26 GELOGD("Create ApiPerf success, class_name: %s", class_name.c_str());29 GELOGD("Create ApiPerf success, class_name: %s", class_name.c_str());
27- return func(class_name);30+ return creator(class_name);
28}31}
29} // namespace att32} // namespace att
@@ -21,6 +21,7 @@
21#include "common_utils.h"21#include "common_utils.h"
22namespace att {22namespace att {
23using ApiPerfCreatorFun = std::function<std::unique_ptr<ApiPerf>(const std::string &)>;23using ApiPerfCreatorFun = std::function<std::unique_ptr<ApiPerf>(const std::string &)>;
24+Perf GetPerfFunc(const std::string &op_type);
24class __attribute__((visibility("default"))) ApiPerfFactory {25class __attribute__((visibility("default"))) ApiPerfFactory {
25 public:26 public:
26 static ApiPerfFactory &Instance();27 static ApiPerfFactory &Instance();
@@ -72,6 +73,17 @@ class ApiPerfRegister {
72 };73 };
73 ApiPerfFactory::Registerar(api_name, std::move(creator));74 ApiPerfFactory::Registerar(api_name, std::move(creator));
74 }75 }
76+ 
77+ explicit ApiPerfRegister(const std::string &api_name, const std::string &perf_func_name,
78+ MicroPerfFunc micro_perf_func, const PerfParamTable *perf_param,
79+ const TilingScheduleConfigTable *tiling_schedule_config_table) {
80+ ApiPerfCreatorFun creator = [perf_func_name, micro_perf_func, perf_param,
81+ tiling_schedule_config_table](const std::string &name) {
82+ return std::make_unique<T>(name, GetPerfFunc(perf_func_name), micro_perf_func, perf_param,
83+ tiling_schedule_config_table);
84+ };
85+ ApiPerfFactory::Registerar(api_name, std::move(creator));
86+ }
75};87};
76 88 
77} // namespace att89} // namespace att
@@ -12,6 +12,7 @@
12#define API_PERF_REGISTER_ASCENDC_API_PERF_H_12#define API_PERF_REGISTER_ASCENDC_API_PERF_H_
13 13 
14#include <map>14#include <map>
15+#include <mutex>
15#include <unordered_map>16#include <unordered_map>
16#include <sstream>17#include <sstream>
17#include "base/model_info.h"18#include "base/model_info.h"
@@ -24,23 +25,23 @@ class EvalCosts {
24 static EvalCosts &Instance();25 static EvalCosts &Instance();
25 26 
26 void RegisterFunc(const std::string &op_type, const Perf &perf_func) {27 void RegisterFunc(const std::string &op_type, const Perf &perf_func) {
28+ std::lock_guard<std::mutex> lock(mutex_);
27 func_container_[op_type] = perf_func;29 func_container_[op_type] = perf_func;
28 }30 }
29 void RegisterAscendCFunc(const std::string &op_type, const AscendCPerf &ascendc_perf_func) {31 void RegisterAscendCFunc(const std::string &op_type, const AscendCPerf &ascendc_perf_func) {
32+ std::lock_guard<std::mutex> lock(mutex_);
30 ascendc_func_container_[op_type] = ascendc_perf_func;33 ascendc_func_container_[op_type] = ascendc_perf_func;
31 }34 }
32 35 
33 Perf GetFunc(const std::string &op_type) {36 Perf GetFunc(const std::string &op_type) {
34- if (func_container_.find(op_type) == func_container_.end()) {37+ std::lock_guard<std::mutex> lock(mutex_);
35- return nullptr;38+ const auto iter = func_container_.find(op_type);
36- }39+ return iter == func_container_.end() ? nullptr : iter->second;
37- return func_container_[op_type];
38 }40 }
39 AscendCPerf GetAscendCFunc(const std::string &op_type) {41 AscendCPerf GetAscendCFunc(const std::string &op_type) {
40- if (ascendc_func_container_.find(op_type) == ascendc_func_container_.end()) {42+ std::lock_guard<std::mutex> lock(mutex_);
41- return nullptr;43+ const auto iter = ascendc_func_container_.find(op_type);
42- }44+ return iter == ascendc_func_container_.end() ? nullptr : iter->second;
43- return ascendc_func_container_[op_type];
44 }45 }
45 46 
46 private:47 private:
@@ -50,6 +51,7 @@ class EvalCosts {
50 private:51 private:
51 std::unordered_map<std::string, Perf> func_container_;52 std::unordered_map<std::string, Perf> func_container_;
52 std::unordered_map<std::string, AscendCPerf> ascendc_func_container_;53 std::unordered_map<std::string, AscendCPerf> ascendc_func_container_;
54+ std::mutex mutex_;
53};55};
54 56 
55class FuncRegister {57class FuncRegister {
@@ -1781,90 +1781,70 @@ namespace {
1781PerfParamTableV1 perf_param_table_v1;1781PerfParamTableV1 perf_param_table_v1;
1782TilingScheduleConfigTableV1 tiling_schedule_config_table_v1;1782TilingScheduleConfigTableV1 tiling_schedule_config_table_v1;
1783TilingScheduleConfigTableV1HeavyOp tiling_schedule_config_table_v1_heavy_op;1783TilingScheduleConfigTableV1HeavyOp tiling_schedule_config_table_v1_heavy_op;
1784-ApiPerfRegister<ApiPerf> add_api_perf(kAdd, GetPerfFunc(kAdd), nullptr, &perf_param_table_v1,1784+ApiPerfRegister<ApiPerf> add_api_perf(kAdd, kAdd, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1785- &tiling_schedule_config_table_v1);1785+ApiPerfRegister<ApiPerf> gather_api_perf(kGather, kGather, nullptr, &perf_param_table_v1,
1786-ApiPerfRegister<ApiPerf> gather_api_perf(kGather, GetPerfFunc(kGather), nullptr, &perf_param_table_v1,
1787 &tiling_schedule_config_table_v1);1786 &tiling_schedule_config_table_v1);
1788-ApiPerfRegister<ApiPerf> abs_api_perf(kAbs, GetPerfFunc(kAbs), nullptr, &perf_param_table_v1,1787+ApiPerfRegister<ApiPerf> abs_api_perf(kAbs, kAbs, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1789- &tiling_schedule_config_table_v1);1788+ApiPerfRegister<ApiPerf> broadcast_api_perf(kBroadcast, kBroadcast, nullptr, &perf_param_table_v1,
1790-ApiPerfRegister<ApiPerf> broadcast_api_perf(kBroadcast, GetPerfFunc(kBroadcast), nullptr, &perf_param_table_v1,
1791 &tiling_schedule_config_table_v1);1789 &tiling_schedule_config_table_v1);
1792-ApiPerfRegister<ApiPerf> cast_api_perf(kCast, GetPerfFunc(kCast), nullptr, &perf_param_table_v1,1790+ApiPerfRegister<ApiPerf> cast_api_perf(kCast, kCast, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1793- &tiling_schedule_config_table_v1);1791+ApiPerfRegister<ApiPerf> div_api_perf(kDiv, kDiv, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1794-ApiPerfRegister<ApiPerf> div_api_perf(kDiv, GetPerfFunc(kDiv), nullptr, &perf_param_table_v1,1792+ApiPerfRegister<ApiPerf> erf_api_perf(kErf, kErf, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1795- &tiling_schedule_config_table_v1);1793+ApiPerfRegister<ApiPerf> exp_api_perf(kExp, kExp, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1796-ApiPerfRegister<ApiPerf> erf_api_perf(kErf, GetPerfFunc(kErf), nullptr, &perf_param_table_v1,1794+ApiPerfRegister<ApiPerf> logical_and_api_perf(kLogicalAnd, kLogicalAnd, nullptr, &perf_param_table_v1,
1797- &tiling_schedule_config_table_v1);
1798-ApiPerfRegister<ApiPerf> exp_api_perf(kExp, GetPerfFunc(kExp), nullptr, &perf_param_table_v1,
1799- &tiling_schedule_config_table_v1);
1800-ApiPerfRegister<ApiPerf> logical_and_api_perf(kLogicalAnd, GetPerfFunc(kLogicalAnd), nullptr, &perf_param_table_v1,
1801 &tiling_schedule_config_table_v1);1795 &tiling_schedule_config_table_v1);
1802-ApiPerfRegister<ApiPerf> logical_or_api_perf(kLogicalOr, GetPerfFunc(kLogicalOr), nullptr, &perf_param_table_v1,1796+ApiPerfRegister<ApiPerf> logical_or_api_perf(kLogicalOr, kLogicalOr, nullptr, &perf_param_table_v1,
1803 &tiling_schedule_config_table_v1);1797 &tiling_schedule_config_table_v1);
1804-ApiPerfRegister<ApiPerf> logical_not_api_perf(kLogicalNot, GetPerfFunc(kLogicalNot), nullptr, &perf_param_table_v1,1798+ApiPerfRegister<ApiPerf> logical_not_api_perf(kLogicalNot, kLogicalNot, nullptr, &perf_param_table_v1,
1805 &tiling_schedule_config_table_v1);1799 &tiling_schedule_config_table_v1);
1806-ApiPerfRegister<ApiPerf> maximum_api_perf(kMaximum, GetPerfFunc(kMaximum), nullptr, &perf_param_table_v1,1800+ApiPerfRegister<ApiPerf> maximum_api_perf(kMaximum, kMaximum, nullptr, &perf_param_table_v1,
1807 &tiling_schedule_config_table_v1);1801 &tiling_schedule_config_table_v1);
1808-ApiPerfRegister<ApiPerf> minimum_api_perf(kMinimum, GetPerfFunc(kMinimum), nullptr, &perf_param_table_v1,1802+ApiPerfRegister<ApiPerf> minimum_api_perf(kMinimum, kMinimum, nullptr, &perf_param_table_v1,
1809 &tiling_schedule_config_table_v1);1803 &tiling_schedule_config_table_v1);
1810-ApiPerfRegister<ApiPerf> min_api_perf(kMin, GetPerfFunc(kMin), nullptr, &perf_param_table_v1,1804+ApiPerfRegister<ApiPerf> min_api_perf(kMin, kMin, nullptr, &perf_param_table_v1,
1811 &tiling_schedule_config_table_v1_heavy_op);1805 &tiling_schedule_config_table_v1_heavy_op);
1812-ApiPerfRegister<ApiPerf> mul_api_perf(kMul, GetPerfFunc(kMul), nullptr, &perf_param_table_v1,1806+ApiPerfRegister<ApiPerf> mul_api_perf(kMul, kMul, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1813- &tiling_schedule_config_table_v1);1807+ApiPerfRegister<ApiPerf> neg_api_perf(kNeg, kNeg, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1814-ApiPerfRegister<ApiPerf> neg_api_perf(kNeg, GetPerfFunc(kNeg), nullptr, &perf_param_table_v1,1808+ApiPerfRegister<ApiPerf> reciprocal_api_perf(kReciprocal, kReciprocal, nullptr, &perf_param_table_v1,
1815- &tiling_schedule_config_table_v1);
1816-ApiPerfRegister<ApiPerf> reciprocal_api_perf(kReciprocal, GetPerfFunc(kReciprocal), nullptr, &perf_param_table_v1,
1817 &tiling_schedule_config_table_v1);1809 &tiling_schedule_config_table_v1);
1818-ApiPerfRegister<ApiPerf> relu_api_perf(kRelu, GetPerfFunc(kRelu), nullptr, &perf_param_table_v1,1810+ApiPerfRegister<ApiPerf> relu_api_perf(kRelu, kRelu, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1819- &tiling_schedule_config_table_v1);1811+ApiPerfRegister<ApiPerf> remove_pad_api_perf(kRemovePad, kRemovePad, nullptr, &perf_param_table_v1,
1820-ApiPerfRegister<ApiPerf> remove_pad_api_perf(kRemovePad, GetPerfFunc(kRemovePad), nullptr, &perf_param_table_v1,
1821 &tiling_schedule_config_table_v1);1812 &tiling_schedule_config_table_v1);
1822-ApiPerfRegister<ApiPerf> rsqrt_api_perf(kRsqrt, GetPerfFunc(kRsqrt), nullptr, &perf_param_table_v1,1813+ApiPerfRegister<ApiPerf> rsqrt_api_perf(kRsqrt, kRsqrt, nullptr, &perf_param_table_v1,
1823 &tiling_schedule_config_table_v1);1814 &tiling_schedule_config_table_v1);
1824-ApiPerfRegister<ApiPerf> sign_api_perf(kSign, GetPerfFunc(kSign), nullptr, &perf_param_table_v1,1815+ApiPerfRegister<ApiPerf> sign_api_perf(kSign, kSign, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1825- &tiling_schedule_config_table_v1);1816+ApiPerfRegister<ApiPerf> sqrt_api_perf(kSqrt, kSqrt, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1826-ApiPerfRegister<ApiPerf> sqrt_api_perf(kSqrt, GetPerfFunc(kSqrt), nullptr, &perf_param_table_v1,1817+ApiPerfRegister<ApiPerf> sub_api_perf(kSub, kSub, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1827- &tiling_schedule_config_table_v1);1818+ApiPerfRegister<ApiPerf> tanh_api_perf(kTanh, kTanh, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1828-ApiPerfRegister<ApiPerf> sub_api_perf(kSub, GetPerfFunc(kSub), nullptr, &perf_param_table_v1,1819+ApiPerfRegister<ApiPerf> where_api_perf(kWhere, kWhere, nullptr, &perf_param_table_v1,
1829- &tiling_schedule_config_table_v1);
1830-ApiPerfRegister<ApiPerf> tanh_api_perf(kTanh, GetPerfFunc(kTanh), nullptr, &perf_param_table_v1,
1831- &tiling_schedule_config_table_v1);
1832-ApiPerfRegister<ApiPerf> where_api_perf(kWhere, GetPerfFunc(kWhere), nullptr, &perf_param_table_v1,
1833 &tiling_schedule_config_table_v1);1820 &tiling_schedule_config_table_v1);
1834-ApiPerfRegister<ApiPerf> select_api_perf(kSelect, GetPerfFunc(kWhere), nullptr, &perf_param_table_v1,1821+ApiPerfRegister<ApiPerf> select_api_perf(kSelect, kWhere, nullptr, &perf_param_table_v1,
1835 &tiling_schedule_config_table_v1);1822 &tiling_schedule_config_table_v1);
1836-ApiPerfRegister<ApiPerf> ge_api_perf(kGe, GetPerfFunc(kGe), nullptr, &perf_param_table_v1,1823+ApiPerfRegister<ApiPerf> ge_api_perf(kGe, kGe, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1837- &tiling_schedule_config_table_v1);1824+ApiPerfRegister<ApiPerf> eq_api_perf(kEq, kEq, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1838-ApiPerfRegister<ApiPerf> eq_api_perf(kEq, GetPerfFunc(kEq), nullptr, &perf_param_table_v1,1825+ApiPerfRegister<ApiPerf> ne_api_perf(kNe, kNe, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1839- &tiling_schedule_config_table_v1);1826+ApiPerfRegister<ApiPerf> gt_api_perf(kGt, kGt, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1840-ApiPerfRegister<ApiPerf> ne_api_perf(kNe, GetPerfFunc(kNe), nullptr, &perf_param_table_v1,1827+ApiPerfRegister<ApiPerf> le_api_perf(kLe, kLe, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1841- &tiling_schedule_config_table_v1);1828+ApiPerfRegister<ApiPerf> lt_api_perf(kLt, kLt, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1842-ApiPerfRegister<ApiPerf> gt_api_perf(kGt, GetPerfFunc(kGt), nullptr, &perf_param_table_v1,1829+ApiPerfRegister<ApiPerf> ub2ub_api_perf(kUb2ub, kUb2ub, nullptr, &perf_param_table_v1,
1843- &tiling_schedule_config_table_v1);
1844-ApiPerfRegister<ApiPerf> le_api_perf(kLe, GetPerfFunc(kLe), nullptr, &perf_param_table_v1,
1845- &tiling_schedule_config_table_v1);
1846-ApiPerfRegister<ApiPerf> lt_api_perf(kLt, GetPerfFunc(kLt), nullptr, &perf_param_table_v1,
1847- &tiling_schedule_config_table_v1);
1848-ApiPerfRegister<ApiPerf> ub2ub_api_perf(kUb2ub, GetPerfFunc(kUb2ub), nullptr, &perf_param_table_v1,
1849 &tiling_schedule_config_table_v1);1830 &tiling_schedule_config_table_v1);
1850-ApiPerfRegister<ApiPerf> load_api_perf(kLoad, GetPerfFunc(kLoad), nullptr, &perf_param_table_v1,1831+ApiPerfRegister<ApiPerf> load_api_perf(kLoad, kLoad, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1851- &tiling_schedule_config_table_v1);1832+ApiPerfRegister<ApiPerf> store_api_perf(kStore, kStore, nullptr, &perf_param_table_v1,
1852-ApiPerfRegister<ApiPerf> store_api_perf(kStore, GetPerfFunc(kStore), nullptr, &perf_param_table_v1,
1853 &tiling_schedule_config_table_v1);1833 &tiling_schedule_config_table_v1);
1854 1834 
1855-ApiPerfRegister<ApiPerf> reduce_all_api_perf(kAll, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1835+ApiPerfRegister<ApiPerf> reduce_all_api_perf(kAll, kUnitVector, nullptr, &perf_param_table_v1,
1856 &tiling_schedule_config_table_v1_heavy_op);1836 &tiling_schedule_config_table_v1_heavy_op);
1857-ApiPerfRegister<ApiPerf> reduce_any_api_perf(kAny, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1837+ApiPerfRegister<ApiPerf> reduce_any_api_perf(kAny, kUnitVector, nullptr, &perf_param_table_v1,
1858 &tiling_schedule_config_table_v1_heavy_op);1838 &tiling_schedule_config_table_v1_heavy_op);
1859-ApiPerfRegister<ApiPerf> reduce_max_api_perf(kMax, GetPerfFunc(kMax), nullptr, &perf_param_table_v1,1839+ApiPerfRegister<ApiPerf> reduce_max_api_perf(kMax, kMax, nullptr, &perf_param_table_v1,
1860 &tiling_schedule_config_table_v1_heavy_op);1840 &tiling_schedule_config_table_v1_heavy_op);
1861-ApiPerfRegister<ApiPerf> reduce_mean_api_perf(kMean, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1841+ApiPerfRegister<ApiPerf> reduce_mean_api_perf(kMean, kUnitVector, nullptr, &perf_param_table_v1,
1862 &tiling_schedule_config_table_v1);1842 &tiling_schedule_config_table_v1);
1863-ApiPerfRegister<ApiPerf> reduce_min_api_perf(kMin, GetPerfFunc(kMin), nullptr, &perf_param_table_v1,1843+ApiPerfRegister<ApiPerf> reduce_min_api_perf(kMin, kMin, nullptr, &perf_param_table_v1,
1864 &tiling_schedule_config_table_v1_heavy_op);1844 &tiling_schedule_config_table_v1_heavy_op);
1865-ApiPerfRegister<ApiPerf> reduce_prod_api_perf(kProd, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1845+ApiPerfRegister<ApiPerf> reduce_prod_api_perf(kProd, kUnitVector, nullptr, &perf_param_table_v1,
1866 &tiling_schedule_config_table_v1_heavy_op);1846 &tiling_schedule_config_table_v1_heavy_op);
1867-ApiPerfRegister<ApiPerf> reduce_sum_api_perf(kSum, GetPerfFunc(kSum), nullptr, &perf_param_table_v1,1847+ApiPerfRegister<ApiPerf> reduce_sum_api_perf(kSum, kSum, nullptr, &perf_param_table_v1,
1868 &tiling_schedule_config_table_v1_heavy_op);1848 &tiling_schedule_config_table_v1_heavy_op);
1869// 不需要建模的ASCIR1849// 不需要建模的ASCIR
1870ApiPerfRegister<ApiPerf> data_api_perf(kData, DefaultGetPerf, nullptr, &perf_param_table_v1,1850ApiPerfRegister<ApiPerf> data_api_perf(kData, DefaultGetPerf, nullptr, &perf_param_table_v1,
@@ -1878,45 +1858,44 @@ ApiPerfRegister<ApiPerf> output_api_perf(kOutput, DefaultGetPerf, nullptr, &perf
1878ApiPerfRegister<ApiPerf> workspace_api_perf(kWorkspace, DefaultGetPerf, nullptr, &perf_param_table_v1,1858ApiPerfRegister<ApiPerf> workspace_api_perf(kWorkspace, DefaultGetPerf, nullptr, &perf_param_table_v1,
1879 &tiling_schedule_config_table_v1);1859 &tiling_schedule_config_table_v1);
1880// 目前无建模的ASCIR1860// 目前无建模的ASCIR
1881-ApiPerfRegister<ApiPerf> pad_api_perf(kPad, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1861+ApiPerfRegister<ApiPerf> pad_api_perf(kPad, kUnitVector, nullptr, &perf_param_table_v1,
1882 &tiling_schedule_config_table_v1);1862 &tiling_schedule_config_table_v1);
1883-ApiPerfRegister<ApiPerf> nop_api_perf(kNop, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1863+ApiPerfRegister<ApiPerf> nop_api_perf(kNop, kUnitVector, nullptr, &perf_param_table_v1,
1884 &tiling_schedule_config_table_v1);1864 &tiling_schedule_config_table_v1);
1885-ApiPerfRegister<ApiPerf> ln_api_perf(kLn, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1865+ApiPerfRegister<ApiPerf> ln_api_perf(kLn, kUnitVector, nullptr, &perf_param_table_v1, &tiling_schedule_config_table_v1);
1886- &tiling_schedule_config_table_v1);1866+ApiPerfRegister<ApiPerf> isnan_api_perf(kIsnan, kUnitVector, nullptr, &perf_param_table_v1,
1887-ApiPerfRegister<ApiPerf> isnan_api_perf(kIsnan, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,
1888 &tiling_schedule_config_table_v1);1867 &tiling_schedule_config_table_v1);
1889-ApiPerfRegister<ApiPerf> isfinite_api_perf(kIsFinite, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1868+ApiPerfRegister<ApiPerf> isfinite_api_perf(kIsFinite, kUnitVector, nullptr, &perf_param_table_v1,
1890 &tiling_schedule_config_table_v1);1869 &tiling_schedule_config_table_v1);
1891-ApiPerfRegister<ApiPerf> max_api_perf(kMax, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1870+ApiPerfRegister<ApiPerf> max_api_perf(kMax, kUnitVector, nullptr, &perf_param_table_v1,
1892 &tiling_schedule_config_table_v1);1871 &tiling_schedule_config_table_v1);
1893-ApiPerfRegister<ApiPerf> mean_api_perf(kMean, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1872+ApiPerfRegister<ApiPerf> mean_api_perf(kMean, kUnitVector, nullptr, &perf_param_table_v1,
1894 &tiling_schedule_config_table_v1_heavy_op);1873 &tiling_schedule_config_table_v1_heavy_op);
1895-ApiPerfRegister<ApiPerf> prod_api_perf(kProd, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1874+ApiPerfRegister<ApiPerf> prod_api_perf(kProd, kUnitVector, nullptr, &perf_param_table_v1,
1896 &tiling_schedule_config_table_v1);1875 &tiling_schedule_config_table_v1);
1897-ApiPerfRegister<ApiPerf> any_api_perf(kAny, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1876+ApiPerfRegister<ApiPerf> any_api_perf(kAny, kUnitVector, nullptr, &perf_param_table_v1,
1898 &tiling_schedule_config_table_v1_heavy_op);1877 &tiling_schedule_config_table_v1_heavy_op);
1899-ApiPerfRegister<ApiPerf> all_api_perf(kAll, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1878+ApiPerfRegister<ApiPerf> all_api_perf(kAll, kUnitVector, nullptr, &perf_param_table_v1,
1900 &tiling_schedule_config_table_v1);1879 &tiling_schedule_config_table_v1);
1901-ApiPerfRegister<ApiPerf> sigmoid_api_perf(kSigmoid, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1880+ApiPerfRegister<ApiPerf> sigmoid_api_perf(kSigmoid, kUnitVector, nullptr, &perf_param_table_v1,
1902 &tiling_schedule_config_table_v1);1881 &tiling_schedule_config_table_v1);
1903-ApiPerfRegister<ApiPerf> true_div_api_perf(kTrueDiv, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1882+ApiPerfRegister<ApiPerf> true_div_api_perf(kTrueDiv, kUnitVector, nullptr, &perf_param_table_v1,
1904 &tiling_schedule_config_table_v1);1883 &tiling_schedule_config_table_v1);
1905-ApiPerfRegister<ApiPerf> pow_api_perf(kPow, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1884+ApiPerfRegister<ApiPerf> pow_api_perf(kPow, kUnitVector, nullptr, &perf_param_table_v1,
1906 &tiling_schedule_config_table_v1_heavy_op);1885 &tiling_schedule_config_table_v1_heavy_op);
1907-ApiPerfRegister<ApiPerf> clip_by_value_api_perf(kClipByValue, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1886+ApiPerfRegister<ApiPerf> clip_by_value_api_perf(kClipByValue, kUnitVector, nullptr, &perf_param_table_v1,
1908 &tiling_schedule_config_table_v1);1887 &tiling_schedule_config_table_v1);
1909-ApiPerfRegister<ApiPerf> concat_api_perf(kConcat, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1888+ApiPerfRegister<ApiPerf> concat_api_perf(kConcat, kUnitVector, nullptr, &perf_param_table_v1,
1910 &tiling_schedule_config_table_v1);1889 &tiling_schedule_config_table_v1);
1911-ApiPerfRegister<ApiPerf> leaky_relu_api_perf(kLeakyRelu, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1890+ApiPerfRegister<ApiPerf> leaky_relu_api_perf(kLeakyRelu, kUnitVector, nullptr, &perf_param_table_v1,
1912 &tiling_schedule_config_table_v1);1891 &tiling_schedule_config_table_v1);
1913-ApiPerfRegister<ApiPerf> bitwise_and_api_perf(kBitwiseAnd, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1892+ApiPerfRegister<ApiPerf> bitwise_and_api_perf(kBitwiseAnd, kUnitVector, nullptr, &perf_param_table_v1,
1914 &tiling_schedule_config_table_v1);1893 &tiling_schedule_config_table_v1);
1915-ApiPerfRegister<ApiPerf> transpose_api_perf(kTranspose, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1894+ApiPerfRegister<ApiPerf> transpose_api_perf(kTranspose, kUnitVector, nullptr, &perf_param_table_v1,
1916 &tiling_schedule_config_table_v1);1895 &tiling_schedule_config_table_v1);
1917-ApiPerfRegister<ApiPerf> floor_div_api_perf(kFloorDiv, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1896+ApiPerfRegister<ApiPerf> floor_div_api_perf(kFloorDiv, kUnitVector, nullptr, &perf_param_table_v1,
1918 &tiling_schedule_config_table_v1);1897 &tiling_schedule_config_table_v1);
1919-ApiPerfRegister<ApiPerf> gelu_api_perf(kGelu, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v1,1898+ApiPerfRegister<ApiPerf> gelu_api_perf(kGelu, kUnitVector, nullptr, &perf_param_table_v1,
1920 &tiling_schedule_config_table_v1);1899 &tiling_schedule_config_table_v1);
1921} // namespace1900} // namespace
1922} // namespace att1901} // namespace att
@@ -19,7 +19,6 @@
19#include "expr_gen/generate_tiling_expr.h"19#include "expr_gen/generate_tiling_expr.h"
20#include "tiling_data_gen/tiling_data_generator.h"20#include "tiling_data_gen/tiling_data_generator.h"
21#include "parser/ascend_graph_parser.h"21#include "parser/ascend_graph_parser.h"
22-#include "pass/pass_mgr.h"
23#include "nlohmann/json.hpp"22#include "nlohmann/json.hpp"
24#include "util/base_types_printer.h"23#include "util/base_types_printer.h"
25#include "util/duration.h"24#include "util/duration.h"
@@ -188,22 +187,6 @@ static af::Status GenerateSingleModelInfoWithContext(const af::AscGraph &graph,
188 att::GenerateTilingExpr tiling_expr(tuning_space);187 att::GenerateTilingExpr tiling_expr(tuning_space);
189 GE_ASSERT_SUCCESS(tiling_expr.Generate(model_info), "Get basic expr constraint failed.");188 GE_ASSERT_SUCCESS(tiling_expr.Generate(model_info), "Get basic expr constraint failed.");
190 GE_ASSERT_SUCCESS(RefreshCommonUbExprContext(graph, model_info), "Refresh common UB expr failed.");189 GE_ASSERT_SUCCESS(RefreshCommonUbExprContext(graph, model_info), "Refresh common UB expr failed.");
191- // step3: call passes to get configs
192- ATTConfig att_config;
193- std::vector<PassFunc> pass_funcs;
194- ATTPassMgr::Instance().GetPassList(pass_funcs);
195- for (auto &pass_func : pass_funcs) {
196- GE_ASSERT_NOTNULL(pass_func, "Get pass func failed.");
197- std::map<std::string, std::string> config_str;
198- GE_ASSERT_TRUE(pass_func(tuning_space, config_str), "Run pass failed.");
199- for (auto &config : config_str) {
200- GELOGD("Exe pass: config[%s], value[%s].", config.first.c_str(), config.second.c_str());
201- }
202- for (auto &config : config_str) {
203- att_config.config_names.emplace_back(config.first);
204- att_config.config_value.insert(config);
205- }
206- }
207 GELOGI("[DFX]End to generate model info for graph %s of tiling case id %u", graph.GetName().c_str(), tiling_case_id);190 GELOGI("[DFX]End to generate model info for graph %s of tiling case id %u", graph.GetName().c_str(), tiling_case_id);
208 return af::SUCCESS;191 return af::SUCCESS;
209}192}
@@ -1,61 +0,0 @@
1-/**
2- * Copyright (c) 2025 Huawei Technologies Co., Ltd.
3- * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4- * CANN Open Software License Agreement Version 2.0 (the "License").
5- * Please refer to the License for details. You may not use this file except in compliance with the License.
6- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7- * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8- * See LICENSE in the root of the software repository for the full text of the License.
9- */
10- 
11-#include "pass/pass_mgr.h"
12-#include "nlohmann/json.hpp"
13- 
14-namespace att {
15-const std::string kLoadToL1 = "loadTcsm";
16-const uint32_t kNd2NzAlign = 128U;
17- 
18-struct MatmulConfigItem {
19- std::map<std::string, uint32_t> align_true;
20- std::map<std::string, uint32_t> align_false;
21-};
22- 
23-using MatmulConfig = std::map<std::string, MatmulConfigItem>;
24- 
25-void ToJson(nlohmann::json &j, const MatmulConfigItem &p) {
26- j = nlohmann::json{{"0", p.align_false}, {"1", p.align_true}};
27-}
28- 
29-bool GetMatmulAlignConfig(const TuningSpacePtr &tuning_space, std::map<std::string, std::string> &matmul_config) {
30- for (const auto &node : tuning_space->node_infos) {
31- if ((node.node_type != kLoadToL1) && node.trans_config.empty()) {
32- continue;
33- }
34- GE_ASSERT_TRUE(!node.outputs.empty(), "Node [%s] is LoadL1 but has no output.", node.name.c_str());
35- MatmulConfigItem config;
36- const auto &dims = node.outputs[0]->dim_info;
37- if (dims.empty()) {
38- GELOGW("Node [%s] has no dims.", node.name.c_str());
39- nlohmann::json j;
40- ToJson(j, config);
41- matmul_config.emplace(node.trans_config, j.dump());
42- continue;
43- }
44- size_t dim_size = node.outputs[0]->dim_info.size();
45- if (dim_size > 0U) {
46- config.align_false.emplace(node.outputs[0]->dim_info[dim_size - 1U]->name, kNd2NzAlign);
47- }
48- if (dim_size > 1U) {
49- config.align_true.emplace(node.outputs[0]->dim_info[dim_size - 2U]->name, kNd2NzAlign);
50- }
51- nlohmann::json j;
52- ToJson(j, config);
53- matmul_config.emplace(node.trans_config, nlohmann::to_string(j));
54- }
55- 
56- return true;
57-}
58- 
59-static std::string kmatmul_align_pass = "matmul_align_pass";
60-REGISTER_GTC_PASS(kmatmul_align_pass, GetMatmulAlignConfig);
61-} // namespace att
@@ -1,69 +0,0 @@
1-/**
2- * Copyright (c) 2025 Huawei Technologies Co., Ltd.
3- * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4- * CANN Open Software License Agreement Version 2.0 (the "License").
5- * Please refer to the License for details. You may not use this file except in compliance with the License.
6- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7- * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8- * See LICENSE in the root of the software repository for the full text of the License.
9- */
10- 
11-#ifndef PASS_PASS_MGR_H_
12-#define PASS_PASS_MGR_H_
13- 
14-#include <unordered_map>
15-#include <string>
16-#include <vector>
17-#include <functional>
18-#include "parser/tuning_space.h"
19- 
20-namespace att {
21-using PassFunc = std::function<bool(const TuningSpacePtr &, std::map<std::string, std::string> &)>;
22- 
23-class ATTPassMgr {
24- public:
25- static ATTPassMgr &Instance() {
26- static ATTPassMgr pass_mgr;
27- return pass_mgr;
28- }
29- 
30- void RegistePass(const std::string &pass_name, const PassFunc &func) {
31- pass_name_list_.emplace_back(pass_name);
32- pass_func_map_[pass_name] = func;
33- GELOGI("Register pass name[%s].", pass_name.c_str());
34- }
35- 
36- PassFunc GetPass(const std::string &pass_name) {
37- if (pass_func_map_.find(pass_name) == pass_func_map_.end()) {
38- return nullptr;
39- }
40- return pass_func_map_[pass_name];
41- }
42- 
43- void GetPassList(std::vector<PassFunc> &res) {
44- for (const auto &pass_name : pass_name_list_) {
45- res.emplace_back(pass_func_map_[pass_name]);
46- }
47- }
48- 
49- private:
50- ATTPassMgr() = default;
51- ~ATTPassMgr() = default;
52- 
53- private:
54- std::vector<std::string> pass_name_list_;
55- std::unordered_map<std::string, PassFunc> pass_func_map_;
56-};
57- 
58-class PassRegister {
59- public:
60- PassRegister(const std::string &pass_name, const PassFunc &func) {
61- ATTPassMgr::Instance().RegistePass(pass_name, func);
62- }
63- ~PassRegister() = default;
64-};
65- 
66-#define REGISTER_GTC_PASS(pass_name, func_name) static PassRegister g_Reg##pass_name(pass_name, func_name)
67-} // namespace att
68- 
69-#endif // PASS_PASS_MGR_H_
@@ -1,55 +0,0 @@
1-/**
2- * Copyright (c) 2026 Huawei Technologies Co., Ltd.
3- * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4- * CANN Open Software License Agreement Version 2.0 (the "License").
5- * Please refer to the License for details. You may not use this file except in compliance with the License.
6- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7- * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8- * See LICENSE in the root of the software repository for the full text of the License.
9- */
10-#include <iostream>
11-#include "gtest/gtest.h"
12-#include "pass/pass_mgr.h"
13-#include "parser/tuning_space.h"
14-#include "gen_model_info/pass/matmul_align_pass.cpp"
15- 
16-namespace att {
17-class TestAttConfig : public ::testing::Test {
18- public:
19- static void TearDownTestCase() {
20- std::cout << "Test end." << std::endl;
21- }
22- static void SetUpTestCase() {
23- std::cout << "Test begin." << std::endl;
24- }
25- void SetUp() override {}
26- void TearDown() override {}
27-};
28- 
29-TEST_F(TestAttConfig, output_empty) {
30- TuningSpacePtr tuning_space = std::make_shared<TuningSpace>();
31- EXPECT_NE(tuning_space, nullptr);
32- NodeInfo node_info;
33- node_info.node_type = "loadTcsm";
34- node_info.trans_config = "test";
35- tuning_space->node_infos.emplace_back(node_info);
36- std::map<std::string, std::string> matmul_config;
37- auto ret = ATTPassMgr::Instance().GetPass(kmatmul_align_pass)(tuning_space, matmul_config);
38- EXPECT_EQ(ret, false);
39-}
40- 
41-TEST_F(TestAttConfig, dim_empty) {
42- TuningSpacePtr tuning_space = std::make_shared<TuningSpace>();
43- EXPECT_NE(tuning_space, nullptr);
44- NodeInfo node_info;
45- node_info.node_type = "loadTcsm";
46- node_info.trans_config = "test";
47- TensorPtr output_tensor = std::make_shared<Tensor>();
48- EXPECT_NE(output_tensor, nullptr);
49- node_info.outputs.emplace_back(output_tensor);
50- tuning_space->node_infos.emplace_back(node_info);
51- std::map<std::string, std::string> matmul_config;
52- auto ret = ATTPassMgr::Instance().GetPass(kmatmul_align_pass)(tuning_space, matmul_config);
53- EXPECT_EQ(ret, true);
54-}
55-} // namespace att
@@ -1,105 +0,0 @@
1-/**
2- * Copyright (c) 2025 Huawei Technologies Co., Ltd.
3- * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4- * CANN Open Software License Agreement Version 2.0 (the "License").
5- * Please refer to the License for details. You may not use this file except in compliance with the License.
6- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7- * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8- * See LICENSE in the root of the software repository for the full text of the License.
9- */
10-#include <iostream>
11-#include "gtest/gtest.h"
12-#include "pass/pass_mgr.h"
13-#include "parser/tuning_space.h"
14-#include "gen_model_info/pass/matmul_align_pass.cpp"
15- 
16-namespace att {
17-class TestMatmulAlignPass : public ::testing::Test {
18- public:
19- static void TearDownTestCase() {
20- std::cout << "Test end." << std::endl;
21- }
22- static void SetUpTestCase() {
23- std::cout << "Test begin." << std::endl;
24- }
25- void SetUp() override {}
26- void TearDown() override {}
27-};
28-bool TestPass(const TuningSpacePtr &tuning_space, std::map<std::string, std::string> &matmul_config) {
29- return true;
30-}
31-static std::string test_pass = "test_pass";
32-REGISTER_GTC_PASS(test_pass, TestPass);
33- 
34-TEST_F(TestMatmulAlignPass, register_pass) {
35- TuningSpacePtr tuning_space = std::make_shared<TuningSpace>();
36- EXPECT_NE(tuning_space, nullptr);
37- std::map<std::string, std::string> matmul_config;
38- auto ret = ATTPassMgr::Instance().GetPass(test_pass)(tuning_space, matmul_config);
39- std::vector<PassFunc> res;
40- ATTPassMgr::Instance().GetPassList(res);
41- EXPECT_NE(res.size(), 0);
42-}
43- 
44-TEST_F(TestMatmulAlignPass, output_empty) {
45- TuningSpacePtr tuning_space = std::make_shared<TuningSpace>();
46- EXPECT_NE(tuning_space, nullptr);
47- NodeInfo node_info;
48- node_info.trans_config = "test";
49- node_info.node_type = "loadTcsm";
50- tuning_space->node_infos.emplace_back(node_info);
51- std::map<std::string, std::string> matmul_config;
52- auto ret = ATTPassMgr::Instance().GetPass(kmatmul_align_pass)(tuning_space, matmul_config);
53- EXPECT_EQ(ret, false);
54-}
55- 
56-TEST_F(TestMatmulAlignPass, no_loadTcsm_node) {
57- TuningSpacePtr tuning_space = std::make_shared<TuningSpace>();
58- EXPECT_NE(tuning_space, nullptr);
59- NodeInfo node_info;
60- node_info.node_type = "test";
61- node_info.trans_config = "test";
62- tuning_space->node_infos.emplace_back(node_info);
63- std::map<std::string, std::string> matmul_config;
64- auto ret = ATTPassMgr::Instance().GetPass(kmatmul_align_pass)(tuning_space, matmul_config);
65- EXPECT_EQ(ret, false);
66-}
67- 
68-TEST_F(TestMatmulAlignPass, dim_empty) {
69- TuningSpacePtr tuning_space = std::make_shared<TuningSpace>();
70- EXPECT_NE(tuning_space, nullptr);
71- NodeInfo node_info;
72- node_info.node_type = "loadTcsm";
73- node_info.trans_config = "test";
74- TensorPtr output_tensor = std::make_shared<Tensor>();
75- EXPECT_NE(output_tensor, nullptr);
76- node_info.outputs.emplace_back(output_tensor);
77- tuning_space->node_infos.emplace_back(node_info);
78- std::map<std::string, std::string> matmul_config;
79- auto ret = ATTPassMgr::Instance().GetPass(kmatmul_align_pass)(tuning_space, matmul_config);
80- EXPECT_EQ(ret, true);
81-}
82- 
83-TEST_F(TestMatmulAlignPass, success) {
84- TuningSpacePtr tuning_space = std::make_shared<TuningSpace>();
85- EXPECT_NE(tuning_space, nullptr);
86- NodeInfo node_info;
87- node_info.trans_config = "test";
88- node_info.node_type = "loadTcsm";
89- TensorPtr output_tensor = std::make_shared<Tensor>();
90- EXPECT_NE(output_tensor, nullptr);
91- SubAxisPtr axis1 = std::make_unique<SubAxis>();
92- EXPECT_NE(axis1, nullptr);
93- axis1->name = "axis1";
94- SubAxisPtr axis2 = std::make_unique<SubAxis>();
95- EXPECT_NE(axis2, nullptr);
96- axis2->name = "axis2";
97- output_tensor->dim_info.emplace_back(axis1.get());
98- output_tensor->dim_info.emplace_back(axis2.get());
99- node_info.outputs.emplace_back(output_tensor);
100- tuning_space->node_infos.emplace_back(node_info);
101- std::map<std::string, std::string> matmul_config;
102- auto ret = ATTPassMgr::Instance().GetPass(kmatmul_align_pass)(tuning_space, matmul_config);
103- EXPECT_EQ(ret, true);
104-}
105-} // namespace att
@@ -86,6 +86,13 @@ ApiPerfRegister<ApiPerf> ApiPerfRegisterV2(const std::string &api_name, Perf per
86 return ApiPerfRegister<ApiPerf>(api_name + "V2", perf_func, micro_perf_func, perf_param,86 return ApiPerfRegister<ApiPerf>(api_name + "V2", perf_func, micro_perf_func, perf_param,
87 tiling_schedule_config_table);87 tiling_schedule_config_table);
88}88}
89+ 
90+ApiPerfRegister<ApiPerf> ApiPerfRegisterV2(const std::string &api_name, const std::string &perf_func_name,
91+ MicroPerfFunc micro_perf_func, const PerfParamTable *perf_param,
92+ const TilingScheduleConfigTable *tiling_schedule_config_table) {
93+ return ApiPerfRegister<ApiPerf>(api_name + "V2", perf_func_name, micro_perf_func, perf_param,
94+ tiling_schedule_config_table);
95+}
89namespace ascir_v2 {96namespace ascir_v2 {
90/*97/*
91LoadApi(DataCopy from GM to UB)的性能公式:(其中a-b-c-d-e为待拟合参数)98LoadApi(DataCopy from GM to UB)的性能公式:(其中a-b-c-d-e为待拟合参数)
@@ -568,171 +575,168 @@ REGISTER_EVAL_FUNC_TAG(kLogicalAnd, V2, ascir_v2::LogicalAndApi);
568REGISTER_EVAL_FUNC_TAG(kClipByValue, V2, ascir_v2::ClipByValueApi);575REGISTER_EVAL_FUNC_TAG(kClipByValue, V2, ascir_v2::ClipByValueApi);
569REGISTER_EVAL_FUNC_TAG(kBitwiseAnd, V2, ascir_v2::BitwiseAndApi);576REGISTER_EVAL_FUNC_TAG(kBitwiseAnd, V2, ascir_v2::BitwiseAndApi);
570REGISTER_EVAL_FUNC_TAG(kFloorDiv, V2, ascir_v2::FloorDivApi);577REGISTER_EVAL_FUNC_TAG(kFloorDiv, V2, ascir_v2::FloorDivApi);
571-ApiPerfRegister<ApiPerf> add_api_perf_v2(ApiPerfRegisterV2(kAdd, GetPerfFunc(kAdd + "V2"), nullptr,578+ApiPerfRegister<ApiPerf> add_api_perf_v2(ApiPerfRegisterV2(kAdd, kAdd + "V2", nullptr, &perf_param_table_v2,
572- &perf_param_table_v2, &tiling_schedule_config_table_v2));579+ &tiling_schedule_config_table_v2));
573-ApiPerfRegister<ApiPerf> gather_api_perf_v2(ApiPerfRegisterV2(kGather, GetPerfFunc(kGather), nullptr,580+ApiPerfRegister<ApiPerf> gather_api_perf_v2(ApiPerfRegisterV2(kGather, kGather, nullptr, &perf_param_table_v2,
574- &perf_param_table_v2, &tiling_schedule_config_table_v2));581+ &tiling_schedule_config_table_v2));
575-ApiPerfRegister<ApiPerf> indirect_load_api_perf_v2(ApiPerfRegisterV2(kIndirectLoad, GetPerfFunc(kUnitVector), nullptr,582+ApiPerfRegister<ApiPerf> indirect_load_api_perf_v2(ApiPerfRegisterV2(kIndirectLoad, kUnitVector, nullptr,
576 &perf_param_table_v2,583 &perf_param_table_v2,
577 &tiling_schedule_config_table_v2));584 &tiling_schedule_config_table_v2));
578-ApiPerfRegister<ApiPerf> abs_api_perf_v2(ApiPerfRegisterV2(kAbs, GetPerfFunc(kAbs + "V2"), nullptr,585+ApiPerfRegister<ApiPerf> abs_api_perf_v2(ApiPerfRegisterV2(kAbs, kAbs + "V2", nullptr, &perf_param_table_v2,
579- &perf_param_table_v2, &tiling_schedule_config_table_v2));586+ &tiling_schedule_config_table_v2));
580-ApiPerfRegister<ApiPerf> broadcast_api_perf_v2(ApiPerfRegisterV2(kBroadcast, GetPerfFunc(kBroadcast), nullptr,587+ApiPerfRegister<ApiPerf> broadcast_api_perf_v2(ApiPerfRegisterV2(kBroadcast, kBroadcast, nullptr, &perf_param_table_v2,
581- &perf_param_table_v2,
582 &tiling_schedule_config_table_v2));588 &tiling_schedule_config_table_v2));
583-ApiPerfRegister<ApiPerf> cast_api_perf_v2(ApiPerfRegisterV2(kCast, GetPerfFunc(kCast + "V2"), nullptr,589+ApiPerfRegister<ApiPerf> cast_api_perf_v2(ApiPerfRegisterV2(kCast, kCast + "V2", nullptr, &perf_param_table_v2,
584- &perf_param_table_v2, &tiling_schedule_config_table_v2));590+ &tiling_schedule_config_table_v2));
585-ApiPerfRegister<ApiPerf> div_api_perf_v2(ApiPerfRegisterV2(kDiv, GetPerfFunc(kDiv + "V2"), nullptr,591+ApiPerfRegister<ApiPerf> div_api_perf_v2(ApiPerfRegisterV2(kDiv, kDiv + "V2", nullptr, &perf_param_table_v2,
586- &perf_param_table_v2, &tiling_schedule_config_table_v2));592+ &tiling_schedule_config_table_v2));
587-ApiPerfRegister<ApiPerf> erf_api_perf_v2(ApiPerfRegisterV2(kErf, GetPerfFunc(kErf + "V2"), nullptr,593+ApiPerfRegister<ApiPerf> erf_api_perf_v2(ApiPerfRegisterV2(kErf, kErf + "V2", nullptr, &perf_param_table_v2,
588- &perf_param_table_v2, &tiling_schedule_config_table_v2));594+ &tiling_schedule_config_table_v2));
589-ApiPerfRegister<ApiPerf> exp_api_perf_v2(ApiPerfRegisterV2(kExp, GetPerfFunc(kExp + "V2"), nullptr,595+ApiPerfRegister<ApiPerf> exp_api_perf_v2(ApiPerfRegisterV2(kExp, kExp + "V2", nullptr, &perf_param_table_v2,
590- &perf_param_table_v2, &tiling_schedule_config_table_v2));596+ &tiling_schedule_config_table_v2));
591-ApiPerfRegister<ApiPerf> exp2_api_perf_v2(ApiPerfRegisterV2(kExp2, GetPerfFunc(kExp2 + "V2"), nullptr,597+ApiPerfRegister<ApiPerf> exp2_api_perf_v2(ApiPerfRegisterV2(kExp2, kExp2 + "V2", nullptr, &perf_param_table_v2,
592- &perf_param_table_v2, &tiling_schedule_config_table_v2));598+ &tiling_schedule_config_table_v2));
593-ApiPerfRegister<ApiPerf> floor_api_perf_v2(ApiPerfRegisterV2(kFloor, GetPerfFunc(kFloor + "V2"), nullptr,599+ApiPerfRegister<ApiPerf> floor_api_perf_v2(ApiPerfRegisterV2(kFloor, kFloor + "V2", nullptr, &perf_param_table_v2,
594- &perf_param_table_v2, &tiling_schedule_config_table_v2));
595-ApiPerfRegister<ApiPerf> fma_api_perf_v2(ApiPerfRegisterV2(kFma, GetPerfFunc(kFma + "V2"), nullptr,
596- &perf_param_table_v2, &tiling_schedule_config_table_v2));
597-ApiPerfRegister<ApiPerf> bitwise_not_api_perf_v2(ApiPerfRegisterV2(kBitwiseNot, GetPerfFunc(kUnitVector), nullptr,
598- &perf_param_table_v2,
599- &tiling_schedule_config_table_v2));
600-ApiPerfRegister<ApiPerf> bitwise_or_api_perf_v2(ApiPerfRegisterV2(kBitwiseOr, GetPerfFunc(kUnitVector), nullptr,
601- &perf_param_table_v2,
602- &tiling_schedule_config_table_v2));
603-ApiPerfRegister<ApiPerf> bitwise_xor_api_perf_v2(ApiPerfRegisterV2(kBitwiseXor, GetPerfFunc(kUnitVector), nullptr,
604- &perf_param_table_v2,
605- &tiling_schedule_config_table_v2));
606-ApiPerfRegister<ApiPerf> ceil_api_perf_v2(ApiPerfRegisterV2(kCeil, GetPerfFunc(kUnitVector), nullptr,
607- &perf_param_table_v2, &tiling_schedule_config_table_v2));
608-ApiPerfRegister<ApiPerf> cos_api_perf_v2(ApiPerfRegisterV2(kCos, GetPerfFunc(kUnitVector), nullptr,
609- &perf_param_table_v2, &tiling_schedule_config_table_v2));
610-ApiPerfRegister<ApiPerf> acos_api_perf_v2(ApiPerfRegisterV2(kAcos, GetPerfFunc(kUnitVector), nullptr,
611- &perf_param_table_v2, &tiling_schedule_config_table_v2));
612-ApiPerfRegister<ApiPerf> cosh_api_perf_v2(ApiPerfRegisterV2(kCosh, GetPerfFunc(kUnitVector), nullptr,
613- &perf_param_table_v2, &tiling_schedule_config_table_v2));
614-ApiPerfRegister<ApiPerf> atan2_api_perf_v2(ApiPerfRegisterV2(kAtan2, GetPerfFunc(kUnitVector), nullptr,
615- &perf_param_table_v2, &tiling_schedule_config_table_v2));
616-ApiPerfRegister<ApiPerf> copysign_api_perf_v2(ApiPerfRegisterV2(kCopySign, GetPerfFunc(kUnitVector), nullptr,
617- &perf_param_table_v2,
618- &tiling_schedule_config_table_v2));
619-ApiPerfRegister<ApiPerf> ceil2int_api_perf_v2(ApiPerfRegisterV2(kCeil2Int, GetPerfFunc(kUnitVector), nullptr,
620- &perf_param_table_v2,
621- &tiling_schedule_config_table_v2));
622-ApiPerfRegister<ApiPerf> logical_and_api_perf_v2(ApiPerfRegisterV2(kLogicalAnd, GetPerfFunc(kLogicalAnd + "V2"),
623- nullptr, &perf_param_table_v2,
624- &tiling_schedule_config_table_v2));
625-ApiPerfRegister<ApiPerf> logical_or_api_perf_v2(ApiPerfRegisterV2(kLogicalOr, GetPerfFunc(kLogicalOr + "V2"), nullptr,
626- &perf_param_table_v2,
627- &tiling_schedule_config_table_v2));
628-ApiPerfRegister<ApiPerf> logical_not_api_perf_v2(ApiPerfRegisterV2(kLogicalNot, GetPerfFunc(kLogicalNot + "V2"),
629- nullptr, &perf_param_table_v2,
630- &tiling_schedule_config_table_v2));
631-ApiPerfRegister<ApiPerf> maximum_api_perf_v2(ApiPerfRegisterV2(kMaximum, GetPerfFunc(kMaximum + "V2"), nullptr,
632- &perf_param_table_v2, &tiling_schedule_config_table_v2));
633-ApiPerfRegister<ApiPerf> minimum_api_perf_v2(ApiPerfRegisterV2(kMinimum, GetPerfFunc(kMinimum + "V2"), nullptr,
634- &perf_param_table_v2, &tiling_schedule_config_table_v2));
635-ApiPerfRegister<ApiPerf> max_api_perf_v2(ApiPerfRegisterV2(kMax, GetPerfFunc(kMax + "V2"), nullptr,
636- &perf_param_table_v2, &tiling_schedule_config_table_v2));
637-ApiPerfRegister<ApiPerf> reduce_max_api_perf_v2(ApiPerfRegisterV2(kReduceMax, GetPerfFunc(kReduceMax + "V2"), nullptr,
638- &perf_param_table_v2,
639- &tiling_schedule_config_table_v2));
640-ApiPerfRegister<ApiPerf> min_api_perf_v2(ApiPerfRegisterV2(kMin, GetPerfFunc(kMin + "V2"), nullptr,
641- &perf_param_table_v2, &tiling_schedule_config_table_v2));
642-ApiPerfRegister<ApiPerf> reduce_min_api_perf_v2(ApiPerfRegisterV2(kReduceMin, GetPerfFunc(kReduceMin + "V2"), nullptr,
643- &perf_param_table_v2,
644- &tiling_schedule_config_table_v2));
645-ApiPerfRegister<ApiPerf> mul_api_perf_v2(ApiPerfRegisterV2(kMul, GetPerfFunc(kMul + "V2"), nullptr,
646- &perf_param_table_v2, &tiling_schedule_config_table_v2));
647-ApiPerfRegister<ApiPerf> neg_api_perf_v2(ApiPerfRegisterV2(kNeg, GetPerfFunc(kNeg + "V2"), nullptr,
648- &perf_param_table_v2, &tiling_schedule_config_table_v2));
649-ApiPerfRegister<ApiPerf> reciprocal_api_perf_v2(ApiPerfRegisterV2(kReciprocal, GetPerfFunc(kReciprocal + "V2"), nullptr,
650- &perf_param_table_v2,
651- &tiling_schedule_config_table_v2));
652-ApiPerfRegister<ApiPerf> relu_api_perf_v2(ApiPerfRegisterV2(kRelu, GetPerfFunc(kRelu + "V2"), nullptr,
653- &perf_param_table_v2, &tiling_schedule_config_table_v2));
654-ApiPerfRegister<ApiPerf> remove_pad_api_perf_v2(ApiPerfRegisterV2(kRemovePad, GetPerfFunc(kRemovePad + "V2"), nullptr,
655- &perf_param_table_v2,
656- &tiling_schedule_config_table_v2));
657-ApiPerfRegister<ApiPerf> rsqrt_api_perf_v2(ApiPerfRegisterV2(kRsqrt, GetPerfFunc(kRsqrt + "V2"), nullptr,
658- &perf_param_table_v2, &tiling_schedule_config_table_v2));
659-ApiPerfRegister<ApiPerf> sign_api_perf_v2(ApiPerfRegisterV2(kSign, GetPerfFunc(kSign + "V2"), nullptr,
660- &perf_param_table_v2, &tiling_schedule_config_table_v2));
661-ApiPerfRegister<ApiPerf> sqrt_api_perf_v2(ApiPerfRegisterV2(kSqrt, GetPerfFunc(kSqrt + "V2"), nullptr,
662- &perf_param_table_v2, &tiling_schedule_config_table_v2));
663-ApiPerfRegister<ApiPerf> sub_api_perf_v2(ApiPerfRegisterV2(kSub, GetPerfFunc(kSub + "V2"), nullptr,
664- &perf_param_table_v2, &tiling_schedule_config_table_v2));
665-ApiPerfRegister<ApiPerf> tanh_api_perf_v2(ApiPerfRegisterV2(kTanh, GetPerfFunc(kTanh + "V2"), nullptr,
666- &perf_param_table_v2, &tiling_schedule_config_table_v2));
667-ApiPerfRegister<ApiPerf> sin_api_perf_v2(ApiPerfRegisterV2(kSin, GetPerfFunc(kSin + "V2"), nullptr,
668- &perf_param_table_v2, &tiling_schedule_config_table_v2));
669-ApiPerfRegister<ApiPerf> asin_api_perf_v2(ApiPerfRegisterV2(kAsin, GetPerfFunc(kUnitVector), nullptr,
670- &perf_param_table_v2, &tiling_schedule_config_table_v2));
671-ApiPerfRegister<ApiPerf> asinh_api_perf_v2(ApiPerfRegisterV2(kAsinh, GetPerfFunc(kUnitVector), nullptr,
672- &perf_param_table_v2, &tiling_schedule_config_table_v2));
673-ApiPerfRegister<ApiPerf> atan_api_perf_v2(ApiPerfRegisterV2(kAtan, GetPerfFunc(kUnitVector), nullptr,
674- &perf_param_table_v2, &tiling_schedule_config_table_v2));
675-ApiPerfRegister<ApiPerf> atanh_api_perf_v2(ApiPerfRegisterV2(kAtanh, GetPerfFunc(kUnitVector), nullptr,
676- &perf_param_table_v2, &tiling_schedule_config_table_v2));
677-ApiPerfRegister<ApiPerf> digamma_api_perf_v2(ApiPerfRegisterV2(kDigamma, GetPerfFunc(kUnitVector), nullptr,
678- &perf_param_table_v2, &tiling_schedule_config_table_v2));
679-ApiPerfRegister<ApiPerf> erfc_api_perf_v2(ApiPerfRegisterV2(kErfc, GetPerfFunc(kUnitVector), nullptr,
680- &perf_param_table_v2, &tiling_schedule_config_table_v2));
681-ApiPerfRegister<ApiPerf> erfcx_api_perf_v2(ApiPerfRegisterV2(kErfcx, GetPerfFunc(kUnitVector), nullptr,
682- &perf_param_table_v2, &tiling_schedule_config_table_v2));
683-ApiPerfRegister<ApiPerf> acosh_api_perf_v2(ApiPerfRegisterV2(kAcosh, GetPerfFunc(kUnitVector), nullptr,
684- &perf_param_table_v2, &tiling_schedule_config_table_v2));
685-ApiPerfRegister<ApiPerf> rshift_api_perf_v2(ApiPerfRegisterV2(kRShift, GetPerfFunc(kRShift + "V2"), nullptr,
686- &perf_param_table_v2, &tiling_schedule_config_table_v2));
687-ApiPerfRegister<ApiPerf> where_api_perf_v2(ApiPerfRegisterV2(kWhere, GetPerfFunc(kWhere + "V2"), nullptr,
688- &perf_param_table_v2, &tiling_schedule_config_table_v2));
689-ApiPerfRegister<ApiPerf> select_api_perf_v2(ApiPerfRegisterV2(kSelect, GetPerfFunc(kWhere + "V2"), nullptr,
690- &perf_param_table_v2, &tiling_schedule_config_table_v2));
691-ApiPerfRegister<ApiPerf> ge_api_perf_v2(ApiPerfRegisterV2(kGe, GetPerfFunc(kGe + "V2"), nullptr, &perf_param_table_v2,
692- &tiling_schedule_config_table_v2));
693-ApiPerfRegister<ApiPerf> eq_api_perf_v2(ApiPerfRegisterV2(kEq, GetPerfFunc(kEq + "V2"), nullptr, &perf_param_table_v2,
694- &tiling_schedule_config_table_v2));
695-ApiPerfRegister<ApiPerf> ne_api_perf_v2(ApiPerfRegisterV2(kNe, GetPerfFunc(kNe + "V2"), nullptr, &perf_param_table_v2,
696- &tiling_schedule_config_table_v2));
697-ApiPerfRegister<ApiPerf> gt_api_perf_v2(ApiPerfRegisterV2(kGt, GetPerfFunc(kGt + "V2"), nullptr, &perf_param_table_v2,
698- &tiling_schedule_config_table_v2));
699-ApiPerfRegister<ApiPerf> le_api_perf_v2(ApiPerfRegisterV2(kLe, GetPerfFunc(kLe + "V2"), nullptr, &perf_param_table_v2,
700- &tiling_schedule_config_table_v2));
701-ApiPerfRegister<ApiPerf> lt_api_perf_v2(ApiPerfRegisterV2(kLt, GetPerfFunc(kLt + "V2"), nullptr, &perf_param_table_v2,
702- &tiling_schedule_config_table_v2));
703-ApiPerfRegister<ApiPerf> ub2ub_api_perf_v2(ApiPerfRegisterV2(kUb2ub, GetPerfFunc(kUb2ub), nullptr, &perf_param_table_v2,
704 &tiling_schedule_config_table_v2));600 &tiling_schedule_config_table_v2));
705-ApiPerfRegister<ApiPerf> load_api_perf_v2(ApiPerfRegisterV2(kLoad, GetPerfFunc(kLoad + "V2"), nullptr,601+ApiPerfRegister<ApiPerf> fma_api_perf_v2(ApiPerfRegisterV2(kFma, kFma + "V2", nullptr, &perf_param_table_v2,
706- &perf_param_table_v2, &tiling_schedule_config_table_v2));602+ &tiling_schedule_config_table_v2));
707-ApiPerfRegister<ApiPerf> store_api_perf_v2(ApiPerfRegisterV2(kStore, GetPerfFunc(kStore + "V2"), nullptr,603+ApiPerfRegister<ApiPerf> bitwise_not_api_perf_v2(ApiPerfRegisterV2(kBitwiseNot, kUnitVector, nullptr,
708- &perf_param_table_v2, &tiling_schedule_config_table_v2));604+ &perf_param_table_v2,
709-ApiPerfRegister<ApiPerf> nddma_api_perf_v2(ApiPerfRegisterV2(kNddma, GetPerfFunc(kNddma + "V2"), nullptr,
710- &perf_param_table_v2, &tiling_schedule_config_table_v2));
711-ApiPerfRegister<ApiPerf> all_api_perf_v2(ApiPerfRegisterV2(kAll, GetPerfFunc(kAll + "V2"), nullptr,
712- &perf_param_table_v2, &tiling_schedule_config_table_v2));
713-ApiPerfRegister<ApiPerf> reduce_all_api_perf_v2(ApiPerfRegisterV2(kReduceAll, GetPerfFunc(kReduceAll + "V2"), nullptr,
714- &perf_param_table_v2,
715- &tiling_schedule_config_table_v2));
716-ApiPerfRegister<ApiPerf> any_api_perf_v2(ApiPerfRegisterV2(kAny, GetPerfFunc(kAny + "V2"), nullptr,
717- &perf_param_table_v2, &tiling_schedule_config_table_v2));
718-ApiPerfRegister<ApiPerf> reduce_any_api_perf_v2(ApiPerfRegisterV2(kReduceAny, GetPerfFunc(kReduceAny + "V2"), nullptr,
719- &perf_param_table_v2,
720- &tiling_schedule_config_table_v2));
721-ApiPerfRegister<ApiPerf> reduce_mean_api_perf_v2(ApiPerfRegisterV2(kReduceMean, GetPerfFunc(kReduceMean + "V2"),
722- nullptr, &perf_param_table_v2,
723 &tiling_schedule_config_table_v2));605 &tiling_schedule_config_table_v2));
724-ApiPerfRegister<ApiPerf> reduce_prod_api_perf_v2(ApiPerfRegisterV2(kReduceProd, GetPerfFunc(kReduceProd + "V2"),606+ApiPerfRegister<ApiPerf> bitwise_or_api_perf_v2(ApiPerfRegisterV2(kBitwiseOr, kUnitVector, nullptr,
725- nullptr, &perf_param_table_v2,
726- &tiling_schedule_config_table_v2));
727-ApiPerfRegister<ApiPerf> reduce_sum_api_perf_v2(ApiPerfRegisterV2(kReduceSum, GetPerfFunc(kReduceSum + "V2"), nullptr,
728 &perf_param_table_v2,607 &perf_param_table_v2,
729 &tiling_schedule_config_table_v2));608 &tiling_schedule_config_table_v2));
730-ApiPerfRegister<ApiPerf> mean_api_perf_v2(ApiPerfRegisterV2(kMean, GetPerfFunc(kMean + "V2"), nullptr,609+ApiPerfRegister<ApiPerf> bitwise_xor_api_perf_v2(ApiPerfRegisterV2(kBitwiseXor, kUnitVector, nullptr,
731- &perf_param_table_v2, &tiling_schedule_config_table_v2));610+ &perf_param_table_v2,
732-ApiPerfRegister<ApiPerf> prod_api_perf_v2(ApiPerfRegisterV2(kProd, GetPerfFunc(kProd + "V2"), nullptr,611+ &tiling_schedule_config_table_v2));
733- &perf_param_table_v2, &tiling_schedule_config_table_v2));612+ApiPerfRegister<ApiPerf> ceil_api_perf_v2(ApiPerfRegisterV2(kCeil, kUnitVector, nullptr, &perf_param_table_v2,
734-ApiPerfRegister<ApiPerf> sum_api_perf_v2(ApiPerfRegisterV2(kSum, GetPerfFunc(kSum + "V2"), nullptr,613+ &tiling_schedule_config_table_v2));
735- &perf_param_table_v2, &tiling_schedule_config_table_v2));614+ApiPerfRegister<ApiPerf> cos_api_perf_v2(ApiPerfRegisterV2(kCos, kUnitVector, nullptr, &perf_param_table_v2,
615+ &tiling_schedule_config_table_v2));
616+ApiPerfRegister<ApiPerf> acos_api_perf_v2(ApiPerfRegisterV2(kAcos, kUnitVector, nullptr, &perf_param_table_v2,
617+ &tiling_schedule_config_table_v2));
618+ApiPerfRegister<ApiPerf> cosh_api_perf_v2(ApiPerfRegisterV2(kCosh, kUnitVector, nullptr, &perf_param_table_v2,
619+ &tiling_schedule_config_table_v2));
620+ApiPerfRegister<ApiPerf> atan2_api_perf_v2(ApiPerfRegisterV2(kAtan2, kUnitVector, nullptr, &perf_param_table_v2,
621+ &tiling_schedule_config_table_v2));
622+ApiPerfRegister<ApiPerf> copysign_api_perf_v2(ApiPerfRegisterV2(kCopySign, kUnitVector, nullptr, &perf_param_table_v2,
623+ &tiling_schedule_config_table_v2));
624+ApiPerfRegister<ApiPerf> ceil2int_api_perf_v2(ApiPerfRegisterV2(kCeil2Int, kUnitVector, nullptr, &perf_param_table_v2,
625+ &tiling_schedule_config_table_v2));
626+ApiPerfRegister<ApiPerf> logical_and_api_perf_v2(ApiPerfRegisterV2(kLogicalAnd, kLogicalAnd + "V2", nullptr,
627+ &perf_param_table_v2,
628+ &tiling_schedule_config_table_v2));
629+ApiPerfRegister<ApiPerf> logical_or_api_perf_v2(ApiPerfRegisterV2(kLogicalOr, kLogicalOr + "V2", nullptr,
630+ &perf_param_table_v2,
631+ &tiling_schedule_config_table_v2));
632+ApiPerfRegister<ApiPerf> logical_not_api_perf_v2(ApiPerfRegisterV2(kLogicalNot, kLogicalNot + "V2", nullptr,
633+ &perf_param_table_v2,
634+ &tiling_schedule_config_table_v2));
635+ApiPerfRegister<ApiPerf> maximum_api_perf_v2(ApiPerfRegisterV2(kMaximum, kMaximum + "V2", nullptr, &perf_param_table_v2,
636+ &tiling_schedule_config_table_v2));
637+ApiPerfRegister<ApiPerf> minimum_api_perf_v2(ApiPerfRegisterV2(kMinimum, kMinimum + "V2", nullptr, &perf_param_table_v2,
638+ &tiling_schedule_config_table_v2));
639+ApiPerfRegister<ApiPerf> max_api_perf_v2(ApiPerfRegisterV2(kMax, kMax + "V2", nullptr, &perf_param_table_v2,
640+ &tiling_schedule_config_table_v2));
641+ApiPerfRegister<ApiPerf> reduce_max_api_perf_v2(ApiPerfRegisterV2(kReduceMax, kReduceMax + "V2", nullptr,
642+ &perf_param_table_v2,
643+ &tiling_schedule_config_table_v2));
644+ApiPerfRegister<ApiPerf> min_api_perf_v2(ApiPerfRegisterV2(kMin, kMin + "V2", nullptr, &perf_param_table_v2,
645+ &tiling_schedule_config_table_v2));
646+ApiPerfRegister<ApiPerf> reduce_min_api_perf_v2(ApiPerfRegisterV2(kReduceMin, kReduceMin + "V2", nullptr,
647+ &perf_param_table_v2,
648+ &tiling_schedule_config_table_v2));
649+ApiPerfRegister<ApiPerf> mul_api_perf_v2(ApiPerfRegisterV2(kMul, kMul + "V2", nullptr, &perf_param_table_v2,
650+ &tiling_schedule_config_table_v2));
651+ApiPerfRegister<ApiPerf> neg_api_perf_v2(ApiPerfRegisterV2(kNeg, kNeg + "V2", nullptr, &perf_param_table_v2,
652+ &tiling_schedule_config_table_v2));
653+ApiPerfRegister<ApiPerf> reciprocal_api_perf_v2(ApiPerfRegisterV2(kReciprocal, kReciprocal + "V2", nullptr,
654+ &perf_param_table_v2,
655+ &tiling_schedule_config_table_v2));
656+ApiPerfRegister<ApiPerf> relu_api_perf_v2(ApiPerfRegisterV2(kRelu, kRelu + "V2", nullptr, &perf_param_table_v2,
657+ &tiling_schedule_config_table_v2));
658+ApiPerfRegister<ApiPerf> remove_pad_api_perf_v2(ApiPerfRegisterV2(kRemovePad, kRemovePad + "V2", nullptr,
659+ &perf_param_table_v2,
660+ &tiling_schedule_config_table_v2));
661+ApiPerfRegister<ApiPerf> rsqrt_api_perf_v2(ApiPerfRegisterV2(kRsqrt, kRsqrt + "V2", nullptr, &perf_param_table_v2,
662+ &tiling_schedule_config_table_v2));
663+ApiPerfRegister<ApiPerf> sign_api_perf_v2(ApiPerfRegisterV2(kSign, kSign + "V2", nullptr, &perf_param_table_v2,
664+ &tiling_schedule_config_table_v2));
665+ApiPerfRegister<ApiPerf> sqrt_api_perf_v2(ApiPerfRegisterV2(kSqrt, kSqrt + "V2", nullptr, &perf_param_table_v2,
666+ &tiling_schedule_config_table_v2));
667+ApiPerfRegister<ApiPerf> sub_api_perf_v2(ApiPerfRegisterV2(kSub, kSub + "V2", nullptr, &perf_param_table_v2,
668+ &tiling_schedule_config_table_v2));
669+ApiPerfRegister<ApiPerf> tanh_api_perf_v2(ApiPerfRegisterV2(kTanh, kTanh + "V2", nullptr, &perf_param_table_v2,
670+ &tiling_schedule_config_table_v2));
671+ApiPerfRegister<ApiPerf> sin_api_perf_v2(ApiPerfRegisterV2(kSin, kSin + "V2", nullptr, &perf_param_table_v2,
672+ &tiling_schedule_config_table_v2));
673+ApiPerfRegister<ApiPerf> asin_api_perf_v2(ApiPerfRegisterV2(kAsin, kUnitVector, nullptr, &perf_param_table_v2,
674+ &tiling_schedule_config_table_v2));
675+ApiPerfRegister<ApiPerf> asinh_api_perf_v2(ApiPerfRegisterV2(kAsinh, kUnitVector, nullptr, &perf_param_table_v2,
676+ &tiling_schedule_config_table_v2));
677+ApiPerfRegister<ApiPerf> atan_api_perf_v2(ApiPerfRegisterV2(kAtan, kUnitVector, nullptr, &perf_param_table_v2,
678+ &tiling_schedule_config_table_v2));
679+ApiPerfRegister<ApiPerf> atanh_api_perf_v2(ApiPerfRegisterV2(kAtanh, kUnitVector, nullptr, &perf_param_table_v2,
680+ &tiling_schedule_config_table_v2));
681+ApiPerfRegister<ApiPerf> digamma_api_perf_v2(ApiPerfRegisterV2(kDigamma, kUnitVector, nullptr, &perf_param_table_v2,
682+ &tiling_schedule_config_table_v2));
683+ApiPerfRegister<ApiPerf> erfc_api_perf_v2(ApiPerfRegisterV2(kErfc, kUnitVector, nullptr, &perf_param_table_v2,
684+ &tiling_schedule_config_table_v2));
685+ApiPerfRegister<ApiPerf> erfcx_api_perf_v2(ApiPerfRegisterV2(kErfcx, kUnitVector, nullptr, &perf_param_table_v2,
686+ &tiling_schedule_config_table_v2));
687+ApiPerfRegister<ApiPerf> acosh_api_perf_v2(ApiPerfRegisterV2(kAcosh, kUnitVector, nullptr, &perf_param_table_v2,
688+ &tiling_schedule_config_table_v2));
689+ApiPerfRegister<ApiPerf> rshift_api_perf_v2(ApiPerfRegisterV2(kRShift, kRShift + "V2", nullptr, &perf_param_table_v2,
690+ &tiling_schedule_config_table_v2));
691+ApiPerfRegister<ApiPerf> where_api_perf_v2(ApiPerfRegisterV2(kWhere, kWhere + "V2", nullptr, &perf_param_table_v2,
692+ &tiling_schedule_config_table_v2));
693+ApiPerfRegister<ApiPerf> select_api_perf_v2(ApiPerfRegisterV2(kSelect, kWhere + "V2", nullptr, &perf_param_table_v2,
694+ &tiling_schedule_config_table_v2));
695+ApiPerfRegister<ApiPerf> ge_api_perf_v2(ApiPerfRegisterV2(kGe, kGe + "V2", nullptr, &perf_param_table_v2,
696+ &tiling_schedule_config_table_v2));
697+ApiPerfRegister<ApiPerf> eq_api_perf_v2(ApiPerfRegisterV2(kEq, kEq + "V2", nullptr, &perf_param_table_v2,
698+ &tiling_schedule_config_table_v2));
699+ApiPerfRegister<ApiPerf> ne_api_perf_v2(ApiPerfRegisterV2(kNe, kNe + "V2", nullptr, &perf_param_table_v2,
700+ &tiling_schedule_config_table_v2));
701+ApiPerfRegister<ApiPerf> gt_api_perf_v2(ApiPerfRegisterV2(kGt, kGt + "V2", nullptr, &perf_param_table_v2,
702+ &tiling_schedule_config_table_v2));
703+ApiPerfRegister<ApiPerf> le_api_perf_v2(ApiPerfRegisterV2(kLe, kLe + "V2", nullptr, &perf_param_table_v2,
704+ &tiling_schedule_config_table_v2));
705+ApiPerfRegister<ApiPerf> lt_api_perf_v2(ApiPerfRegisterV2(kLt, kLt + "V2", nullptr, &perf_param_table_v2,
706+ &tiling_schedule_config_table_v2));
707+ApiPerfRegister<ApiPerf> ub2ub_api_perf_v2(ApiPerfRegisterV2(kUb2ub, kUb2ub, nullptr, &perf_param_table_v2,
708+ &tiling_schedule_config_table_v2));
709+ApiPerfRegister<ApiPerf> load_api_perf_v2(ApiPerfRegisterV2(kLoad, kLoad + "V2", nullptr, &perf_param_table_v2,
710+ &tiling_schedule_config_table_v2));
711+ApiPerfRegister<ApiPerf> store_api_perf_v2(ApiPerfRegisterV2(kStore, kStore + "V2", nullptr, &perf_param_table_v2,
712+ &tiling_schedule_config_table_v2));
713+ApiPerfRegister<ApiPerf> nddma_api_perf_v2(ApiPerfRegisterV2(kNddma, kNddma + "V2", nullptr, &perf_param_table_v2,
714+ &tiling_schedule_config_table_v2));
715+ApiPerfRegister<ApiPerf> all_api_perf_v2(ApiPerfRegisterV2(kAll, kAll + "V2", nullptr, &perf_param_table_v2,
716+ &tiling_schedule_config_table_v2));
717+ApiPerfRegister<ApiPerf> reduce_all_api_perf_v2(ApiPerfRegisterV2(kReduceAll, kReduceAll + "V2", nullptr,
718+ &perf_param_table_v2,
719+ &tiling_schedule_config_table_v2));
720+ApiPerfRegister<ApiPerf> any_api_perf_v2(ApiPerfRegisterV2(kAny, kAny + "V2", nullptr, &perf_param_table_v2,
721+ &tiling_schedule_config_table_v2));
722+ApiPerfRegister<ApiPerf> reduce_any_api_perf_v2(ApiPerfRegisterV2(kReduceAny, kReduceAny + "V2", nullptr,
723+ &perf_param_table_v2,
724+ &tiling_schedule_config_table_v2));
725+ApiPerfRegister<ApiPerf> reduce_mean_api_perf_v2(ApiPerfRegisterV2(kReduceMean, kReduceMean + "V2", nullptr,
726+ &perf_param_table_v2,
727+ &tiling_schedule_config_table_v2));
728+ApiPerfRegister<ApiPerf> reduce_prod_api_perf_v2(ApiPerfRegisterV2(kReduceProd, kReduceProd + "V2", nullptr,
729+ &perf_param_table_v2,
730+ &tiling_schedule_config_table_v2));
731+ApiPerfRegister<ApiPerf> reduce_sum_api_perf_v2(ApiPerfRegisterV2(kReduceSum, kReduceSum + "V2", nullptr,
732+ &perf_param_table_v2,
733+ &tiling_schedule_config_table_v2));
734+ApiPerfRegister<ApiPerf> mean_api_perf_v2(ApiPerfRegisterV2(kMean, kMean + "V2", nullptr, &perf_param_table_v2,
735+ &tiling_schedule_config_table_v2));
736+ApiPerfRegister<ApiPerf> prod_api_perf_v2(ApiPerfRegisterV2(kProd, kProd + "V2", nullptr, &perf_param_table_v2,
737+ &tiling_schedule_config_table_v2));
738+ApiPerfRegister<ApiPerf> sum_api_perf_v2(ApiPerfRegisterV2(kSum, kSum + "V2", nullptr, &perf_param_table_v2,
739+ &tiling_schedule_config_table_v2));
736// 不需要建模的ASCIR740// 不需要建模的ASCIR
737ApiPerfRegister<ApiPerf> data_api_perf_v2(ApiPerfRegisterV2(kData, DefaultGetPerf, nullptr, &perf_param_table_v2,741ApiPerfRegister<ApiPerf> data_api_perf_v2(ApiPerfRegisterV2(kData, DefaultGetPerf, nullptr, &perf_param_table_v2,
738 &tiling_schedule_config_table_v2));742 &tiling_schedule_config_table_v2));
@@ -750,195 +754,188 @@ ApiPerfRegister<ApiPerf> workspace_api_perf_v2(ApiPerfRegisterV2(kWorkspace, Def
750 &perf_param_table_v2,754 &perf_param_table_v2,
751 &tiling_schedule_config_table_v2));755 &tiling_schedule_config_table_v2));
752// 目前无建模的ASCIR756// 目前无建模的ASCIR
753-ApiPerfRegister<ApiPerf> pad_api_perf_v2(ApiPerfRegisterV2(kPad, GetPerfFunc(kUnitVector), nullptr,757+ApiPerfRegister<ApiPerf> pad_api_perf_v2(ApiPerfRegisterV2(kPad, kUnitVector, nullptr, &perf_param_table_v2,
754- &perf_param_table_v2, &tiling_schedule_config_table_v2));758+ &tiling_schedule_config_table_v2));
755-ApiPerfRegister<ApiPerf> round_api_perf_v2(ApiPerfRegisterV2(kRound, GetPerfFunc(kUnitVector), nullptr,759+ApiPerfRegister<ApiPerf> round_api_perf_v2(ApiPerfRegisterV2(kRound, kUnitVector, nullptr, &perf_param_table_v2,
756- &perf_param_table_v2, &tiling_schedule_config_table_v2));760+ &tiling_schedule_config_table_v2));
757-ApiPerfRegister<ApiPerf> nop_api_perf_v2(ApiPerfRegisterV2(kNop, GetPerfFunc(kUnitVector), nullptr,761+ApiPerfRegister<ApiPerf> nop_api_perf_v2(ApiPerfRegisterV2(kNop, kUnitVector, nullptr, &perf_param_table_v2,
758- &perf_param_table_v2, &tiling_schedule_config_table_v2));762+ &tiling_schedule_config_table_v2));
759-ApiPerfRegister<ApiPerf> ln_api_perf_v2(ApiPerfRegisterV2(kLn, GetPerfFunc(kLn + "V2"), nullptr, &perf_param_table_v2,763+ApiPerfRegister<ApiPerf> ln_api_perf_v2(ApiPerfRegisterV2(kLn, kLn + "V2", nullptr, &perf_param_table_v2,
760 &tiling_schedule_config_table_v2));764 &tiling_schedule_config_table_v2));
761-ApiPerfRegister<ApiPerf> floor_to_int_api_perf_v2(ApiPerfRegisterV2(kFloorToInt, GetPerfFunc(kFloorToInt + "V2"),765+ApiPerfRegister<ApiPerf> floor_to_int_api_perf_v2(ApiPerfRegisterV2(kFloorToInt, kFloorToInt + "V2", nullptr,
762- nullptr, &perf_param_table_v2,766+ &perf_param_table_v2,
763 &tiling_schedule_config_table_v2));767 &tiling_schedule_config_table_v2));
764-ApiPerfRegister<ApiPerf> fmod_api_perf_v2(ApiPerfRegisterV2(kFmod, GetPerfFunc(kFmod + "V2"), nullptr,768+ApiPerfRegister<ApiPerf> fmod_api_perf_v2(ApiPerfRegisterV2(kFmod, kFmod + "V2", nullptr, &perf_param_table_v2,
765- &perf_param_table_v2, &tiling_schedule_config_table_v2));769+ &tiling_schedule_config_table_v2));
766-ApiPerfRegister<ApiPerf> hypot_api_perf_v2(ApiPerfRegisterV2(kHypot, GetPerfFunc(kHypot + "V2"), nullptr,770+ApiPerfRegister<ApiPerf> hypot_api_perf_v2(ApiPerfRegisterV2(kHypot, kHypot + "V2", nullptr, &perf_param_table_v2,
767- &perf_param_table_v2, &tiling_schedule_config_table_v2));771+ &tiling_schedule_config_table_v2));
768-ApiPerfRegister<ApiPerf> lgamma_api_perf_v2(ApiPerfRegisterV2(kLgamma, GetPerfFunc(kLgamma + "V2"), nullptr,772+ApiPerfRegister<ApiPerf> lgamma_api_perf_v2(ApiPerfRegisterV2(kLgamma, kLgamma + "V2", nullptr, &perf_param_table_v2,
769- &perf_param_table_v2, &tiling_schedule_config_table_v2));773+ &tiling_schedule_config_table_v2));
770-ApiPerfRegister<ApiPerf> log10_api_perf_v2(ApiPerfRegisterV2(kLog10, GetPerfFunc(kLog10 + "V2"), nullptr,774+ApiPerfRegister<ApiPerf> log10_api_perf_v2(ApiPerfRegisterV2(kLog10, kLog10 + "V2", nullptr, &perf_param_table_v2,
771- &perf_param_table_v2, &tiling_schedule_config_table_v2));775+ &tiling_schedule_config_table_v2));
772-ApiPerfRegister<ApiPerf> logical_xor_api_perf_v2(ApiPerfRegisterV2(kLogicalXor, GetPerfFunc(kLogicalXor + "V2"),776+ApiPerfRegister<ApiPerf> logical_xor_api_perf_v2(ApiPerfRegisterV2(kLogicalXor, kLogicalXor + "V2", nullptr,
773- nullptr, &perf_param_table_v2,777+ &perf_param_table_v2,
774 &tiling_schedule_config_table_v2));778 &tiling_schedule_config_table_v2));
775-ApiPerfRegister<ApiPerf> log1p_api_perf_v2(ApiPerfRegisterV2(kLog1p, GetPerfFunc(kLog1p + "V2"), nullptr,779+ApiPerfRegister<ApiPerf> log1p_api_perf_v2(ApiPerfRegisterV2(kLog1p, kLog1p + "V2", nullptr, &perf_param_table_v2,
776- &perf_param_table_v2, &tiling_schedule_config_table_v2));780+ &tiling_schedule_config_table_v2));
777-ApiPerfRegister<ApiPerf> expm1_api_perf_v2(ApiPerfRegisterV2(kExpm1, GetPerfFunc(kExpm1 + "V2"), nullptr,781+ApiPerfRegister<ApiPerf> expm1_api_perf_v2(ApiPerfRegisterV2(kExpm1, kExpm1 + "V2", nullptr, &perf_param_table_v2,
778- &perf_param_table_v2, &tiling_schedule_config_table_v2));782+ &tiling_schedule_config_table_v2));
779-ApiPerfRegister<ApiPerf> log2_api_perf_v2(ApiPerfRegisterV2(kLog2, GetPerfFunc(kLog2 + "V2"), nullptr,783+ApiPerfRegister<ApiPerf> log2_api_perf_v2(ApiPerfRegisterV2(kLog2, kLog2 + "V2", nullptr, &perf_param_table_v2,
780- &perf_param_table_v2, &tiling_schedule_config_table_v2));784+ &tiling_schedule_config_table_v2));
781-ApiPerfRegister<ApiPerf> lShift_api_perf_v2(ApiPerfRegisterV2(kLShift, GetPerfFunc(kLShift + "V2"), nullptr,785+ApiPerfRegister<ApiPerf> lShift_api_perf_v2(ApiPerfRegisterV2(kLShift, kLShift + "V2", nullptr, &perf_param_table_v2,
782- &perf_param_table_v2, &tiling_schedule_config_table_v2));786+ &tiling_schedule_config_table_v2));
783-ApiPerfRegister<ApiPerf> mod_api_perf_v2(ApiPerfRegisterV2(kMod, GetPerfFunc(kMod + "V2"), nullptr,787+ApiPerfRegister<ApiPerf> mod_api_perf_v2(ApiPerfRegisterV2(kMod, kMod + "V2", nullptr, &perf_param_table_v2,
784- &perf_param_table_v2, &tiling_schedule_config_table_v2));788+ &tiling_schedule_config_table_v2));
785-ApiPerfRegister<ApiPerf> isnan_api_perf_v2(ApiPerfRegisterV2(kIsnan, GetPerfFunc(kUnitVector), nullptr,789+ApiPerfRegister<ApiPerf> isnan_api_perf_v2(ApiPerfRegisterV2(kIsnan, kUnitVector, nullptr, &perf_param_table_v2,
786- &perf_param_table_v2, &tiling_schedule_config_table_v2));790+ &tiling_schedule_config_table_v2));
787-ApiPerfRegister<ApiPerf> isfinite_api_perf_v2(ApiPerfRegisterV2(kIsFinite, GetPerfFunc(kUnitVector), nullptr,791+ApiPerfRegister<ApiPerf> isfinite_api_perf_v2(ApiPerfRegisterV2(kIsFinite, kUnitVector, nullptr, &perf_param_table_v2,
788- &perf_param_table_v2,
789 &tiling_schedule_config_table_v2));792 &tiling_schedule_config_table_v2));
790-ApiPerfRegister<ApiPerf> isinf_api_perf_v2(ApiPerfRegisterV2(kIsInf, GetPerfFunc(kUnitVector), nullptr,793+ApiPerfRegister<ApiPerf> isinf_api_perf_v2(ApiPerfRegisterV2(kIsInf, kUnitVector, nullptr, &perf_param_table_v2,
791- &perf_param_table_v2, &tiling_schedule_config_table_v2));794+ &tiling_schedule_config_table_v2));
792-ApiPerfRegister<ApiPerf> maskedfill_api_perf_v2(ApiPerfRegisterV2(kMaskedFill, GetPerfFunc(kUnitVector), nullptr,795+ApiPerfRegister<ApiPerf> maskedfill_api_perf_v2(ApiPerfRegisterV2(kMaskedFill, kUnitVector, nullptr,
793 &perf_param_table_v2,796 &perf_param_table_v2,
794 &tiling_schedule_config_table_v2));797 &tiling_schedule_config_table_v2));
795-ApiPerfRegister<ApiPerf> sigmoid_api_perf_v2(ApiPerfRegisterV2(kSigmoid, GetPerfFunc(kSigmoid + "V2"), nullptr,798+ApiPerfRegister<ApiPerf> sigmoid_api_perf_v2(ApiPerfRegisterV2(kSigmoid, kSigmoid + "V2", nullptr, &perf_param_table_v2,
796- &perf_param_table_v2, &tiling_schedule_config_table_v2));799+ &tiling_schedule_config_table_v2));
797-ApiPerfRegister<ApiPerf> true_div_api_perf_v2(ApiPerfRegisterV2(kTrueDiv, GetPerfFunc(kDiv + "V2"), nullptr,800+ApiPerfRegister<ApiPerf> true_div_api_perf_v2(ApiPerfRegisterV2(kTrueDiv, kDiv + "V2", nullptr, &perf_param_table_v2,
798- &perf_param_table_v2,
799 &tiling_schedule_config_table_v2));801 &tiling_schedule_config_table_v2));
800-ApiPerfRegister<ApiPerf> pow_api_perf_v2(ApiPerfRegisterV2(kPow, GetPerfFunc(kPow + "V2"), nullptr,802+ApiPerfRegister<ApiPerf> pow_api_perf_v2(ApiPerfRegisterV2(kPow, kPow + "V2", nullptr, &perf_param_table_v2,
801- &perf_param_table_v2, &tiling_schedule_config_table_v2));803+ &tiling_schedule_config_table_v2));
802-ApiPerfRegister<ApiPerf> clip_by_value_api_perf_v2(ApiPerfRegisterV2(kClipByValue, GetPerfFunc(kClipByValue + "V2"),804+ApiPerfRegister<ApiPerf> clip_by_value_api_perf_v2(ApiPerfRegisterV2(kClipByValue, kClipByValue + "V2", nullptr,
803- nullptr, &perf_param_table_v2,805+ &perf_param_table_v2,
804 &tiling_schedule_config_table_v2));806 &tiling_schedule_config_table_v2));
805-ApiPerfRegister<ApiPerf> concat_api_perf_v2(ApiPerfRegisterV2(kConcat, GetPerfFunc(kUnitVector), nullptr,807+ApiPerfRegister<ApiPerf> concat_api_perf_v2(ApiPerfRegisterV2(kConcat, kUnitVector, nullptr, &perf_param_table_v2,
806- &perf_param_table_v2, &tiling_schedule_config_table_v2));808+ &tiling_schedule_config_table_v2));
807-ApiPerfRegister<ApiPerf> leaky_relu_api_perf_v2(ApiPerfRegisterV2(kLeakyRelu, GetPerfFunc(kLeakyRelu + "V2"), nullptr,809+ApiPerfRegister<ApiPerf> leaky_relu_api_perf_v2(ApiPerfRegisterV2(kLeakyRelu, kLeakyRelu + "V2", nullptr,
808 &perf_param_table_v2,810 &perf_param_table_v2,
809 &tiling_schedule_config_table_v2));811 &tiling_schedule_config_table_v2));
810-ApiPerfRegister<ApiPerf> bitwise_and_api_perf_v2(ApiPerfRegisterV2(kBitwiseAnd, GetPerfFunc(kBitwiseAnd + "V2"),812+ApiPerfRegister<ApiPerf> bitwise_and_api_perf_v2(ApiPerfRegisterV2(kBitwiseAnd, kBitwiseAnd + "V2", nullptr,
811- nullptr, &perf_param_table_v2,813+ &perf_param_table_v2,
812 &tiling_schedule_config_table_v2));814 &tiling_schedule_config_table_v2));
813-ApiPerfRegister<ApiPerf> transpose_api_perf_v2(ApiPerfRegisterV2(kTranspose, GetPerfFunc(kUnitVector), nullptr,815+ApiPerfRegister<ApiPerf> transpose_api_perf_v2(ApiPerfRegisterV2(kTranspose, kUnitVector, nullptr, &perf_param_table_v2,
816+ &tiling_schedule_config_table_v2));
817+ApiPerfRegister<ApiPerf> floor_div_api_perf_v2(ApiPerfRegisterV2(kFloorDiv, kFloorDiv + "V2", nullptr,
814 &perf_param_table_v2,818 &perf_param_table_v2,
815 &tiling_schedule_config_table_v2));819 &tiling_schedule_config_table_v2));
816-ApiPerfRegister<ApiPerf> floor_div_api_perf_v2(ApiPerfRegisterV2(kFloorDiv, GetPerfFunc(kFloorDiv + "V2"), nullptr,820+ApiPerfRegister<ApiPerf> gelu_api_perf_v2(ApiPerfRegisterV2(kGelu, kGelu + "V2", nullptr, &perf_param_table_v2,
821+ &tiling_schedule_config_table_v2));
822+ApiPerfRegister<ApiPerf> trunc_api_perf_v2(ApiPerfRegisterV2(kTrunc, kTrunc + "V2", nullptr, &perf_param_table_v2,
823+ &tiling_schedule_config_table_v2));
824+ApiPerfRegister<ApiPerf> tan_api_perf_v2(ApiPerfRegisterV2(kTan, kTan + "V2", nullptr, &perf_param_table_v2,
825+ &tiling_schedule_config_table_v2));
826+ApiPerfRegister<ApiPerf> sinh_api_perf_v2(ApiPerfRegisterV2(kSinh, kSinh + "V2", nullptr, &perf_param_table_v2,
827+ &tiling_schedule_config_table_v2));
828+ApiPerfRegister<ApiPerf> trunc_div_api_perf_v2(ApiPerfRegisterV2(kTruncDiv, kTruncDiv + "V2", nullptr,
817 &perf_param_table_v2,829 &perf_param_table_v2,
818 &tiling_schedule_config_table_v2));830 &tiling_schedule_config_table_v2));
819-ApiPerfRegister<ApiPerf> gelu_api_perf_v2(ApiPerfRegisterV2(kGelu, GetPerfFunc(kGelu + "V2"), nullptr,831+ApiPerfRegister<ApiPerf> trunc_to_int_api_perf_v2(ApiPerfRegisterV2(kTruncToInt, kTruncToInt + "V2", nullptr,
820- &perf_param_table_v2, &tiling_schedule_config_table_v2));832+ &perf_param_table_v2,
821-ApiPerfRegister<ApiPerf> trunc_api_perf_v2(ApiPerfRegisterV2(kTrunc, GetPerfFunc(kTrunc + "V2"), nullptr,
822- &perf_param_table_v2, &tiling_schedule_config_table_v2));
823-ApiPerfRegister<ApiPerf> tan_api_perf_v2(ApiPerfRegisterV2(kTan, GetPerfFunc(kTan + "V2"), nullptr,
824- &perf_param_table_v2, &tiling_schedule_config_table_v2));
825-ApiPerfRegister<ApiPerf> sinh_api_perf_v2(ApiPerfRegisterV2(kSinh, GetPerfFunc(kSinh + "V2"), nullptr,
826- &perf_param_table_v2, &tiling_schedule_config_table_v2));
827-ApiPerfRegister<ApiPerf> trunc_div_api_perf_v2(ApiPerfRegisterV2(kTruncDiv, GetPerfFunc(kTruncDiv + "V2"), nullptr,
828- &perf_param_table_v2,
829- &tiling_schedule_config_table_v2));
830-ApiPerfRegister<ApiPerf> trunc_to_int_api_perf_v2(ApiPerfRegisterV2(kTruncToInt, GetPerfFunc(kTruncToInt + "V2"),
831- nullptr, &perf_param_table_v2,
832 &tiling_schedule_config_table_v2));833 &tiling_schedule_config_table_v2));
833-ApiPerfRegister<ApiPerf> round_to_int_api_perf_v2(ApiPerfRegisterV2(kRoundToInt, GetPerfFunc(kRoundToInt + "V2"),834+ApiPerfRegister<ApiPerf> round_to_int_api_perf_v2(ApiPerfRegisterV2(kRoundToInt, kRoundToInt + "V2", nullptr,
834- nullptr, &perf_param_table_v2,835+ &perf_param_table_v2,
835 &tiling_schedule_config_table_v2));836 &tiling_schedule_config_table_v2));
836-ApiPerfRegister<ApiPerf> xor_api_perf_v2(ApiPerfRegisterV2(kXor, GetPerfFunc(kXor + "V2"), nullptr,837+ApiPerfRegister<ApiPerf> xor_api_perf_v2(ApiPerfRegisterV2(kXor, kXor + "V2", nullptr, &perf_param_table_v2,
837- &perf_param_table_v2, &tiling_schedule_config_table_v2));838+ &tiling_schedule_config_table_v2));
838-ApiPerfRegister<ApiPerf> remainder_api_perf_v2(ApiPerfRegisterV2(kRemainder, GetPerfFunc(kRemainder + "V2"), nullptr,839+ApiPerfRegister<ApiPerf> remainder_api_perf_v2(ApiPerfRegisterV2(kRemainder, kRemainder + "V2", nullptr,
839 &perf_param_table_v2,840 &perf_param_table_v2,
840 &tiling_schedule_config_table_v2));841 &tiling_schedule_config_table_v2));
841-ApiPerfRegister<ApiPerf> modified_bessel_i0_api_perf_v2(ApiPerfRegisterV2(kModifiedBesselI0, GetPerfFunc(kUnitVector),842+ApiPerfRegister<ApiPerf> modified_bessel_i0_api_perf_v2(ApiPerfRegisterV2(kModifiedBesselI0, kUnitVector, nullptr,
842- nullptr, &perf_param_table_v2,843+ &perf_param_table_v2,
843 &tiling_schedule_config_table_v2));844 &tiling_schedule_config_table_v2));
844-ApiPerfRegister<ApiPerf> modified_bessel_i1_api_perf_v2(ApiPerfRegisterV2(kModifiedBesselI1, GetPerfFunc(kUnitVector),845+ApiPerfRegister<ApiPerf> modified_bessel_i1_api_perf_v2(ApiPerfRegisterV2(kModifiedBesselI1, kUnitVector, nullptr,
845- nullptr, &perf_param_table_v2,846+ &perf_param_table_v2,
846 &tiling_schedule_config_table_v2));847 &tiling_schedule_config_table_v2));
847-ApiPerfRegister<ApiPerf> modified_bessel_k0_api_perf_v2(ApiPerfRegisterV2(kModifiedBesselK0, GetPerfFunc(kUnitVector),848+ApiPerfRegister<ApiPerf> modified_bessel_k0_api_perf_v2(ApiPerfRegisterV2(kModifiedBesselK0, kUnitVector, nullptr,
848- nullptr, &perf_param_table_v2,849+ &perf_param_table_v2,
849 &tiling_schedule_config_table_v2));850 &tiling_schedule_config_table_v2));
850-ApiPerfRegister<ApiPerf> modified_bessel_k1_api_perf_v2(ApiPerfRegisterV2(kModifiedBesselK1, GetPerfFunc(kUnitVector),851+ApiPerfRegister<ApiPerf> modified_bessel_k1_api_perf_v2(ApiPerfRegisterV2(kModifiedBesselK1, kUnitVector, nullptr,
851- nullptr, &perf_param_table_v2,852+ &perf_param_table_v2,
852 &tiling_schedule_config_table_v2));853 &tiling_schedule_config_table_v2));
853-ApiPerfRegister<ApiPerf> i0_api_perf_v2(ApiPerfRegisterV2(kI0, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v2,854+ApiPerfRegister<ApiPerf> i0_api_perf_v2(ApiPerfRegisterV2(kI0, kUnitVector, nullptr, &perf_param_table_v2,
854 &tiling_schedule_config_table_v2));855 &tiling_schedule_config_table_v2));
855-ApiPerfRegister<ApiPerf> i0e_api_perf_v2(ApiPerfRegisterV2(kI0e, GetPerfFunc(kUnitVector), nullptr,856+ApiPerfRegister<ApiPerf> i0e_api_perf_v2(ApiPerfRegisterV2(kI0e, kUnitVector, nullptr, &perf_param_table_v2,
856- &perf_param_table_v2, &tiling_schedule_config_table_v2));857+ &tiling_schedule_config_table_v2));
857-ApiPerfRegister<ApiPerf> i1e_api_perf_v2(ApiPerfRegisterV2(kI1e, GetPerfFunc(kUnitVector), nullptr,858+ApiPerfRegister<ApiPerf> i1e_api_perf_v2(ApiPerfRegisterV2(kI1e, kUnitVector, nullptr, &perf_param_table_v2,
858- &perf_param_table_v2, &tiling_schedule_config_table_v2));859+ &tiling_schedule_config_table_v2));
859-ApiPerfRegister<ApiPerf> bessel_j0_api_perf_v2(ApiPerfRegisterV2(kBesselJ0, GetPerfFunc(kUnitVector), nullptr,860+ApiPerfRegister<ApiPerf> bessel_j0_api_perf_v2(ApiPerfRegisterV2(kBesselJ0, kUnitVector, nullptr, &perf_param_table_v2,
860- &perf_param_table_v2,
861 &tiling_schedule_config_table_v2));861 &tiling_schedule_config_table_v2));
862-ApiPerfRegister<ApiPerf> bessel_j1_api_perf_v2(ApiPerfRegisterV2(kBesselJ1, GetPerfFunc(kUnitVector), nullptr,862+ApiPerfRegister<ApiPerf> bessel_j1_api_perf_v2(ApiPerfRegisterV2(kBesselJ1, kUnitVector, nullptr, &perf_param_table_v2,
863- &perf_param_table_v2,
864 &tiling_schedule_config_table_v2));863 &tiling_schedule_config_table_v2));
865-ApiPerfRegister<ApiPerf> bessel_y0_api_perf_v2(ApiPerfRegisterV2(kBesselY0, GetPerfFunc(kUnitVector), nullptr,864+ApiPerfRegister<ApiPerf> bessel_y0_api_perf_v2(ApiPerfRegisterV2(kBesselY0, kUnitVector, nullptr, &perf_param_table_v2,
866- &perf_param_table_v2,
867 &tiling_schedule_config_table_v2));865 &tiling_schedule_config_table_v2));
868-ApiPerfRegister<ApiPerf> bessel_y1_api_perf_v2(ApiPerfRegisterV2(kBesselY1, GetPerfFunc(kUnitVector), nullptr,866+ApiPerfRegister<ApiPerf> bessel_y1_api_perf_v2(ApiPerfRegisterV2(kBesselY1, kUnitVector, nullptr, &perf_param_table_v2,
869- &perf_param_table_v2,
870 &tiling_schedule_config_table_v2));867 &tiling_schedule_config_table_v2));
871-ApiPerfRegister<ApiPerf> scaled_modified_bessel_k0_api_perf_v2(ApiPerfRegisterV2(kScaledModifiedBesselK0,868+ApiPerfRegister<ApiPerf> scaled_modified_bessel_k0_api_perf_v2(ApiPerfRegisterV2(kScaledModifiedBesselK0, kUnitVector,
872- GetPerfFunc(kUnitVector), nullptr,869+ nullptr, &perf_param_table_v2,
873- &perf_param_table_v2,
874 &tiling_schedule_config_table_v2));870 &tiling_schedule_config_table_v2));
875-ApiPerfRegister<ApiPerf> scaled_modified_bessel_k1_api_perf_v2(ApiPerfRegisterV2(kScaledModifiedBesselK1,871+ApiPerfRegister<ApiPerf> scaled_modified_bessel_k1_api_perf_v2(ApiPerfRegisterV2(kScaledModifiedBesselK1, kUnitVector,
876- GetPerfFunc(kUnitVector), nullptr,872+ nullptr, &perf_param_table_v2,
877- &perf_param_table_v2,
878 &tiling_schedule_config_table_v2));873 &tiling_schedule_config_table_v2));
879-ApiPerfRegister<ApiPerf> spherical_bessel_j0_api_perf_v2(ApiPerfRegisterV2(kSphericalBesselJ0, GetPerfFunc(kUnitVector),874+ApiPerfRegister<ApiPerf> spherical_bessel_j0_api_perf_v2(ApiPerfRegisterV2(kSphericalBesselJ0, kUnitVector, nullptr,
880- nullptr, &perf_param_table_v2,875+ &perf_param_table_v2,
881 &tiling_schedule_config_table_v2));876 &tiling_schedule_config_table_v2));
882-ApiPerfRegister<ApiPerf> igamma_api_perf_v2(ApiPerfRegisterV2(kIgamma, GetPerfFunc(kUnitVector), nullptr,877+ApiPerfRegister<ApiPerf> igamma_api_perf_v2(ApiPerfRegisterV2(kIgamma, kUnitVector, nullptr, &perf_param_table_v2,
883- &perf_param_table_v2, &tiling_schedule_config_table_v2));878+ &tiling_schedule_config_table_v2));
884-ApiPerfRegister<ApiPerf> igammac_api_perf_v2(ApiPerfRegisterV2(kIgammac, GetPerfFunc(kUnitVector), nullptr,879+ApiPerfRegister<ApiPerf> igammac_api_perf_v2(ApiPerfRegisterV2(kIgammac, kUnitVector, nullptr, &perf_param_table_v2,
885- &perf_param_table_v2, &tiling_schedule_config_table_v2));880+ &tiling_schedule_config_table_v2));
886-ApiPerfRegister<ApiPerf> zeta_api_perf_v2(ApiPerfRegisterV2(kZeta, GetPerfFunc(kUnitVector), nullptr,881+ApiPerfRegister<ApiPerf> zeta_api_perf_v2(ApiPerfRegisterV2(kZeta, kUnitVector, nullptr, &perf_param_table_v2,
887- &perf_param_table_v2, &tiling_schedule_config_table_v2));882+ &tiling_schedule_config_table_v2));
888-ApiPerfRegister<ApiPerf> ndtr_api_perf_v2(ApiPerfRegisterV2(kNdtr, GetPerfFunc(kUnitVector), nullptr,883+ApiPerfRegister<ApiPerf> ndtr_api_perf_v2(ApiPerfRegisterV2(kNdtr, kUnitVector, nullptr, &perf_param_table_v2,
889- &perf_param_table_v2, &tiling_schedule_config_table_v2));884+ &tiling_schedule_config_table_v2));
890-ApiPerfRegister<ApiPerf> ndtri_api_perf_v2(ApiPerfRegisterV2(kNdtri, GetPerfFunc(kUnitVector), nullptr,885+ApiPerfRegister<ApiPerf> ndtri_api_perf_v2(ApiPerfRegisterV2(kNdtri, kUnitVector, nullptr, &perf_param_table_v2,
891- &perf_param_table_v2, &tiling_schedule_config_table_v2));886+ &tiling_schedule_config_table_v2));
892-ApiPerfRegister<ApiPerf> logndtr_api_perf_v2(ApiPerfRegisterV2(kLogNdtr, GetPerfFunc(kUnitVector), nullptr,887+ApiPerfRegister<ApiPerf> logndtr_api_perf_v2(ApiPerfRegisterV2(kLogNdtr, kUnitVector, nullptr, &perf_param_table_v2,
893- &perf_param_table_v2, &tiling_schedule_config_table_v2));888+ &tiling_schedule_config_table_v2));
894-ApiPerfRegister<ApiPerf> nextafter_api_perf_v2(ApiPerfRegisterV2(kNextAfter, GetPerfFunc(kUnitVector), nullptr,889+ApiPerfRegister<ApiPerf> nextafter_api_perf_v2(ApiPerfRegisterV2(kNextAfter, kUnitVector, nullptr, &perf_param_table_v2,
895- &perf_param_table_v2,
896 &tiling_schedule_config_table_v2));890 &tiling_schedule_config_table_v2));
897-ApiPerfRegister<ApiPerf> polygamma_api_perf_v2(ApiPerfRegisterV2(kPolyGamma, GetPerfFunc(kUnitVector), nullptr,891+ApiPerfRegister<ApiPerf> polygamma_api_perf_v2(ApiPerfRegisterV2(kPolyGamma, kUnitVector, nullptr, &perf_param_table_v2,
898- &perf_param_table_v2,
899 &tiling_schedule_config_table_v2));892 &tiling_schedule_config_table_v2));
900-ApiPerfRegister<ApiPerf> signbit_api_perf_v2(ApiPerfRegisterV2(kSignBit, GetPerfFunc(kUnitVector), nullptr,893+ApiPerfRegister<ApiPerf> signbit_api_perf_v2(ApiPerfRegisterV2(kSignBit, kUnitVector, nullptr, &perf_param_table_v2,
901- &perf_param_table_v2, &tiling_schedule_config_table_v2));894+ &tiling_schedule_config_table_v2));
902-ApiPerfRegister<ApiPerf> frexp_api_perf_v2(ApiPerfRegisterV2(kFrexp, GetPerfFunc(kUnitVector), nullptr,895+ApiPerfRegister<ApiPerf> frexp_api_perf_v2(ApiPerfRegisterV2(kFrexp, kUnitVector, nullptr, &perf_param_table_v2,
903- &perf_param_table_v2, &tiling_schedule_config_table_v2));896+ &tiling_schedule_config_table_v2));
904-ApiPerfRegister<ApiPerf> shifted_chebyshev_polynomial_t_api_perf_v2(897+ApiPerfRegister<ApiPerf> shifted_chebyshev_polynomial_t_api_perf_v2(ApiPerfRegisterV2(
905- ApiPerfRegisterV2(kShiftedChebyshevPolynomialT, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v2,898+ kShiftedChebyshevPolynomialT, kUnitVector, nullptr, &perf_param_table_v2, &tiling_schedule_config_table_v2));
906- &tiling_schedule_config_table_v2));899+ApiPerfRegister<ApiPerf> shifted_chebyshev_polynomial_u_api_perf_v2(ApiPerfRegisterV2(
907-ApiPerfRegister<ApiPerf> shifted_chebyshev_polynomial_u_api_perf_v2(900+ kShiftedChebyshevPolynomialU, kUnitVector, nullptr, &perf_param_table_v2, &tiling_schedule_config_table_v2));
908- ApiPerfRegisterV2(kShiftedChebyshevPolynomialU, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v2,901+ApiPerfRegister<ApiPerf> shifted_chebyshev_polynomial_v_api_perf_v2(ApiPerfRegisterV2(
909- &tiling_schedule_config_table_v2));902+ kShiftedChebyshevPolynomialV, kUnitVector, nullptr, &perf_param_table_v2, &tiling_schedule_config_table_v2));
910-ApiPerfRegister<ApiPerf> shifted_chebyshev_polynomial_v_api_perf_v2(903+ApiPerfRegister<ApiPerf> shifted_chebyshev_polynomial_w_api_perf_v2(ApiPerfRegisterV2(
911- ApiPerfRegisterV2(kShiftedChebyshevPolynomialV, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v2,904+ kShiftedChebyshevPolynomialW, kUnitVector, nullptr, &perf_param_table_v2, &tiling_schedule_config_table_v2));
912- &tiling_schedule_config_table_v2));905+ApiPerfRegister<ApiPerf> chebyshev_polynomial_t_api_perf_v2(ApiPerfRegisterV2(kChebyshevPolynomialT, kUnitVector,
913-ApiPerfRegister<ApiPerf> shifted_chebyshev_polynomial_w_api_perf_v2(906+ nullptr, &perf_param_table_v2,
914- ApiPerfRegisterV2(kShiftedChebyshevPolynomialW, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v2,907+ &tiling_schedule_config_table_v2));
915- &tiling_schedule_config_table_v2));908+ApiPerfRegister<ApiPerf> chebyshev_polynomial_u_api_perf_v2(ApiPerfRegisterV2(kChebyshevPolynomialU, kUnitVector,
916-ApiPerfRegister<ApiPerf> chebyshev_polynomial_t_api_perf_v2(ApiPerfRegisterV2(909+ nullptr, &perf_param_table_v2,
917- kChebyshevPolynomialT, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v2, &tiling_schedule_config_table_v2));910+ &tiling_schedule_config_table_v2));
918-ApiPerfRegister<ApiPerf> chebyshev_polynomial_u_api_perf_v2(ApiPerfRegisterV2(911+ApiPerfRegister<ApiPerf> chebyshev_polynomial_v_api_perf_v2(ApiPerfRegisterV2(kChebyshevPolynomialV, kUnitVector,
919- kChebyshevPolynomialU, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v2, &tiling_schedule_config_table_v2));912+ nullptr, &perf_param_table_v2,
920-ApiPerfRegister<ApiPerf> chebyshev_polynomial_v_api_perf_v2(ApiPerfRegisterV2(913+ &tiling_schedule_config_table_v2));
921- kChebyshevPolynomialV, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v2, &tiling_schedule_config_table_v2));914+ApiPerfRegister<ApiPerf> chebyshev_polynomial_w_api_perf_v2(ApiPerfRegisterV2(kChebyshevPolynomialW, kUnitVector,
922-ApiPerfRegister<ApiPerf> chebyshev_polynomial_w_api_perf_v2(ApiPerfRegisterV2(915+ nullptr, &perf_param_table_v2,
923- kChebyshevPolynomialW, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v2, &tiling_schedule_config_table_v2));916+ &tiling_schedule_config_table_v2));
924-ApiPerfRegister<ApiPerf> hermite_polynomial_h_api_perf_v2(ApiPerfRegisterV2(917+ApiPerfRegister<ApiPerf> hermite_polynomial_h_api_perf_v2(ApiPerfRegisterV2(kHermitePolynomialH, kUnitVector, nullptr,
925- kHermitePolynomialH, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v2, &tiling_schedule_config_table_v2));918+ &perf_param_table_v2,
926-ApiPerfRegister<ApiPerf> hermite_polynomial_he_api_perf_v2(ApiPerfRegisterV2(919+ &tiling_schedule_config_table_v2));
927- kHermitePolynomialHe, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v2, &tiling_schedule_config_table_v2));920+ApiPerfRegister<ApiPerf> hermite_polynomial_he_api_perf_v2(ApiPerfRegisterV2(kHermitePolynomialHe, kUnitVector, nullptr,
928-ApiPerfRegister<ApiPerf> laguerre_polynomial_l_api_perf_v2(ApiPerfRegisterV2(921+ &perf_param_table_v2,
929- kLaguerrePolynomialL, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v2, &tiling_schedule_config_table_v2));922+ &tiling_schedule_config_table_v2));
930-ApiPerfRegister<ApiPerf> legendre_polynomial_p_api_perf_v2(ApiPerfRegisterV2(923+ApiPerfRegister<ApiPerf> laguerre_polynomial_l_api_perf_v2(ApiPerfRegisterV2(kLaguerrePolynomialL, kUnitVector, nullptr,
931- kLegendrePolynomialP, GetPerfFunc(kUnitVector), nullptr, &perf_param_table_v2, &tiling_schedule_config_table_v2));924+ &perf_param_table_v2,
932-ApiPerfRegister<ApiPerf> airy_ai_api_perf_v2(ApiPerfRegisterV2(kAiryAi, GetPerfFunc(kUnitVector), nullptr,925+ &tiling_schedule_config_table_v2));
933- &perf_param_table_v2, &tiling_schedule_config_table_v2));926+ApiPerfRegister<ApiPerf> legendre_polynomial_p_api_perf_v2(ApiPerfRegisterV2(kLegendrePolynomialP, kUnitVector, nullptr,
934-ApiPerfRegister<ApiPerf> erfinv_api_perf_v2(ApiPerfRegisterV2(kErfinv, GetPerfFunc(kUnitVector), nullptr,927+ &perf_param_table_v2,
935- &perf_param_table_v2, &tiling_schedule_config_table_v2));928+ &tiling_schedule_config_table_v2));
936-ApiPerfRegister<ApiPerf> rand_api_perf_v2(ApiPerfRegisterV2(kRand, GetPerfFunc(kUnitVector), nullptr,929+ApiPerfRegister<ApiPerf> airy_ai_api_perf_v2(ApiPerfRegisterV2(kAiryAi, kUnitVector, nullptr, &perf_param_table_v2,
937- &perf_param_table_v2, &tiling_schedule_config_table_v2));930+ &tiling_schedule_config_table_v2));
938-ApiPerfRegister<ApiPerf> randn_api_perf_v2(ApiPerfRegisterV2(kRandn, GetPerfFunc(kUnitVector), nullptr,931+ApiPerfRegister<ApiPerf> erfinv_api_perf_v2(ApiPerfRegisterV2(kErfinv, kUnitVector, nullptr, &perf_param_table_v2,
939- &perf_param_table_v2, &tiling_schedule_config_table_v2));932+ &tiling_schedule_config_table_v2));
940-ApiPerfRegister<ApiPerf> square_api_perf_v2(ApiPerfRegisterV2(kSquare, GetPerfFunc(kSquare + "V2"), nullptr,933+ApiPerfRegister<ApiPerf> rand_api_perf_v2(ApiPerfRegisterV2(kRand, kUnitVector, nullptr, &perf_param_table_v2,
941- &perf_param_table_v2, &tiling_schedule_config_table_v2));934+ &tiling_schedule_config_table_v2));
935+ApiPerfRegister<ApiPerf> randn_api_perf_v2(ApiPerfRegisterV2(kRandn, kUnitVector, nullptr, &perf_param_table_v2,
936+ &tiling_schedule_config_table_v2));
937+ApiPerfRegister<ApiPerf> square_api_perf_v2(ApiPerfRegisterV2(kSquare, kSquare + "V2", nullptr, &perf_param_table_v2,
938+ &tiling_schedule_config_table_v2));
942 939 
943ApiPerfRegister<ApiPerf> vector_func_api_perf(kVectorFunc, DefaultGetPerf, nullptr, &perf_param_table_v2,940ApiPerfRegister<ApiPerf> vector_func_api_perf(kVectorFunc, DefaultGetPerf, nullptr, &perf_param_table_v2,
944 &tiling_schedule_config_table_v2);941 &tiling_schedule_config_table_v2);