AscendC算子学习笔记

   Ascend C算子是昇腾(Ascend)AI处理器上的一种编程语言,用于实现算法和模型在AI处理器上的高效执行。它采用了流水线式的编程范式,将算子核内的处理程序分成多个流水任务,并通过队列完成任务间通信和同步,通过统一的内存管理模块管理任务间通信内存。这种流水编程范式应用了流水线并行计算方法,能够提高整网运行性能。 
   Ascend C算子的开发者可以通过官方教程文档和学习视频快速掌握如何开发Ascend C算子。对于深度开发者来说,他们需要更深入了解高性能编程技巧,理解编程模型和硬件架构,以及不同算子开发工程的区别,同时还可以使用高阶API来提升开发效率。 

%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20240723185330.jpg

   通过学习我了解到通用计算就是我们常写的一些在CPU上运行的计算,它擅长逻辑控制和串行计算,而AI计算相对通用计算来说,更擅长并行计算,可支持大规模的计算密集型任务。如下面左图所示,做一个矩阵乘,使用CPU计算需要三层for循环,而右图在昇腾AI处理器上使用vector计算单元,只需要两层for循环,最小计算代码能同时计算多个数据的乘加,更近一步,如果使用Cube计算单元,只需要一条语句就能完成一个矩阵乘的计算,这就是我们所说的SIMD(单指令多数据)。因此,我们通常使用AI处理器来进行大量的并行计算。

%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20240723185323.jpg

我还了解到并行计算架构抽象核心包含了几个大的部件,AI Core外面有一个Gobal Memory,是多个AI Core共享的,在AI Core内部有一块本地内存Local Memory,因为靠近计算单元,所以它的带宽会非常高,相对的容量就会很小,比如一般是几百K到1M。AI Core内部的核心组件有三个计算单元,标量计算单元、向量计算单元,矩阵计算单元。另外还有一个DMA搬运单元,DMA搬运单元负责在Global Memory和Local Memory之间搬运数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值