---
title: 深度解读昇腾CANN多流并行技术，提高硬件资源利用率-官方技术文章-昇腾社区
description: 本文深度解读昇腾CANN多流并行技术&#xff0c;提高硬件资源利用率。
keywords: CANN,深度解读昇腾,提高硬件资源利用率,官方技术文章,昇腾社区,前言,多流并行技术实现,多流并行执行效果
url: https://www.hiascend.com/developer/techArticles/20240701-1
section: (其他)
---

# 深度解读昇腾CANN多流并行技术，提高硬件资源利用率-官方技术文章-昇腾社区

URL: https://www.hiascend.com/developer/techArticles/20240701-1
描述: 本文深度解读昇腾CANN多流并行技术&#xff0c;提高硬件资源利用率。
关键词: CANN,深度解读昇腾,提高硬件资源利用率,官方技术文章,昇腾社区,前言,多流并行技术实现,多流并行执行效果

官方技术文章 [了解详情](https://www.hiascend.com/zh/developer/techArticles)

深度解读昇腾CANN多流并行技术，提高硬件资源利用率

深度解读昇腾CANN多流并行技术，提高硬件资源利用率

昇腾CANN

发表于: 2024/07/01

7.6k

18

## 01 前言

随着人工智能应用日益成熟，文本、图片、音频、视频等非结构化数据的处理需求呈指数级增长，数据处理过程从通用计算逐步向异构计算过渡。面对多样化的计算需求，昇腾AI处理器内置丰富的硬件计算资源用于处理不同的计算任务。其中，AI Core、Vector Core与AI CPU分别负责AI计算场景下的矩阵、向量与标量计算，DVPP支持图像、视频等数据的加速处理，而HCCL作为华为集合通信库，则提供单机多卡及多机多卡间的数据并行、模型并行集合通信方案。

在给定硬件算力的情况下，如何高效利用这些计算资源、提高计算效率显得尤其重要。多样化的计算任务以task的形式下发到各硬件资源执行，GE（Graph Engine）图引擎采用多流并行算法，在满足计算图任务内部依赖关系的前提下，支持高效并发执行计算任务，从而大大提高硬件资源利用率和AI计算效率。

## 02 多流并行技术实现

计算图编译时，GE会为计算图中的每个节点分配一个硬件资源（即对应一种执行引擎），在任务执行时按编译时分配的Stream调度顺序下发到对应的引擎执行。

各引擎使用不同的硬件计算资源，若同一时间只能执行某种引擎的一个task，则其余引擎会处于闲置状态，导致硬件资源严重浪费，影响端到端性能。若采用多流并行技术，在满足依赖关系的前提下，将不同task下发到对应的引擎上，驱动各个引擎并行执行，则可大大提升硬件资源的利用率。

GE采用了多流并行算法，将计算图的拓扑结构、硬件资源规格和执行引擎作为计算要素，为每个节点分配Stream。Stream与硬件资源绑定，任务执行时会按编译时分配的stream调度顺序下发到对应的引擎执行。同一Stream上的任务串行执行，不同Stream间的任务并发执行，从而提升硬件计算资源利用率。

GE多流并行技术的实现流程如下：

1、基于网络节点功能和硬件资源特性，给每个节点分配执行引擎。

2、基于网络拓扑结构和每个节点的执行引擎，为每个节点分配Stream。分配Stream时会同时考虑硬件规格、资源利用率等，提升并发度。

3、不同Stream间可以进行同步来保证执行时序。

GE多流并行主要包含以下场景：

（1）计算与通信引擎并行：计算算子（如Convolution、Add等）会生成计算task，通信算子（HcomAllReduce等）会生成卡间通信task，两类task无拓扑依赖时可并发执行。

（2）不同计算引擎并行：矩阵运算（AI Core）、向量运算（Vector Core）和图像预处理（DVPP）等不同引擎的task，可下发到不同的引擎上并发执行。

（3）相同计算引擎内并行：当计算图中某个节点无法占满一个计算引擎的全部计算资源，且拓扑结构可并发时，该引擎的不同拓扑集合的task可并发执行。

## 03 多流并行执行效果

并行执行效果跟网络拓扑结构、节点引擎类型、AI处理器能力等因素存在相关性，理论最优并行场景下，整网执行时长为耗时最长的Stream的执行时长，其余Stream的执行时长都掩盖在该Stream的时长内。如下图所示，通信耗时可以掩盖在计算耗时内，向量计算耗时可以掩盖在矩阵运算耗时内。

基于Atlas 800I A2推理产品，在经过计算通信流水并行优化后，LLaMA-65B参数模型全量图执行性能提升30%左右，盘古系列71B参数模型全量图执行性能提升15%左右。

然而，多流并行是一种资源换执行效率的技术，会占用更多的Device流资源，一般来说，静态shape场景下开启多流并行后，内存占用增加7%左右，用户可结合实际情况选择使用。

## 04 如何使能多流并行技术

GE的多流并行技术是基于深度学习计算图模式下的计算优化手段，例如，基于昇腾硬件的Pytorch框架计算图场景下，可通过如下方式开启计算通信并行功能。

```
import torchair as tng
config = tng.CompilerConfig()
# 图单流执行
config.ge_config.enable_single_stream = False
# 开启计算通信并行
config.experimental_config.cc_parallel_enable = True
npu_backend = tng.get_npu_backend(compiler_config=config)
...
model = Model()
model = torch.compile(model, backend=npu_backend, dynamic=False)
```

## 05 更多介绍

GE多流并行技术的介绍就到这里，欢迎大家关注后续技术分享。如需获取更多学习资源请登录昇腾社区 [了解详情](https://www.hiascend.com/)。

往期推荐：《深度解读昇腾CANN计算图优化技术，提升整网执行效率》 [了解详情](https://www.hiascend.com/zh/developer/techArticles/20240621-1?envFlag=1)

点赞 18

本页内容

01 前言 [了解详情](https://www.hiascend.com/#id-1)

02 多流并行技术实现 [了解详情](https://www.hiascend.com/#id-2)

03 多流并行执行效果 [了解详情](https://www.hiascend.com/#id-3)

04 如何使能多流并行技术 [了解详情](https://www.hiascend.com/#id-4)

05 更多介绍 [了解详情](https://www.hiascend.com/#id-5)
