将需要溢出的内存拷贝到SPM Buffer中。
template <typename T> __aicore__ inline void WriteSpmBuffer(const LocalTensor<T>& writeLocal, const DataCopyParams& copyParams, int writeOffset = 0)
template <typename T> __aicore__ inline void WriteSpmBuffer((const LocalTensor<T>& writeLocal, const int writeSize, int writeOffset = 0)
参数名称 |
输入/输出 |
含义 |
---|---|---|
writeLocal |
输入 |
需要溢出的Local内存 |
copyParams |
输入 |
搬运参数,DataCopyParams类型,DataCopyParams结构定义请参考表2。 |
writeSize |
输入 |
拷贝的内存大小 |
writeoffset |
输入 |
溢出到SPM Buffer的偏移 |
Atlas 训练系列产品
Atlas推理系列产品AI Core
Atlas A2训练系列产品
无
TPipe pipe; TQue<QuePosition::VECIN, 1> inQueueSrcVecIn; int dataSize = 32; // 假设T为half类型,从ub上申请一块内存32 * sizeof(half)字节 int offset = 32; // 拷贝到spmBuffer时偏移32字节 pipe.InitBuffer(inQueueSrcVecIn, 1, dataSize * sizeof(half)); LocalTensor<half> writeLocal = inQueueSrcVecIn.AllocTensor<half>(); DataCopyParams copyParams{1, 2, 0, 0}; // 从ub上搬运一块长度为2个block的数据,一个block32byte pipe.WriteSpmBuffer(writeLocal, copyParams, offset);
TPipe pipe; TQue<QuePosition::VECIN, 1> inQueueSrcVecIn; int dataSize = 32; // 假设T为half类型,从ub上申请一块内存32 * sizeof(half)字节 int offset = 32; // 拷贝到spmBuffer时偏移32字节 pipe.InitBuffer(inQueueSrcVecIn, 1, dataSize * sizeof(half)); LocalTensor<half> writeLocal = inQueueSrcVecIn.AllocTensor<half>(); pipe.WriteSpmBuffer(writeLocal, dataSize, offset);