在CANN的文档中关于Stream的介绍如下:
Stream是一个任务队列,应用程序通过Stream来管理任务的并行,一个Stream内部的任务保序执行,即Stream根据发送过来的任务依次执行
我的理解是,一个AI core同时只能运行一个stream,stream类似于一个队列,然后在AI core空闲时再按照顺序去执行stream里面的内容。这样的理解有问题吗?
举个例子,我使用的Ascend310B4只有一个AI Core,假如有三个算子a1,a2,a3,我按照顺序创建三个stream,分别执行a1,a2,a3,相当于是算子a1运行完成后再去运行a2,a2运行完成后再去运行a3。是这样的吗?
CUDA的编程模型中可以创建多个Thread来发挥并行能力,我想知道在CANN中该怎么发挥昇腾NPU的并行能力?还是说只有多个AI Core的昇腾设备才行?或者说一个AI Core可以同时并行执行多个Stream?

在CANN的文档中关于Stream的介绍如下:
Stream是一个任务队列,应用程序通过Stream来管理任务的并行,一个Stream内部的任务保序执行,即Stream根据发送过来的任务依次执行我的理解是,一个AI core同时只能运行一个stream,stream类似于一个队列,然后在AI core空闲时再按照顺序去执行stream里面的内容。这样的理解有问题吗?
举个例子,我使用的Ascend310B4只有一个AI Core,假如有三个算子a1,a2,a3,我按照顺序创建三个stream,分别执行a1,a2,a3,相当于是算子a1运行完成后再去运行a2,a2运行完成后再去运行a3。是这样的吗?
CUDA的编程模型中可以创建多个Thread来发挥并行能力,我想知道在CANN中该怎么发挥昇腾NPU的并行能力?还是说只有多个AI Core的昇腾设备才行?或者说一个AI Core可以同时并行执行多个Stream?