昇腾社区首页
中文
注册

autotune

功能说明

遍历搜索空间,尝试不同参数组合,展示每个组合的运行耗时与最优组合。

函数原型

def autotune(configs: List[Dict], warmup: int = 300, repeat: int = 1, device_ids = [0]):

参数说明

参数名

输入/输出

说明

configs

输入

搜索空间定义。

数据类型:list[dict]。

必选参数。

warmup

输入

采集性能前的设备预热时间。通常情况下,预热时间越长,采集到的算子性能越稳定。

单位:微秒。

可选参数,默认值:1000,取值范围为1~100000之间的整数。

repeat

输入

重放次数,会根据多次重放取运行耗时的平均值作为算子耗时。

可选参数,默认值:1,取值范围为1~10000之间的整数。

device_ids

输入

Device ID列表,目前仅支持单Device模式,如果填写多个Device ID,只有第一个会生效。

可选参数,默认值:[0]。

返回值说明

无。

调用示例

@mskpp.autotune(configs=[
    {'L1TileShape': 'MatmulShape<64, 64, 64>', 'L0TileShape': 'MatmulShape<128, 256, 64>'},
    {'L1TileShape': 'MatmulShape<64, 64, 128>', 'L0TileShape': 'MatmulShape<128, 256, 64>'},
    {'L1TileShape': 'MatmulShape<64, 128, 128>', 'L0TileShape': 'MatmulShape<128, 256, 64>'},
    {'L1TileShape': 'MatmulShape<64, 128, 128>', 'L0TileShape': 'MatmulShape<64, 256, 64>'},
    {'L1TileShape': 'MatmulShape<128, 128, 128>', 'L0TileShape': 'MatmulShape<128, 256, 64>'},
], warmup=500, repeat=10, device_ids=[0])
def basic_matmul(problem_shape, a, layout_a, b, layout_b, c, layout_c):
    kernel = get_kernel()
    blockdim = 20
    return kernel[blockdim](problem_shape, a, layout_a, b, layout_b, c, layout_c)