分享好友 最新动态首页 最新动态分类 切换频道
转载:【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酱的文章 - 知乎

                最新文章
                目前续航排名前五的手机,荣耀夺得两个席位,iQOO第一实至名归
                续航是一款手机非常重要的体验之一,毕竟作为一款数码产品,没有电一切都是白搭,而从目前第三方平台公布的续航测试来看,排名前五的手机中,荣耀夺得了两个席位,第一名的iQOO手机实至名归。iQOOZ7xiQOOZ7x能够排在第一的位置并不奇怪,因
                深圳外贸网站SEO优化策略全解析
                在全球化经济的大潮中,越来越多的深圳企业开始涉足国际市场,而利用网站进行外贸推广已成为企业拓展海外市场的重要方式。然而,在众多企业的网站竞争中,如何脱颖而出,成为摆在每个企业面前的一大难题。搜索引擎优化(SEO),尤其是针对
                致远互联董秘回复:致远互联的低代码开发平台经历了四次具有里程碑意义的迭代
                证券之星消息,致远互联(688369)12月18日在投资者关系平台上答复投资者关心的问题。投资者:董秘你好,能否介绍一下公司低代码业务都有那些功能谢谢致远互联董秘:尊敬的投资者,您好,致远互联的低代码开发平台经历了四次具有里程碑意义的
                网站制作公司如何成为优秀的网站建设商
                随着互联网技术的飞速发展和普及,越来越多的企业开始意识到拥有一个优质网站制作的重要性。在这样的背景下,网站制作公司应运而生,成为帮助企业打造专业、高效、有吸引力的网站的重要力量。然而,要成为一家优秀的网站建设商并非易事,需
                【黑马早报】许家印私人飞机寻求挂牌出售;贾跃亭前妻甘薇首次回应“7天还12亿”;小米王化辟谣拒招35岁以上员工;周黑鸭创始人被卡磁炉炸伤...
                今日头条国家网信办集中整治网上金融信息乱象据网信中国公众号11日消息,国家网信办正集中整治网上金融信息乱象。今年以来,国家网信办深入贯彻落实党中央国务院工作部署,对网上金融信息乱象保持高压严打态势,会同相关部门处置一批在抖音
                搜狗五笔输入法电脑版下载
                输入法在电脑中是非常重要的,而现在使用最多就数搜狗输入法了。但不知道小伙伴们听过搜狗的另一款输入法—搜狗五笔输入法吗?对于习惯使用五笔打字的用户,搜狗五笔输入法是非常不错的产品。那么我们该如何下载安装纯净无捆绑的搜狗五笔输
                【EDGE千牛下载】华为EDGE千牛9.8.316免费下载
                千牛-卖家移动工作台,阿里巴巴官方出品,适用于淘宝、天猫、1688和Alibaba.com的商家。2021年千牛9.0全新发布,0元极速开店。天猫商家一站式店铺管理工作台,千万商家都在使用。更多官方工具,等您解锁体验:1、商品管理工具·支持扫码或
                步步高VIVO Y18L卡刷包 v1.24.3完整ROOT权限 官方rom包
                步步高VIVO Y18L刷机包 v1.24.3 ROM包是一款基于官方足心推出的拥有完整ROOT权限、深度精简、细节优化、美化流畅等细节特色的刷机包工具,适合所有VIVO Y18L手机使用哦,有需要的朋友们可以前来下载此款VIVO Y18L卡刷rom包哦。刷机包介绍 R
                策略游戏大全 人气高的策略游戏排行榜
                探索策略游戏巅峰之作!《策略游戏大全》揭示人气高涨的排行榜,带你领略战术与智慧的较量。从经典战役到创新设计,无论是历史重现还是未来幻想,这里有玩家最爱的top10精选。一探究竟,看谁能在这策略竞技场中笑到最后!《德斯塔:记忆之
                淋浴房品牌排行榜介绍 想要最舒适的体验看过来
                很多人都喜欢在家庭中洗澡,不喜欢一些大众洗浴,因此,不少人都会在家中安装淋浴房。淋浴房的品牌非常之多,不过要想从诸多品牌当中选出最合适的还是有点儿难度的,最重要的一点就是质量要好,质量好的产品用户们都比较青睐,而且淋浴房会
                相关文章
                推荐文章
                发表评论
                0评