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代码编译产物 
)