1、在AscendCL中当提及“同步&异步”的时候,都是站在调用者、执行者的角度来看的。
同步:当前线程发起一个方法调用,然后阻塞在调用点等待被调用方法执行完毕返回,再继续向下走。
异步:调用者向执行者下发一个任务之后,不等待任务执行完,而是立即返回往下走,暂且不管这个任务是否执行完毕。
2、内存管理:HOST&DEVICE
做一项大量计算的任务,比如玩大型3D游戏,运行时环境通常有如下抽象过程:
1.游戏进程在CPU上启动,游戏数据加载进内存;
2.为了显示复杂的3D图像CPU给GPU发送绘图任务,并将必要的数据从内存中复制到显存中;
3.GPU从显存中获取数据,绘图,通过显卡上的图形接口将数据发送给显示器,显示器显示图像。
3、AscendCL初始化与去初始化
使用AscendCL接口开发应用时,必须先初始化AscendCl,否则可能会导致后续系统内部资源初始化出错,进而导致其它业务异常。有初始化就有去初始化,在确定完成了AscendCl的所有调用之后,或者进程退出之前,需调用AscendCL接口实现AscendCL去初始化。
使用aclmdlDesc类型的数据描述模型基本信息,例如输入/输出的个数、数据类型、Format、维度信息等。
使用aclDataBuffer类型的数据来描述每个输入/输出的内存地址、内存大小。
使用aclmdlDataset类型的数据描述模型的输入、输出数据集。
准备好模型执行所需的输入、输出数据类型后,存放好模型执行的输入数据后,可以执行模型推理了。当前AscendCl支持同步模型执行、异步模型执行两种方式,这里说的同步、异步是站在调用者和执行者的角度。
将AscendCL的应用高度抽象后,可以得到以下流程:
AscendCL初始化-—运行管理资源申请—执行业务—运行管理资源释放—AscendCL去初始化
4、应用开发接口主要提供三种能力:
1、深度学习推理计算;
2、图形图像预处理;
3、单算子加速计算。
总结
通过本次学习,我们掌握了基于目标检测模型扩展推理应用,这些知识点为我们在目标检测模型的扩展推理应用中打下了坚实的基础。通过结合这些技术,我们可以开发出更高效、更精确的推理应用。