关键接口的说明如下(调用示例请参见单算子调用,系统支持的算子请参见《算子清单》):
调用函数:set_model_dir接口,设置加载模型文件的目录,目录下存放单算子模型文件(*.om文件)。
调用函数:load接口,从内存中加载单算子模型数据,由用户管理内存。单算子模型数据是指“单算子编译成*.om文件后,再将om文件读取到内存中”的数据。
算子选择器需由用户提前定义并实现,算子选择器的实现样例请参见《ATC工具使用指南》中的“专题 > TIK自定义算子动态Shape专题”:
def call_back_func(num_inputs, input_desc, num_outputs, output_desc, op_attr, aclop_kernel_desc): pass
用户自行编写代码逻辑实现Tiling策略选择、Tiling参数生成,并将调用函数:set_kernel_args接口,设置算子Tiling参数、执行并发数等。
如果需要将Host上数据传输到Device,则需要调用函数:memcpy接口(同步接口)或函数:memcpy_async接口(异步接口)通过内存复制的方式实现数据传输。
该方式下,每次调用函数:execute_v2接口执行算子,系统内部都会根据算子描述信息匹配内存中的模型。
该方式下,在调用函数:create_handle接口时,系统内部将算子描述信息匹配到内存中的模型,并缓存在Handle中,每次调用函数:execute_with_handle接口执行算子时,无需重复匹配算子与模型,因此在涉及多次执行同一个算子时,效率更高。Handle使用结束后,需调用函数:destroy_handle接口释放。
如果需要将Device上的算子执行结果数据传输到Host,则需要调用函数:memcpy接口(同步接口)或函数:memcpy_async接口(异步接口)通过内存复制的方式实现数据传输,然后再释放内存。