mskpp.tiling_func
功能说明
调用用户的tiling函数。目前仅该接口的部分参数支持输入list[tensor],调用mskpp.get_kernel_from_binary返回的CompiledKernel不支持传入list[tensor]。

调用tiling_func函数时,会在当前目录生成_mskpp_gen_tiling.cpp和_mskpp_gen_tiling.so文件,该文件仅用于开发问题定位,用户无需关注。
函数原型
def tiling_func(op_type: str, inputs: list, outputs: list, lib_path: str, inputs_info: list = None, outputs_info: list = None, attr=None, soc_version: str = None) -> TilingOutput
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
op_type |
输入 |
需根据tiling函数的实现填写,例如AddCustom、 MatmulLeakyreluCustom等。msKPP工具查找tiling函数的唯一依据,查找逻辑请参见lib_path参数。 数据类型:str。 必选参数。 说明:
若CANN中曾经部署过相同类型的算子(op_type),用户修改了tiling函数并重新编译,则需要在CANN环境中重新部署该算子。 |
inputs |
输入 |
按Kernel函数入参顺序填入tensor信息,不使用某个参数的情况,对应位置请传入None占位。 数据类型为list,每个元素必须是tensor或者list[tensor],不在inputs_info中显式指定format或者ori_format时,所有tensor默认为ND格式。 必选参数。 |
outputs |
输入 |
按Kernel函数入参顺序填入tensor信息,不使用某个参数的情况,对应位置请传入None占位。 数据类型:list,每个元素必须是tensor或者list[tensor],不在inputs_info中显式指定format或者ori_format时,所有tensor默认为ND格式 必选参数。 |
inputs_info |
输入 |
按Kernel函数入参顺序填写info信息,不使用某个参数的情况,对应位置请传入空dict或者None占位。 数据类型为list,inputs_info参数中元素的数据类型为dict或list[dict],每个dict的元素说明如下:
举例如下: [{"ori_shape": [8, 2048], "shape": [8, 2048], "dtype": "float16", "ori_format": "ND", "format": "ND"}, {"ori_shape": [8, 2048], "shape": [8, 2048], "dtype": "float16", "ori_format": "ND", "format": "ND"}] 可选参数。 说明:
该输入参数和inputs存在约束关系:
|
outputs_info |
输入 |
存放输出的信息,不使用某个参数的情况,对应位置请传入空dict占位。 数据类型为list,outputs_info参数中元素的数据类型为dict或list[dict],每个dict的元素说明如下:
举例如下: [{"shape": [8, 2048], "dtype": "float16", "format": "ND"}, {"shape": [8, 2048], "dtype": "float16", "format": "ND"}] 可选参数。 说明:
该输入参数和inputs存在约束关系:
|
attr |
输入 |
tiling函数使用到的算子属性。 数据类型:dict或者list。 说明:
可选参数。 |
lib_path |
输入 |
msOpGen工程编译生成的liboptiling.so文件的路径,可在工程目录下通过find . -name 'liboptiling.so'进行查找。msKPP工具会按已部署算子、.so文件的查找顺序获取用户tiling函数。 数据类型:str。 可选参数。 |
soc_version |
输入 |
配置为昇腾AI处理器的类型。 可选参数。 说明:
|
返回值说明
参数名 |
说明 |
---|---|
blockdim |
用户tiling函数配置的核数。 数据类型:int。 |
workspace_size |
用户申请的workspace大小。若用户未设置,msKPP工具默认配置为8。 数据类型:int。 |
tiling_data |
存放tiling_data,用于调用Kernel函数。 数据类型:numpy.array。 |
tiling_key |
用户tiling函数配置的tiling_key,若用户未设置,msKPP工具会默认设置为0。 数据类型:int。 |
调用示例
M = 1024 N = 640 K = 256 input_a = np.random.randint(1, 10, [M, K]).astype(np.float16) input_b = np.random.randint(1, 10, [K, N]).astype(np.float16) input_bias = np.random.randint(1, 10, [N]).astype(np.float32) output = np.zeros([M, N]).astype(np.float32) # tiling data tiling_output = mskpp.tiling_func( op_type="MatmulLeakyreluCustom", inputs=[input_a, input_b, input_bias], outputs=[output], lib_path="liboptiling.so", # tiling代码编译产物 )