分享好友 最新动态首页 最新动态分类 切换频道
转载:【AI系统】推理引擎示例:AscendCL
2024-12-28 07:40

AscendCL 作为华为 Ascend 系列 AI 处理器的软件开发框架,为用户提供了强大的编程支持。通过 AscendCL,开发者可以更加高效地进行 AI 应用的开发和优化,从而加速 AI 技术在各个领域的应用和落地。AscendCL 的易用性和高效性,使得它成为开发 AI 应用的重要工具之一。

本文将介绍 AscendCL 的概念、优势、应用场景以及基本开发流程。

AscendCL 基本介绍

AscendCL(Ascend Computing Language)是一套用于在昇腾平台上开发神经网络应用的 C 语言 API 库,提供运行资源管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等 API,能够实现利用昇腾硬件计算资源、在昇腾 CANN 平台上进行深度学习推理计算、图形图像预处理、单算子加速计算等能力。

简单来说,就是统一的 API 框架,实现对所有资源的调用。其中,计算资源层是昇腾 AI 处理器的硬件算力基础,主要完成神经网络的矩阵相关计算、完成控制算子/标量/向量等通用计算和执行控制功能、完成图像和视频数据的预处理,为神经网络计算提供了执行上的保障。

AscendCL 优势

AscendCL 优势主要有三个要点:

    AscendCL 应用场景

      基本概念

      Device、Context、Stream 关系

      下面将会介绍 Device、Context 和 Stream 在 AscendCL 框架中的作用及其相互关系:

        Device 的生命周期源于首次调用 aclrtSetDevice 接口。每次调用 aclrtSetDevice 接口,系统会进行引用计数加 1;调用 aclrtResetdevice 接口,系统会进行引用计数减 1。当引用计数减为零时,在本进程中 Device 上的资源不可用。

        2 Context,在 Device 下,一个 Context 一定属于一个唯一的 Device。

        Context 分隐式创建和显式创建。隐式创建的 Context(即默认 Context),生命周期始于调用 aclrtSetDevice 接口,终结于调用 aclrtResetdevice 接口使引用计数为零时。隐式 Context 只会被创建一次,调用 aclrtSetDevice 接口重复指定同一个 Device,只增加隐式创建的 Context 的引用计数。

        显式创建的 Context,生命周期始于调用 aclrtCreateContext 接口,终结于调用 aclrtDestroyContext 接口。若在某一进程内创建多个 Context(Context 的数量与 Stream 相关,Stream 数量有限制,请参见 aclrtCreateStream),当前线程在同一时刻内只能使用其中一个 Context,建议通过 aclrtSetCurrentContext 接口明确指定当前线程的 Context,增加程序的可维护性。

        值得注意的是,进程内的 Context 是共享的,可以通过 aclrtSetCurrentContext 进行切换。

        3. Stream,是 Device 上的执行流,在同一个 stream 中的任务执行严格保序。

        其中 Stream 分隐式创建和显式创建。每个 Context 都会包含一个默认 Stream,这个属于隐式创建,隐式创建的 stream 生命周期同归属的 Context。

        用户可以显式创建 stream,显式创建的 stream 生命周期始于调用 aclrtCreateStream,终结于调用 aclrtDestroyStream 接口。显式创建的 stream 归属的 Context 被销毁或生命周期结束后,会影响该 stream 的使用,虽然此时 stream 没有被销毁,但不可再用。

        4. Task/Kernel,是 Device 上真正的任务执行体。

        线程、Context、Stream 关系

        一个用户线程一定会绑定一个 Context,所有 Device 的资源使用或调度,都必须基于 Context。一个线程中当前会有一个唯一的 Context 在用,Context 中已经关联了本线程要使用的 Device。此时可以通过 aclrtSetCurrentContext 进行 Device 的快速切换。

        一个线程中可以创建多个 Stream,不同的 Stream 上计算任务是可以并行执行;多线程场景下,推荐每个线程创建一个 Stream,线程之间的 Stream 在 Device 上相互独立,每个 Stream 内部的任务是按照 Stream 下发的顺序执行。

        多线程的调度依赖于运行应用的操作系统调度,多 Stream 在 Device 侧的调度,由 Device 上调度组件进行调度。

        进程内多线程间 Context 切换

          默认 Context 和默认 Stream

          Device 上执行操作下发前,必须有 Context 和 Stream,这个 Context、Stream 可以显式创建,也可以隐式创建。隐式创建的 Context、Stream 就是默认 Context、默认 Stream。

          默认 Stream 作为接口入参时,直接传 NULL。

          默认 Context 不允许用户执行 aclrtGetCurrentContext 或 aclrtSetCurrentContext 操作,也不允许执行 aclrtDestroyContext 操作。

          默认 Context、默认 Stream 一般适用于简单应用,用户仅仅需要一个 Device 的计算场景下。多线程应用程序建议全部使用显式创建的 Context 和 Stream。

          多线程、多 Stream 性能考虑

          线程调度依赖运行的操作系统,Stream 上下发了任务后,Stream 的调度由 Device 的调度单元调度,但如果一个进程内的多 Stream 上的任务在 Device 存在资源争抢的时候,性能可能会比单 Stream 低。

          当前昇腾 AI 处理器有不同的执行部件,如 AI Core、AI CPU、Vector Core 等,对应使用不同执行部件的任务,建议多 Stream 的创建按照算子执行引擎划分。

          单线程多 Stream 与多线程多 Stream(一个进程中可以包含多个线程,每个线程中一个 Stream)性能上哪个更优,具体取决于应用本身的逻辑实现,一般来说前者性能略好,原因是相对后者,应用层少了线程调度开销。

          基本开发流程

          调用 AscendCL 接口,可开发包含模型推理、媒体数据处理、单算子调用等功能的应用,这些功能可以独立存在,也可以组合存在。下图给出了使用 AscendCL 接口开发 AI 应用的整体接口调用流程。

          上图根据应用开发中的典型功能抽象出主要的接口调用流程。例如,如果模型对输入图片的宽高要求与用户提供的源图不一致,则需要媒体数据处理,将源图裁剪成符合模型的要求;如果需要实现模型推理的功能,则需要先加载模型,模型推理结束后,则需要卸载模型;如果模型推理后,需要从推理结果中查找最大置信度的类别标识对图片分类,则需要数据后处理。

          其基本流程如下所示:

                4. 运行管理资源释放:所有数据处理都结束后,需要依次释放运行管理资源。

                5. AscendCL 去初始化:调用 aclFinalize 接口实现 AscendCL 去初始化。

                如果您想了解更多AI知识,与AI专业人士交流,请立即访问昇腾社区官方网站https://www.hiascend.com/或者深入研读《AI系统:原理与架构》一书,这里汇聚了海量的AI学习资源和实践课程,为您的AI技术成长提供强劲动力。不仅如此,您还有机会投身于全国昇腾AI创新大赛和昇腾AI开发者创享日等盛事,发现AI世界的无限奥秘~

                转载自:

                【AI系统】推理引擎示例:AscendCL - ZOMI酱的文章 - 知乎

                最新文章
                看久电子书下载阅读器(TxtReader有声小说朗读软件) v2.6.1 官方免费安装版
                看久电子书下载阅读器是一款模拟书本的电子书阅读器,为你提供一个方便的阅读平台,支持中文、英文、日语、各地方言等语言朗读,不但能够看小说,还能听小说,快来下载体验吧。 软件介绍 看久电子书下载阅读器(TxtReader有声小说朗读软件)
                创业投资行业潜力评估考核试卷
                创业投资行业潜力评估考核试卷考生姓名:答题日期:得分:判卷人:本次考核旨在评估考生对创业投资行业潜力评估的能力,考察其市场分析、风险评估、投资策略等方面的知识水平。通过本试卷,考生将展示其是否具备成为一名优秀创业投资行业从
                软件下载好轻松 不用下载全家桶——8个极度好用的软件下载网站
                各大软件官网,这个是不是相当于废话呢~~~虽然这是废话,但又是大实话。就像我们都熟悉的E宝(Eqic商城)和G胖(Steam),又或者是《原神》、《LOL》这些游戏,在官网下载的速度一般都是优于第三方网站。而且官方出品,靠谱且稳定,还不用
                谷歌商店下载官方正版安卓中文版下载
                谷歌商店下载官方正版2024最新版安装用户可以下载来自全球190多个国家/地区的软件、游戏、图书、影像和视频资源。它提供了强大的搜索功能,当你不知道玩什么时,可以方便地搜索你感兴趣的应用或游戏。此外,谷歌商店还会每日精心推荐一些免
                百度AI查分:一步一步全面解析104
                百度AI查分是什么?百度AI查分是百度公司推出的一个免费在线查分系统,它利用人工智能技术自动批改考卷,快速准确地给出试卷成绩和答题报告。该系统适用于多种题型,包括选择题、填空题、问答题等,覆盖了从小学到大学的各个学科。百度AI查
                我国研发经费GDP占比将升至2.2%
                《意见》将为构建科技型创新型社会奠定制度基础。  中共中央、国务院日前下发《关于深化科技体制改革加快国家创新体系建设的意见》(以下简称《意见》),明确要求“十二五”期间全社会研发经费达到GDP的2.2%,并确立企业技术创新地位。值
                重庆必应搜索推广怎么做
                在数字化营销的浪潮中,重庆作为西南地区的经济和文化中心,吸引了越来越多企业的注意。对于企业来说,如何通过网络推广吸引更多潜在客户,成为了摆在面前的一道难题。而重庆必应搜索推广正是一种既有效又具有性价比的线上营销方式。那么,
                免费的色谱网站有哪些-推荐几个实用的色谱技术学习和研究平台
                在科学实验和分析研究中,色谱技术扮演着至关重要的角色,尤其是在化学、生物和环境监测领域。随着互联网的发展,许多色谱技术的资源、工具和信息都可以通过一些免费的色谱网站进行访问和使用。对于学者、研究人员或学生来说,能找到一些有
                优化求解器
                SNOPT是一种高性能的优化求解器,主要用于求解非线性、非凸的优化问题。其名称是斯坦福大学数值优化软件(Stanford Optimization Software)的缩写。SNOPT在优化领域中具有广泛的应用,特别是在工程设计、经济学、金融学等领域。它采用了一
                如此“爬虫”?代码全省了
                大家好,我是章北海Jina AI 开源了 RAG 数据处理中的关键组件:“网页数据爬取” ——Reader,目前 3300+ Star⭐️项目地址:https://github.com/jina-ai/readerJina AI Reader 特征:免费使用开源延迟大概 2S 内,复杂的内容可能需要更多
                相关文章
                推荐文章
                发表评论
                0评