---
title: 基础知识
description: "本节内容为使用Reg矢量计算API(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendcopapi/atlasascendc_api_07_0311.html)和SIMT API(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendcopapi/atlasascendc_api_07_0426.html)进行SIMD与SIMT混合编程的指导。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/programug/Ascendcopdevg/atlas_ascendc_10_10039.html
sourcePath: /source/zh/canncommercial/900/programug/Ascendcopdevg/atlas_ascendc_10_10039.html
indexId: 13dd59f198c0ed327e4818526d876d453676362ea77ef255ada416242910079d81
---
# 基础知识

本节内容为使用Reg矢量计算API(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendcopapi/atlasascendc_api_07_0311.html)和SIMT API(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendcopapi/atlasascendc_api_07_0426.html)进行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(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendcopapi/atlasascendc_api_07_0190.html)接口获取该值。在算子实现中，需要多次调用Reg矢量计算API完成对单核数据的处理。

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