ACL基本概念
ACL基本概念
- Host:
Host指与Device相连接的X86服务器、ARM服务器,会利用Device提供的NN (Neural-Network )计算能力,完成业务。 - Device:
Device指安装了芯片的硬件设备,利用PCle接口与Host侧连接,为Host提供NN计算能力. - 同步/异步:
同步、异步是站在调用者和执行者的角度来观察的,在当前场景下,若在Host调用接口后不等待Device执行完成再返回,则表示Host的调度是异步的;若在Host调用接口后需等待Device执行完成再返回,则表示Host的调度是同步的。 - 进程/线程:
本课程中提及的进程、线程,若无特别注明,则表示Host上的进程、线程。 - Context:
Context作为一个容器,管理了所有对象(包括Stream、Event、设备内存等)的生命周期。不同Context的Stream.
不同Context的Event是完全隔离的,无法建立同步等待关系。
Context分为两种:
默认Context:调用aclrtSetDevice接口指定用于运算的Device时,系统会自动隐式创建一个默认Context,一个Device对应一个默认Context,默认Context不能通过aclrtDestroyContext接口来释放。
显式创建的Context:在进程或线程中调用aclrtCreateContext接口显式创建一个Context。
- Stream:
Stream用于维护一些异步操作的执行顺序,确保按照应用程序中的代码调用顺序在Device上执行。基于Stream的kernel执行和数据传输能够实现以下几种类型的并行:
Host运算操作和Device运算操作并行;
Host运算操作和“Host到Device的数据传输”并行;“Host到Device的数据传输”和Device运算操作并行
Device内的运算并行
Stream分两种:
默认Stream:调用aclrtSetDevice接口指定用于运算的Device时,系统会自动隐式创建一个默认Stream,一个Device对应一个默认Stream,默认Stream不能通过aclrtDestroyStream接口来释放。
显式创建的Stream:在进程或线程中调用aclrtCreateStream接口显式创建一个Stream。
- Event:
支持调用ACL接口同步Stream之间的任务,包括同步Host与Device之间的任务、Device与Device间的任务.>例如,若stream2的任务依赖stream1的任务,想保证stream1中的任务先完成,这时可创建一个Event,并将Event插入到stream1,在执行stream2的任务前,先同步等待Event完成。 - 动态AIPP:
AIPP (Al Preprocessing)用于在Al Core上完成图像预处理,包括色域转换(转换图像格式)、图像归一化(减均值/乘系数)和抠图(指定抠图起始点,抠出神经网络需要大小的图片)等。>AIPP区分为静态AIPP和动态AIPP。您只能选择静态AIPP或动态AIPP方式来处理图片,不能同时配置静态AIPP和动态AIPP两种方式。
– 静态AIPP:模型转换时设置APP模式为静态,同时设置AIPP参数,模型生成后,AIPP参数值被保存在离线模型("om)中每次模型推理过程采用固定的AIPP预处理参数(无法修改)。
如果使用静态AIPP方式,多Batch情况下共用同一份AIPP参数。
– 动态AIPP:模型转换时仅设置AIPP模式为动态,每次模型推理前,根据需求,在执行模型前设置动态AIPP参数值,然后在模型执行时可使用不同的AIPP参数。设置动态AIPP参数值的接口请参见设置动态AIPP参数如果使用动态AIPP方式,多Batch可使用不同的AIPP参数。