开发者
资源

基础知识

本节内容为使用Reg矢量计算APISIMT API进行SIMD与SIMT混合编程的指导。

Vector Core中,SIMT单元和SIMD单元共享片上存储,因此可以利用片上存储Unified Buffer完成SIMD与SIMT混合编程,具体硬件架构的介绍请参考NPU架构版本351x。在进行后续内容的学习前,请先了解SIMD与SIMT混合编程的编程模型:SIMD与SIMT混合编程

SIMD编程提供了基于寄存器(Regbase)开发的Reg矢量计算API,Reg矢量计算API可以直接操作Vector Core中的SIMD寄存器,API单次处理的数据量上限等于寄存器的大小,通过GetVecLen接口获取该值。在算子实现中,需要多次调用Reg矢量计算API完成对单核数据的处理。

与SIMD编程不同的是,在SIMT编程中Global Memory上的数据可以被直接读取和使用。SIMT编程常通过组织线程的层次结构来实现数据的切分,使用threadIdx等SIMT BuiltIn关键字计算线程应处理的数据索引,完成索引对应数据的计算,从而将函数实现简化为标量计算。