---
title: ReadSpmBuffer
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendcopapi/atlasascendc_api_07_0168.html
sourcePath: /source/zh/canncommercial/900/API/ascendcopapi/atlasascendc_api_07_0168.html
indexId: 36500d99635f08262e5bb219af3ee0e8b983770d84865a92286b36bf061c3c6876
---
# ReadSpmBuffer

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | x |
| Atlas 推理系列产品 AI Core | √ |
| Atlas 推理系列产品 Vector Core | x |
| Atlas 训练系列产品 | √ |


#### 功能说明

从SPM Buffer读回到local数据中。


#### 函数原型

- 适用于连续和不连续的数据回读：
  1 2 template <typename T> __aicore__ inline void ReadSpmBuffer(const LocalTensor<T>& readBuffer, const DataCopyParams& copyParams, int32_t readOffset = 0)


- 适用于连续的数据回读：
  1 2 template <typename T> __aicore__ inline void ReadSpmBuffer(const LocalTensor<T>& readBuffer, const int32_t readSize, int32_t readOffset = 0)


#### 参数说明


**表1 接口参数说明**

| 参数名称 | 输入/输出 | 含义 |
| --- | --- | --- |
| readBuffer | 输入 | 读回的目标local内存。 |
| copyParams | 输入 | 搬运参数，DataCopyParams类型，DataCopyParams结构定义请参考表2。 |
| readSize | 输入 | 读回的元素个数。 |
| readOffset | 输入 | SPM Buffer的偏移，单位为字节。 |


**表2 DataCopyParams结构体参数定义**

| 参数名称 | 含义 |
| --- | --- |
| blockCount | 待搬运的连续传输数据块个数。uint16\_t类型，取值范围：blockCount∈[1, 4095]。 |
| blockLen | 待搬运的每个连续传输数据块长度，单位为DataBlock（32字节）。uint16\_t类型，取值范围：blockLen∈[1, 65535]。 特殊情况： 当dst位于C2PIPE2GM时，单位为128B。 一般情况：当dst位于C2时，表示源操作数的连续传输数据块长度，单位为64B。针对Atlas 350 加速卡，当dst位于C2时，表示源操作数的连续传输数据长度，单位为32B。 |
| srcGap | 源操作数相邻连续数据块的间隔（前面一个数据块的尾与后面数据块的头的间隔），单位为DataBlock（32字节）。uint16\_t类型，srcGap不要超出该数据类型的取值范围。 在L1 Buffer \-> Fixpipe Buffer场景中，srcGap特指源操作数相邻连续数据块的间隔（前面一个数据块的头与后面数据块的头的间隔），单位为DataBlock（32字节）。uint16\_t类型，srcGap不要超出该数据类型的取值范围。 |
| dstGap | 目的操作数相邻连续数据块间的间隔（前面一个数据块的尾与后面数据块的头的间隔），单位为DataBlock（32字节）。uint16\_t类型，dstGap不要超出该数据类型的取值范围。 特殊情况： 当dst位于C2PIPE2GM时，单位为128B。 一般情况：当dst位于C2时，表示源操作数的连续传输数据块长度，单位为64B。针对Atlas 350 加速卡，当dst位于C2时，表示源操作数的连续传输数据长度，单位为32B。 在L1 Buffer \-> Fixpipe Buffer场景中，dstGap特指源操作数相邻连续数据块的间隔（前面一个数据块的头与后面数据块的头的间隔），单位为DataBlock（32字节）。uint16\_t类型，dstGap不要超出该数据类型的取值范围。 |


#### 约束说明

无


#### 返回值说明

无


#### 调用示例

调用样例请参考调用示例。
