• 【2023 · CANN训练营第一季】应用开发(初级)——第一章 AscendCL概述


    image.png

    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参数。

    主要接口调用流程

    image.png

  • 相关阅读:
    python后端面试笔记,祝愿秋招拿到满意的offer。
    038-JTable控件应用案例讲解
    JJJ:grep合集
    .net程序员的android studio 初体验 (环境设置2022年10月)
    kubernetes日志收集 fluent-operator 动态索引名的实现
    Spark面试题
    基于协作mimo系统的RM编译码误码率matlab仿真,对比硬判决译码和软判决译码
    基于SSH的医院在线挂号系统设计与实现
    Python 数据可视化 boxplot
    第一行代码 Android 第九章9.1-9.2(WebView的用法,使用HttpURLConnect发送HTTP请求,使用OkHttp发送HTTP请求)
  • 原文地址:https://blog.csdn.net/qq_45257495/article/details/130874724