Merged
修改数据搬运和资源管理等目录层次 #4604
JC1126Add on Jul 25
修改数据搬运和资源管理等目录层次 #4604
Merged
Merged fromJC1126/asc-devkitjc_0725intocann/asc-devkit9.1.0
Total: 166 files changed+653-691
| @@ -296,20 +296,18 @@ | |||
| 296 | - [掩码](SIMD-API/基础API/Memory矢量计算/SIMD计算说明/掩码.md) | 296 | - [掩码](SIMD-API/基础API/Memory矢量计算/SIMD计算说明/掩码.md) |
| 297 | 297 | ||
| 298 | - [数据搬运](SIMD-API/基础API/Memory矢量计算/数据搬运/数据搬运.md) | 298 | - [数据搬运](SIMD-API/基础API/Memory矢量计算/数据搬运/数据搬运.md) |
| 299 | - - [GM与UB数据搬运](SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/GM与UB数据搬运.md) | 299 | + - [DataCopy(GM与UB-连续数据搬运)](SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_GMAndUB_continuous.md) |
| 300 | - - [GM与UB连续数据搬运(DataCopy)](SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMAndUB_continuous.md) | 300 | + - [DataCopy(GM与UB-高维切分数据搬运)](SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_GMAndUB_highdim_split.md) |
| 301 | - - [GM与UB高维切分数据搬运(DataCopy)](SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMAndUB_highdim_split.md) | 301 | + - [DataCopy(GM与UB-切片数据搬运)](SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_GMAndUB_slice.md) |
| 302 | - - [GM与UB切片数据搬运(DataCopy)](SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMAndUB_slice.md) | 302 | + - [DataCopy(GM -> UB-随路转换ND2NZ搬运)](SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_GMToUB_ND2NZ.md) |
| 303 | - - [GMToUB随路转换ND2NZ搬运(DataCopy)](SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMToUB_ND2NZ.md) | 303 | + - [DataCopy(UB -> GM-随路转换NZ2ND搬运)](SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_UBToGM_NZ2ND.md) |
| 304 | - - [UBToGM随路转换NZ2ND搬运(DataCopy)](SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_UBToGM_NZ2ND.md) | 304 | + - [DataCopy(GM -> UB-多维数据搬运NDDMA)](SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_GMToUB_NDDMA.md) |
| 305 | - - [GMToUB多维数据搬运NDDMA(DataCopy)](SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMToUB_NDDMA.md) | 305 | + - [DataCopyPad(GM -> UB-非对齐数据搬运)](SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopyPad_GMToUB.md) |
| 306 | - - [GMToUB非对齐数据搬运(DataCopyPad)](SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopyPad_GMToUB.md) | 306 | + - [DataCopyPad(UB -> GM-非对齐数据搬运)](SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopyPad_UBToGM.md) |
| 307 | - - [UBToGM非对齐数据搬运(DataCopyPad)](SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopyPad_UBToGM.md) | 307 | + - [DataCopy(UB -> UB-连续数据搬运)](SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_UBToUB_continuous.md) |
| 308 | - - [UB与UB数据搬运](SIMD-API/基础API/Memory矢量计算/数据搬运/UB与UB数据搬运/UB与UB数据搬运.md) | 308 | + - [DataCopy(UB -> UB-高维切分数据搬运)](SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_UBToUB_highdim_split.md) |
| 309 | - - [UBToUB连续数据搬运(DataCopy)](SIMD-API/基础API/Memory矢量计算/数据搬运/UB与UB数据搬运/DataCopy_UBToUB_continuous.md) | 309 | + - [Copy(UB -> UB-连续数据搬运)](SIMD-API/基础API/Memory矢量计算/数据搬运/Copy_UBToUB_continuous.md) |
| 310 | - - [UBToUB高维切分数据搬运(DataCopy)](SIMD-API/基础API/Memory矢量计算/数据搬运/UB与UB数据搬运/DataCopy_UBToUB_highdim_split.md) | 310 | + - [Copy(UB -> UB-掩码式高维数据搬运)](SIMD-API/基础API/Memory矢量计算/数据搬运/Copy_UBToUB_mask_highdim_split.md) |
| 311 | - - [UBToUB连续数据搬运(Copy)](SIMD-API/基础API/Memory矢量计算/数据搬运/UB与UB数据搬运/Copy_UBToUB_continuous.md) | ||
| 312 | - - [UBToUB掩码式高维数据搬运(Copy)](SIMD-API/基础API/Memory矢量计算/数据搬运/UB与UB数据搬运/Copy_UBToUB_mask_highdim_split.md) | ||
| 313 | - [数据搬运辅助配置接口](SIMD-API/基础API/Memory矢量计算/数据搬运辅助配置接口/数据搬运辅助配置接口.md) | 311 | - [数据搬运辅助配置接口](SIMD-API/基础API/Memory矢量计算/数据搬运辅助配置接口/数据搬运辅助配置接口.md) |
| 314 | - [SetPadValue(ISASI)](SIMD-API/基础API/Memory矢量计算/数据搬运辅助配置接口/SetPadValue_ISASI.md) | 312 | - [SetPadValue(ISASI)](SIMD-API/基础API/Memory矢量计算/数据搬运辅助配置接口/SetPadValue_ISASI.md) |
| 315 | - [SetLoopModePara](SIMD-API/基础API/Memory矢量计算/数据搬运辅助配置接口/SetLoopModePara.md) | 313 | - [SetLoopModePara](SIMD-API/基础API/Memory矢量计算/数据搬运辅助配置接口/SetLoopModePara.md) |
| @@ -592,113 +590,106 @@ | |||
| 592 | - [ReadGmByPassDCache\(ISASI\)](SIMD-API/基础API/标量计算/ReadGmByPassDCache_ISASI.md) | 590 | - [ReadGmByPassDCache\(ISASI\)](SIMD-API/基础API/标量计算/ReadGmByPassDCache_ISASI.md) |
| 593 | 591 | ||
| 594 | - [资源管理](SIMD-API/基础API/资源管理/资源管理.md) | 592 | - [资源管理](SIMD-API/基础API/资源管理/资源管理.md) |
| 595 | - - [Pipe和Que框架](SIMD-API/基础API/资源管理/Pipe和Que框架/Pipe和Que框架.md) | 593 | + - [TPipe](SIMD-API/基础API/资源管理/TPipe/TPipe.md) |
| 596 | - - [TPipe](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/TPipe.md) | 594 | + - [TPipe简介](SIMD-API/基础API/资源管理/TPipe/TPipe简介.md) |
| 597 | - - [TPipe简介](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/TPipe简介.md) | 595 | + - [TPipe构造函数](SIMD-API/基础API/资源管理/TPipe/TPipe构造函数.md) |
| 598 | - - [TPipe构造函数](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/TPipe构造函数.md) | 596 | + - [Init](SIMD-API/基础API/资源管理/TPipe/Init.md) |
| 599 | - - [Init](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/Init.md) | 597 | + - [Destroy](SIMD-API/基础API/资源管理/TPipe/Destroy.md) |
| 600 | - - [Destroy](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/Destroy.md) | 598 | + - [DestroyWithoutPipeAll](SIMD-API/基础API/资源管理/TPipe/DestroyWithoutPipeAll.md) |
| 601 | - - [DestroyWithoutPipeAll](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/DestroyWithoutPipeAll.md) | 599 | + - [InitBuffer](SIMD-API/基础API/资源管理/TPipe/InitBuffer.md) |
| 602 | - - [InitBuffer](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/InitBuffer.md) | 600 | + - [Reset](SIMD-API/基础API/资源管理/TPipe/Reset.md) |
| 603 | - - [Reset](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/Reset.md) | 601 | + - [AllocEventID](SIMD-API/基础API/资源管理/TPipe/AllocEventID.md) |
| 604 | - - [AllocEventID](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/AllocEventID.md) | 602 | + - [ReleaseEventID](SIMD-API/基础API/资源管理/TPipe/ReleaseEventID.md) |
| 605 | - - [ReleaseEventID](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/ReleaseEventID.md) | 603 | + - [FetchEventID](SIMD-API/基础API/资源管理/TPipe/FetchEventID.md) |
| 606 | - - [FetchEventID](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/FetchEventID.md) | 604 | + - [GetBaseAddr](SIMD-API/基础API/资源管理/TPipe/GetBaseAddr.md) |
| 607 | - - [GetBaseAddr](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/GetBaseAddr.md) | 605 | + - [InitBufPool](SIMD-API/基础API/资源管理/TPipe/InitBufPool.md) |
| 608 | - - [InitBufPool](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/InitBufPool.md) | 606 | + - [InitSpmBuffer](SIMD-API/基础API/资源管理/TPipe/InitSpmBuffer.md) |
| 609 | - - [InitSpmBuffer](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/InitSpmBuffer.md) | 607 | + - [WriteSpmBuffer](SIMD-API/基础API/资源管理/TPipe/WriteSpmBuffer.md) |
| 610 | - - [WriteSpmBuffer](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/WriteSpmBuffer.md) | 608 | + - [ReadSpmBuffer](SIMD-API/基础API/资源管理/TPipe/ReadSpmBuffer.md) |
| 611 | - - [ReadSpmBuffer](SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/ReadSpmBuffer.md) | ||
| 612 | 609 | ||
| 613 | - - [GetTPipePtr](SIMD-API/基础API/资源管理/Pipe和Que框架/GetTPipePtr.md) | 610 | + - [GetTPipePtr](SIMD-API/基础API/资源管理/GetTPipePtr.md) |
| 614 | - - [TBufPool](SIMD-API/基础API/资源管理/Pipe和Que框架/TBufPool/TBufPool.md) | 611 | + - [TBufPool](SIMD-API/基础API/资源管理/TBufPool/TBufPool.md) |
| 615 | - - [TBufPool简介](SIMD-API/基础API/资源管理/Pipe和Que框架/TBufPool/TBufPool简介.md) | 612 | + - [TBufPool简介](SIMD-API/基础API/资源管理/TBufPool/TBufPool简介.md) |
| 616 | - - [TBufPool构造函数](SIMD-API/基础API/资源管理/Pipe和Que框架/TBufPool/TBufPool构造函数.md) | 613 | + - [TBufPool构造函数](SIMD-API/基础API/资源管理/TBufPool/TBufPool构造函数.md) |
| 617 | - - [InitBufPool](SIMD-API/基础API/资源管理/Pipe和Que框架/TBufPool/InitBufPool-55.md) | 614 | + - [InitBufPool](SIMD-API/基础API/资源管理/TBufPool/InitBufPool-55.md) |
| 618 | - - [InitBuffer](SIMD-API/基础API/资源管理/Pipe和Que框架/TBufPool/InitBuffer-56.md) | 615 | + - [InitBuffer](SIMD-API/基础API/资源管理/TBufPool/InitBuffer-56.md) |
| 619 | - - [Reset](SIMD-API/基础API/资源管理/Pipe和Que框架/TBufPool/Reset-57.md) | 616 | + - [Reset](SIMD-API/基础API/资源管理/TBufPool/Reset-57.md) |
| 620 | 617 | ||
| 621 | - - [自定义TBufPool](SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/自定义TBufPool.md) | 618 | + - [自定义TBufPool](SIMD-API/基础API/资源管理/自定义TBufPool/自定义TBufPool.md) |
| 622 | - - [EXTERN\_IMPL\_BUFPOOL宏](SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/EXTERN_IMPL_BUFPOOL宏.md) | 619 | + - [EXTERN\_IMPL\_BUFPOOL宏](SIMD-API/基础API/资源管理/自定义TBufPool/EXTERN_IMPL_BUFPOOL宏.md) |
| 623 | - - [Reset](SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/Reset-58.md) | 620 | + - [Reset](SIMD-API/基础API/资源管理/自定义TBufPool/Reset-58.md) |
| 624 | - - [Init](SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/Init-59.md) | 621 | + - [Init](SIMD-API/基础API/资源管理/自定义TBufPool/Init-59.md) |
| 625 | - - [GetBufHandle](SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/GetBufHandle.md) | 622 | + - [GetBufHandle](SIMD-API/基础API/资源管理/自定义TBufPool/GetBufHandle.md) |
| 626 | - - [SetCurAddr](SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/SetCurAddr.md) | 623 | + - [SetCurAddr](SIMD-API/基础API/资源管理/自定义TBufPool/SetCurAddr.md) |
| 627 | - - [GetCurAddr](SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/GetCurAddr.md) | 624 | + - [GetCurAddr](SIMD-API/基础API/资源管理/自定义TBufPool/GetCurAddr.md) |
| 628 | - - [SetCurBufSize](SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/SetCurBufSize.md) | 625 | + - [SetCurBufSize](SIMD-API/基础API/资源管理/自定义TBufPool/SetCurBufSize.md) |
| 629 | - - [GetCurBufSize](SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/GetCurBufSize.md) | 626 | + - [GetCurBufSize](SIMD-API/基础API/资源管理/自定义TBufPool/GetCurBufSize.md) |
| 630 | 627 | ||
| 631 | - - [TQue](SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/TQue.md) | 628 | + - [TQue](SIMD-API/基础API/资源管理/TQue/TQue.md) |
| 632 | - - [TQue简介](SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/TQue简介.md) | 629 | + - [TQue简介](SIMD-API/基础API/资源管理/TQue/TQue简介.md) |
| 633 | - - [AllocTensor](SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/AllocTensor.md) | 630 | + - [AllocTensor](SIMD-API/基础API/资源管理/TQue/AllocTensor.md) |
| 634 | - - [FreeTensor](SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/FreeTensor.md) | 631 | + - [FreeTensor](SIMD-API/基础API/资源管理/TQue/FreeTensor.md) |
| 635 | - - [EnQue](SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/EnQue.md) | 632 | + - [EnQue](SIMD-API/基础API/资源管理/TQue/EnQue.md) |
| 636 | - - [DeQue](SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/DeQue.md) | 633 | + - [DeQue](SIMD-API/基础API/资源管理/TQue/DeQue.md) |
| 637 | - - [VacantInQue](SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/VacantInQue.md) | 634 | + - [VacantInQue](SIMD-API/基础API/资源管理/TQue/VacantInQue.md) |
| 638 | - - [HasTensorInQue](SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/HasTensorInQue.md) | 635 | + - [HasTensorInQue](SIMD-API/基础API/资源管理/TQue/HasTensorInQue.md) |
| 639 | - - [GetTensorCountInQue](SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/GetTensorCountInQue.md) | 636 | + - [GetTensorCountInQue](SIMD-API/基础API/资源管理/TQue/GetTensorCountInQue.md) |
| 640 | - - [HasIdleBuffer](SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/HasIdleBuffer.md) | 637 | + - [HasIdleBuffer](SIMD-API/基础API/资源管理/TQue/HasIdleBuffer.md) |
| 641 | 638 | ||
| 642 | - - [TSCM](SIMD-API/基础API/资源管理/Pipe和Que框架/TSCM/TSCM.md) | 639 | + - [TSCM](SIMD-API/基础API/资源管理/TSCM/TSCM.md) |
| 643 | - - [TSCM简介](SIMD-API/基础API/资源管理/Pipe和Que框架/TSCM/TSCM简介.md) | 640 | + - [TSCM简介](SIMD-API/基础API/资源管理/TSCM/TSCM简介.md) |
| 644 | - - [AllocTensor](SIMD-API/基础API/资源管理/Pipe和Que框架/TSCM/AllocTensor-60.md) | 641 | + - [AllocTensor](SIMD-API/基础API/资源管理/TSCM/AllocTensor-60.md) |
| 645 | - - [FreeTensor](SIMD-API/基础API/资源管理/Pipe和Que框架/TSCM/FreeTensor-61.md) | 642 | + - [FreeTensor](SIMD-API/基础API/资源管理/TSCM/FreeTensor-61.md) |
| 646 | - - [EnQue](SIMD-API/基础API/资源管理/Pipe和Que框架/TSCM/EnQue-62.md) | 643 | + - [EnQue](SIMD-API/基础API/资源管理/TSCM/EnQue-62.md) |
| 647 | - - [DeQue](SIMD-API/基础API/资源管理/Pipe和Que框架/TSCM/DeQue-63.md) | 644 | + - [DeQue](SIMD-API/基础API/资源管理/TSCM/DeQue-63.md) |
| 648 | 645 | ||
| 649 | - - [TQueBind](SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/TQueBind.md) | 646 | + - [TQueBind](SIMD-API/基础API/资源管理/TQueBind/TQueBind.md) |
| 650 | - - [TQueBind简介](SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/TQueBind简介.md) | 647 | + - [TQueBind简介](SIMD-API/基础API/资源管理/TQueBind/TQueBind简介.md) |
| 651 | - - [TQueBind构造函数](SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/TQueBind构造函数.md) | 648 | + - [TQueBind构造函数](SIMD-API/基础API/资源管理/TQueBind/TQueBind构造函数.md) |
| 652 | - - [AllocTensor](SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/AllocTensor-64.md) | 649 | + - [AllocTensor](SIMD-API/基础API/资源管理/TQueBind/AllocTensor-64.md) |
| 653 | - - [FreeTensor](SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/FreeTensor-65.md) | 650 | + - [FreeTensor](SIMD-API/基础API/资源管理/TQueBind/FreeTensor-65.md) |
| 654 | - - [EnQue](SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/EnQue-66.md) | 651 | + - [EnQue](SIMD-API/基础API/资源管理/TQueBind/EnQue-66.md) |
| 655 | - - [DeQue](SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/DeQue-67.md) | 652 | + - [DeQue](SIMD-API/基础API/资源管理/TQueBind/DeQue-67.md) |
| 656 | - - [VacantInQue](SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/VacantInQue-68.md) | 653 | + - [VacantInQue](SIMD-API/基础API/资源管理/TQueBind/VacantInQue-68.md) |
| 657 | - - [HasTensorInQue](SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/HasTensorInQue-69.md) | 654 | + - [HasTensorInQue](SIMD-API/基础API/资源管理/TQueBind/HasTensorInQue-69.md) |
| 658 | - - [GetTensorCountInQue](SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/GetTensorCountInQue-70.md) | 655 | + - [GetTensorCountInQue](SIMD-API/基础API/资源管理/TQueBind/GetTensorCountInQue-70.md) |
| 659 | - - [HasIdleBuffer](SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/HasIdleBuffer-71.md) | 656 | + - [HasIdleBuffer](SIMD-API/基础API/资源管理/TQueBind/HasIdleBuffer-71.md) |
| 660 | - - [FreeAllEvent](SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/FreeAllEvent.md) | 657 | + - [FreeAllEvent](SIMD-API/基础API/资源管理/TQueBind/FreeAllEvent.md) |
| 661 | - - [InitBufHandle](SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/InitBufHandle.md) | 658 | + - [InitBufHandle](SIMD-API/基础API/资源管理/TQueBind/InitBufHandle.md) |
| 662 | - - [InitStartBufHandle](SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/InitStartBufHandle.md) | 659 | + - [InitStartBufHandle](SIMD-API/基础API/资源管理/TQueBind/InitStartBufHandle.md) |
| 663 | 660 | ||
| 664 | - - [TBuf](SIMD-API/基础API/资源管理/Pipe和Que框架/TBuf/TBuf.md) | 661 | + - [TBuf](SIMD-API/基础API/资源管理/TBuf/TBuf.md) |
| 665 | - - [TBuf简介](SIMD-API/基础API/资源管理/Pipe和Que框架/TBuf/TBuf简介.md) | 662 | + - [TBuf简介](SIMD-API/基础API/资源管理/TBuf/TBuf简介.md) |
| 666 | - - [TBuf构造函数](SIMD-API/基础API/资源管理/Pipe和Que框架/TBuf/TBuf构造函数.md) | 663 | + - [TBuf构造函数](SIMD-API/基础API/资源管理/TBuf/TBuf构造函数.md) |
| 667 | - - [Get](SIMD-API/基础API/资源管理/Pipe和Que框架/TBuf/Get.md) | 664 | + - [Get](SIMD-API/基础API/资源管理/TBuf/Get.md) |
| 668 | - - [GetWithOffset](SIMD-API/基础API/资源管理/Pipe和Que框架/TBuf/GetWithOffset.md) | 665 | + - [GetWithOffset](SIMD-API/基础API/资源管理/TBuf/GetWithOffset.md) |
| 669 | 666 | ||
| 670 | - - [临时空间管理](SIMD-API/基础API/资源管理/临时空间管理/临时空间管理.md) | 667 | + - [workspace](SIMD-API/基础API/资源管理/workspace/workspace1.md) |
| 671 | - - [workspace](SIMD-API/基础API/资源管理/临时空间管理/workspace/workspace1.md) | 668 | + - [GetSysWorkSpacePtr](SIMD-API/基础API/资源管理/workspace/GetSysWorkSpacePtr.md) |
| 672 | - - [GetSysWorkSpacePtr](SIMD-API/基础API/资源管理/临时空间管理/workspace/GetSysWorkSpacePtr.md) | 669 | + - [SetSysWorkSpace](SIMD-API/基础API/资源管理/workspace/SetSysWorkSpace.md) |
| 673 | - - [SetSysWorkSpace](SIMD-API/基础API/资源管理/临时空间管理/workspace/SetSysWorkSpace.md) | 670 | + - [GetUserWorkspace](SIMD-API/基础API/资源管理/workspace/GetUserWorkspace.md) |
| 674 | - - [GetUserWorkspace](SIMD-API/基础API/资源管理/临时空间管理/workspace/GetUserWorkspace.md) | ||
| 675 | 671 | ||
| 676 | - - [PopStackBuffer](SIMD-API/基础API/资源管理/临时空间管理/PopStackBuffer.md) | 672 | + - [PopStackBuffer](SIMD-API/基础API/资源管理/PopStackBuffer.md) |
| 677 | 673 | ||
| 678 | - - [内存管理](SIMD-API/基础API/资源管理/内存管理/内存管理.md) | 674 | + - [LocalMemAllocator](SIMD-API/基础API/资源管理/LocalMemAllocator/LocalMemAllocator.md) |
| 679 | - - [LocalMemAllocator](SIMD-API/基础API/资源管理/内存管理/LocalMemAllocator/LocalMemAllocator.md) | 675 | + - [LocalMemAllocator简介](SIMD-API/基础API/资源管理/LocalMemAllocator/LocalMemAllocator简介.md) |
| 680 | - - [LocalMemAllocator简介](SIMD-API/基础API/资源管理/内存管理/LocalMemAllocator/LocalMemAllocator简介.md) | 676 | + - [LocalMemAllocator构造函数](SIMD-API/基础API/资源管理/LocalMemAllocator/LocalMemAllocator构造函数.md) |
| 681 | - - [LocalMemAllocator构造函数](SIMD-API/基础API/资源管理/内存管理/LocalMemAllocator/LocalMemAllocator构造函数.md) | 677 | + - [GetCurAddr](SIMD-API/基础API/资源管理/LocalMemAllocator/GetCurAddr-72.md) |
| 682 | - - [GetCurAddr](SIMD-API/基础API/资源管理/内存管理/LocalMemAllocator/GetCurAddr-72.md) | 678 | + - [Alloc](SIMD-API/基础API/资源管理/LocalMemAllocator/Alloc.md) |
| 683 | - - [Alloc](SIMD-API/基础API/资源管理/内存管理/LocalMemAllocator/Alloc.md) | ||
| 684 | 679 | ||
| 685 | - [同步控制](SIMD-API/基础API/同步控制/同步控制.md) | 680 | - [同步控制](SIMD-API/基础API/同步控制/同步控制.md) |
| 686 | - [系统同步能力概述](SIMD-API/基础API/同步控制/系统同步能力概述.md) | 681 | - [系统同步能力概述](SIMD-API/基础API/同步控制/系统同步能力概述.md) |
| 687 | - [核内同步](SIMD-API/基础API/同步控制/核内同步/核内同步.md) | 682 | - [核内同步](SIMD-API/基础API/同步控制/核内同步/核内同步.md) |
| 688 | - [核内同步能力概述](SIMD-API/基础API/同步控制/核内同步/核内同步能力概述.md) | 683 | - [核内同步能力概述](SIMD-API/基础API/同步控制/核内同步/核内同步能力概述.md) |
| 689 | - [关键特性说明](SIMD-API/基础API/同步控制/核内同步/关键特性说明.md) | 684 | - [关键特性说明](SIMD-API/基础API/同步控制/核内同步/关键特性说明.md) |
| 690 | - - [TQueSync](SIMD-API/基础API/同步控制/核内同步/TQueSync/TQueSync.md) | 685 | + - [TQueSync模板参数](SIMD-API/基础API/同步控制/核内同步/TQueSync模板参数.md) |
| 691 | - - [模板参数](SIMD-API/基础API/同步控制/核内同步/TQueSync/模板参数.md) | 686 | + - [SetFlag/WaitFlag](SIMD-API/基础API/同步控制/核内同步/SetFlag-WaitFlag.md) |
| 692 | - - [SetFlag/WaitFlag](SIMD-API/基础API/同步控制/核内同步/TQueSync/SetFlag-WaitFlag.md) | ||
| 693 | - | ||
| 694 | - [SetFlag/WaitFlag\(ISASI\)](SIMD-API/基础API/同步控制/核内同步/SetFlag_WaitFlag_ISASI.md) | 687 | - [SetFlag/WaitFlag\(ISASI\)](SIMD-API/基础API/同步控制/核内同步/SetFlag_WaitFlag_ISASI.md) |
| 695 | - [PipeBarrier\(ISASI\)](SIMD-API/基础API/同步控制/核内同步/PipeBarrier_ISASI.md) | 688 | - [PipeBarrier\(ISASI\)](SIMD-API/基础API/同步控制/核内同步/PipeBarrier_ISASI.md) |
| 696 | - [DataSyncBarrier\(ISASI\)](SIMD-API/基础API/同步控制/核内同步/DataSyncBarrier_ISASI.md) | 689 | - [DataSyncBarrier\(ISASI\)](SIMD-API/基础API/同步控制/核内同步/DataSyncBarrier_ISASI.md) |
| 697 | - - [Mutex(ISASI)](SIMD-API/基础API/同步控制/核内同步/Mutex_ISASI/Mutex_ISASI.md) | 690 | + - [Mutex(ISASI)](SIMD-API/基础API/同步控制/核内同步/Mutex_ISASI.md) |
| 698 | - - [简介](SIMD-API/基础API/同步控制/核内同步/Mutex_ISASI/简介.md) | 691 | + - [Lock](SIMD-API/基础API/同步控制/核内同步/Lock.md) |
| 699 | - - [Lock](SIMD-API/基础API/同步控制/核内同步/Mutex_ISASI/Lock.md) | 692 | + - [Unlock](SIMD-API/基础API/同步控制/核内同步/Unlock.md) |
| 700 | - - [Unlock](SIMD-API/基础API/同步控制/核内同步/Mutex_ISASI/Unlock.md) | ||
| 701 | - | ||
| 702 | - [AllocMutexID \(ISASI\)](SIMD-API/基础API/同步控制/核内同步/AllocMutexID_ISASI.md) | 693 | - [AllocMutexID \(ISASI\)](SIMD-API/基础API/同步控制/核内同步/AllocMutexID_ISASI.md) |
| 703 | - [ReleaseMutexID \(ISASI\)](SIMD-API/基础API/同步控制/核内同步/ReleaseMutexID_ISASI.md) | 694 | - [ReleaseMutexID \(ISASI\)](SIMD-API/基础API/同步控制/核内同步/ReleaseMutexID_ISASI.md) |
| 704 | 695 | ||
| @@ -988,13 +979,12 @@ | |||
| 988 | - [Reg矢量计算](SIMD-API/C-API/reg/Reg矢量计算.md) | 979 | - [Reg矢量计算](SIMD-API/C-API/reg/Reg矢量计算.md) |
| 989 | - [reg数据类型定义](SIMD-API/C-API/reg/reg数据类型定义.md) | 980 | - [reg数据类型定义](SIMD-API/C-API/reg/reg数据类型定义.md) |
| 990 | - [reg_load](SIMD-API/C-API/reg/reg_load/reg_load.md) | 981 | - [reg_load](SIMD-API/C-API/reg/reg_load/reg_load.md) |
| 991 | - - [asc_loadalign](SIMD-API/C-API/reg/reg_load/asc_loadalign/asc_loadalign.md) | 982 | + - [asc_loadalign_v1](SIMD-API/C-API/reg/reg_load/asc_loadalign_v1.md) |
| 992 | - - [asc_loadalign_v1](SIMD-API/C-API/reg/reg_load/asc_loadalign/asc_loadalign_v1.md) | 983 | + - [asc_loadalign_v2](SIMD-API/C-API/reg/reg_load/asc_loadalign_v2.md) |
| 993 | - - [asc_loadalign_v2](SIMD-API/C-API/reg/reg_load/asc_loadalign/asc_loadalign_v2.md) | 984 | + - [asc_loadalign_v3](SIMD-API/C-API/reg/reg_load/asc_loadalign_v3.md) |
| 994 | - - [asc_loadalign_v3](SIMD-API/C-API/reg/reg_load/asc_loadalign/asc_loadalign_v3.md) | 985 | + - [asc_loadalign_v4](SIMD-API/C-API/reg/reg_load/asc_loadalign_v4.md) |
| 995 | - - [asc_loadalign_v4](SIMD-API/C-API/reg/reg_load/asc_loadalign/asc_loadalign_v4.md) | 986 | + - [asc_loadalign_v5](SIMD-API/C-API/reg/reg_load/asc_loadalign_v5.md) |
| 996 | - - [asc_loadalign_v5](SIMD-API/C-API/reg/reg_load/asc_loadalign/asc_loadalign_v5.md) | 987 | + - [asc_loadalign_v6](SIMD-API/C-API/reg/reg_load/asc_loadalign_v6.md) |
| 997 | - - [asc_loadalign_v6](SIMD-API/C-API/reg/reg_load/asc_loadalign/asc_loadalign_v6.md) | ||
| 998 | - [asc_loadalign_postupdate](SIMD-API/C-API/reg/reg_load/asc_loadalign_postupdate.md) | 988 | - [asc_loadalign_postupdate](SIMD-API/C-API/reg/reg_load/asc_loadalign_postupdate.md) |
| 999 | - [asc_loadalign_deintlv](SIMD-API/C-API/reg/reg_load/asc_loadalign_deintlv.md) | 989 | - [asc_loadalign_deintlv](SIMD-API/C-API/reg/reg_load/asc_loadalign_deintlv.md) |
| 1000 | - [asc_loadalign_deintlv_postupdate](SIMD-API/C-API/reg/reg_load/asc_loadalign_deintlv_postupdate.md) | 990 | - [asc_loadalign_deintlv_postupdate](SIMD-API/C-API/reg/reg_load/asc_loadalign_deintlv_postupdate.md) |
| @@ -1007,12 +997,11 @@ | |||
| 1007 | - [asc_loadunalign_postupdate](SIMD-API/C-API/reg/reg_load/asc_loadunalign_postupdate.md) | 997 | - [asc_loadunalign_postupdate](SIMD-API/C-API/reg/reg_load/asc_loadunalign_postupdate.md) |
| 1008 | - [asc_scatter(废弃)](SIMD-API/C-API/reg/reg_load/asc_scatter_deprecated.md) | 998 | - [asc_scatter(废弃)](SIMD-API/C-API/reg/reg_load/asc_scatter_deprecated.md) |
| 1009 | - [reg_store](SIMD-API/C-API/reg/reg_store/reg_store.md) | 999 | - [reg_store](SIMD-API/C-API/reg/reg_store/reg_store.md) |
| 1010 | - - [asc_storealign](SIMD-API/C-API/reg/reg_store/asc_storealign/asc_storealign.md) | 1000 | + - [asc_storealign_v1](SIMD-API/C-API/reg/reg_store/asc_storealign_v1.md) |
| 1011 | - - [asc_storealign_v1](SIMD-API/C-API/reg/reg_store/asc_storealign/asc_storealign_v1.md) | 1001 | + - [asc_storealign_v2](SIMD-API/C-API/reg/reg_store/asc_storealign_v2.md) |
| 1012 | - - [asc_storealign_v2](SIMD-API/C-API/reg/reg_store/asc_storealign/asc_storealign_v2.md) | 1002 | + - [asc_storealign_v3](SIMD-API/C-API/reg/reg_store/asc_storealign_v3.md) |
| 1013 | - - [asc_storealign_v3](SIMD-API/C-API/reg/reg_store/asc_storealign/asc_storealign_v3.md) | 1003 | + - [asc_storealign_v4](SIMD-API/C-API/reg/reg_store/asc_storealign_v4.md) |
| 1014 | - - [asc_storealign_v4](SIMD-API/C-API/reg/reg_store/asc_storealign/asc_storealign_v4.md) | 1004 | + - [asc_storealign_v5](SIMD-API/C-API/reg/reg_store/asc_storealign_v5.md) |
| 1015 | - - [asc_storealign_v5](SIMD-API/C-API/reg/reg_store/asc_storealign/asc_storealign_v5.md) | ||
| 1016 | - [asc_store](SIMD-API/C-API/reg/reg_store/asc_store.md) | 1005 | - [asc_store](SIMD-API/C-API/reg/reg_store/asc_store.md) |
| 1017 | - [asc_storeunalign](SIMD-API/C-API/reg/reg_store/asc_storeunalign.md) | 1006 | - [asc_storeunalign](SIMD-API/C-API/reg/reg_store/asc_storeunalign.md) |
| 1018 | - [asc_storeunalign_post](SIMD-API/C-API/reg/reg_store/asc_storeunalign_post.md) | 1007 | - [asc_storeunalign_post](SIMD-API/C-API/reg/reg_store/asc_storeunalign_post.md) |
| @@ -337,7 +337,12 @@ Reg数据搬运类API,单独使用时可以引入reg_load.h,此类API列表 | |||
| 337 | | API名称 | 说明 | | 337 | | API名称 | 说明 | |
| 338 | |----------|-----------| | 338 | |----------|-----------| |
| 339 | | [asc_load](reg/reg_load/asc_load.md) | reg计算数据搬运接口,支持从UB非32字节对齐的源地址src搬运至矢量数据寄存器,搬运量为VL。 | | 339 | | [asc_load](reg/reg_load/asc_load.md) | reg计算数据搬运接口,支持从UB非32字节对齐的源地址src搬运至矢量数据寄存器,搬运量为VL。 | |
| 340 | -| [asc_loadalign](reg/reg_load/asc_loadalign/asc_loadalign.md) | 对齐数据搬运接口,从UB连续对齐搬入目的操作数,支持多种搬入模式。 | | 340 | +| [asc_loadalign_v1](reg/reg_load/asc_loadalign_v1.md) | 对齐数据搬运接口,从UB连续对齐搬入目的操作数,支持多种搬入模式,接口不传入偏移,需要由用户自行更新源操作数的地址。 | |
| 341 | +| [asc_loadalign_v2](reg/reg_load/asc_loadalign_v2.md) | 对齐数据搬运接口,从UB连续对齐搬入目的操作数,支持多种搬入模式,接口通过地址寄存器传入偏移,用户可以选择更新偏移或者更新源操作数的地址。 | | ||
| 342 | +| [asc_loadalign_v3](reg/reg_load/asc_loadalign_v3.md) | 对齐数据搬运接口,从UB连续对齐搬入目的操作数,支持多种搬入模式,接口通过int32_t传入偏移,用户可以选择更新偏移或者更新源操作数的地址。 | | ||
| 343 | +| [asc_loadalign_v4](reg/reg_load/asc_loadalign_v4.md) | 对齐数据搬运接口,从UB连续对齐搬入目的操作数,支持多种搬入模式,接口通过int32_t传入偏移,同时设置成硬件自动Post Update,用户不用更新偏移或者更新源操作数的地址。 | | ||
| 344 | +| [asc_loadalign_v5](reg/reg_load/asc_loadalign_v5.md) | 对齐数据搬运接口,从UB连续对齐搬入目的操作数,支持多种搬入模式,接口使用repeat stride模式。 | | ||
| 345 | +| [asc_loadalign_v6](reg/reg_load/asc_loadalign_v6.md) | reg数据搬运接口,适用于从UB搬入MaskReg。 | | ||
| 341 | | [asc_loadalign_deintlv](reg/reg_load/asc_loadalign_deintlv.md) | 对齐数据搬运接口,从UB连续对齐搬入目的操作数,随路完成deinterleave操作。 | | 346 | | [asc_loadalign_deintlv](reg/reg_load/asc_loadalign_deintlv.md) | 对齐数据搬运接口,从UB连续对齐搬入目的操作数,随路完成deinterleave操作。 | |
| 342 | | [asc_loadalign_deintlv_postupdate](reg/reg_load/asc_loadalign_deintlv_postupdate.md) | 对齐数据搬运接口,从UB连续对齐搬入目的操作数,随路完成deinterleave操作,启用postupdate模式,自动更新UB地址参数。 | | 347 | | [asc_loadalign_deintlv_postupdate](reg/reg_load/asc_loadalign_deintlv_postupdate.md) | 对齐数据搬运接口,从UB连续对齐搬入目的操作数,随路完成deinterleave操作,启用postupdate模式,自动更新UB地址参数。 | |
| 343 | | [asc_loadalign_postupdate](reg/reg_load/asc_loadalign_postupdate.md) | 将数据从UB搬入MaskReg,使能post mod。 | | 348 | | [asc_loadalign_postupdate](reg/reg_load/asc_loadalign_postupdate.md) | 将数据从UB搬入MaskReg,使能post mod。 | |
| @@ -347,7 +352,11 @@ Reg数据搬运类API,单独使用时可以引入reg_load.h,此类API列表 | |||
| 347 | | [asc_gather_datablock](reg/reg_load/asc_gather_datablock.md) | 给定源操作数在UB中的基地址和索引,根据索引位置将源操作数按DataBlock收集到目的操作数中。 | | 352 | | [asc_gather_datablock](reg/reg_load/asc_gather_datablock.md) | 给定源操作数在UB中的基地址和索引,根据索引位置将源操作数按DataBlock收集到目的操作数中。 | |
| 348 | | [asc_get_mask_spr](reg/reg_load/asc_get_mask_spr.md) | 从特殊寄存器SPR{MASK1, MASK0}读取mask值并根据数据类型格式返回对应的mask数据,MASK0、MASK1均为64bit的寄存器。 | | 353 | | [asc_get_mask_spr](reg/reg_load/asc_get_mask_spr.md) | 从特殊寄存器SPR{MASK1, MASK0}读取mask值并根据数据类型格式返回对应的mask数据,MASK0、MASK1均为64bit的寄存器。 | |
| 349 | | [asc_store](reg/reg_store/asc_store.md) | reg计算数据搬运接口,适用于从矢量数据寄存器搬出到UB的场景,不区分是否对齐,在追求极致性能时,应尽量避免使用该接口。 | | 354 | | [asc_store](reg/reg_store/asc_store.md) | reg计算数据搬运接口,适用于从矢量数据寄存器搬出到UB的场景,不区分是否对齐,在追求极致性能时,应尽量避免使用该接口。 | |
| 350 | -| [asc_storealign](reg/reg_store/asc_storealign/asc_storealign.md) | reg计算数据搬运接口,适用于从矢量数据寄存器连续对齐搬出到UB的场景,并支持多种搬出模式。 | | 355 | +| [asc_storealign_v1](reg/reg_store/asc_storealign_v1.md) | reg计算数据搬运接口,适用于从矢量数据寄存器或掩码寄存器连续对齐搬出到UB的场景,并支持多种搬出模式,接口不传入偏移,需要由用户自行更新目的操作数的地址。 | |
| 356 | +| [asc_storealign_v2](reg/reg_store/asc_storealign_v2.md) | reg计算数据搬运接口,适用于从矢量数据寄存器或掩码寄存器连续对齐搬出到UB的场景,并支持多种搬出模式,接口通过地址寄存器传入偏移,用户可以选择更新偏移或者更新目的操作数的地址。 | | ||
| 357 | +| [asc_storealign_v3](reg/reg_store/asc_storealign_v3.md) | reg计算数据搬运接口,适用于从矢量数据寄存器或掩码寄存器连续对齐搬出到UB的场景,并支持多种搬出模式,接口通过int32_t传入偏移,用户可以选择更新偏移或者更新目的操作数的地址。 | | ||
| 358 | +| [asc_storealign_v4](reg/reg_store/asc_storealign_v4.md) | reg计算数据搬运接口,适用于从矢量数据寄存器或掩码寄存器连续对齐搬出到UB的场景,并支持多种搬出模式,接口通过int32_t传入偏移,同时设置成硬件自动Post Update,用户不用更新偏移或者更新目的操作数的地址。 | | ||
| 359 | +| [asc_storealign_v5](reg/reg_store/asc_storealign_v5.md) | reg计算数据搬运接口,适用于从矢量数据寄存器连续对齐搬出到UB的场景,接口使用repeat stride模式。 | | ||
| 351 | | [asc_storeunalign](reg/reg_store/asc_storeunalign.md) | reg计算数据搬运接口,适用于从矢量数据寄存器连续非32B对齐的起始地址连续搬出到UB的场景。 | | 360 | | [asc_storeunalign](reg/reg_store/asc_storeunalign.md) | reg计算数据搬运接口,适用于从矢量数据寄存器连续非32B对齐的起始地址连续搬出到UB的场景。 | |
| 352 | | [asc_storeunalign_postupdate](reg/reg_store/asc_storeunalign_postupdate.md) | reg计算数据搬运接口,适用于从矢量数据寄存器连续非32B对齐的起始地址连续搬出到UB的场景。 | | 361 | | [asc_storeunalign_postupdate](reg/reg_store/asc_storeunalign_postupdate.md) | reg计算数据搬运接口,适用于从矢量数据寄存器连续非32B对齐的起始地址连续搬出到UB的场景。 | |
| 353 | 362 | ||
| @@ -1,13 +0,0 @@ | |||
| 1 | -# asc_loadalign | ||
| 2 | - | ||
| 3 | -- **[asc_loadalign_v1](asc_loadalign_v1.md)** | ||
| 4 | - | ||
| 5 | -- **[asc_loadalign_v2](asc_loadalign_v2.md)** | ||
| 6 | - | ||
| 7 | -- **[asc_loadalign_v3](asc_loadalign_v3.md)** | ||
| 8 | - | ||
| 9 | -- **[asc_loadalign_v4](asc_loadalign_v4.md)** | ||
| 10 | - | ||
| 11 | -- **[asc_loadalign_v5](asc_loadalign_v5.md)** | ||
| 12 | - | ||
| 13 | -- **[asc_loadalign_v6](asc_loadalign_v6.md)** | ||
Rdocs/api/SIMD-API/C-API/reg/reg_load/asc_loadalign/asc_loadalign_v1.md→docs/api/SIMD-API/C-API/reg/reg_load/asc_loadalign_v1.md+1-1
| @@ -168,7 +168,7 @@ __simd_callee__ inline void asc_loadalign_brc_v3(vector_float& dst, __ubuf__ flo | |||
| 168 | | dst1 | 输出 | 目的操作数(矢量数据寄存器)。 | | 168 | | dst1 | 输出 | 目的操作数(矢量数据寄存器)。 | |
| 169 | | src | 输入 | 源操作数(矢量)的起始地址。 | | 169 | | src | 输入 | 源操作数(矢量)的起始地址。 | |
| 170 | 170 | ||
| 171 | -矢量数据寄存器的详细说明请参见[reg数据类型定义.md](../../reg数据类型定义.md)。 | 171 | +矢量数据寄存器的详细说明请参见[reg数据类型定义.md](../reg数据类型定义.md)。 |
| 172 | 172 | ||
| 173 | ## 返回值说明 | 173 | ## 返回值说明 |
| 174 | 174 | ||
Rdocs/api/SIMD-API/C-API/reg/reg_load/asc_loadalign/asc_loadalign_v2.md→docs/api/SIMD-API/C-API/reg/reg_load/asc_loadalign_v2.md+1-1
| @@ -169,7 +169,7 @@ __simd_callee__ inline void asc_loadalign_brc_v3(vector_float& dst, __ubuf__ flo | |||
| 169 | | src | 输入 | 源操作数,UB中32B对齐的起始地址。 | | 169 | | src | 输入 | 源操作数,UB中32B对齐的起始地址。 | |
| 170 | | offset | 输入 | 地址寄存器,每次迭代的偏移量,单位为字节。 | | 170 | | offset | 输入 | 地址寄存器,每次迭代的偏移量,单位为字节。 | |
| 171 | 171 | ||
| 172 | -矢量数据寄存器和地址寄存器的详细说明请参见[reg数据类型定义.md](../../reg数据类型定义.md)。 | 172 | +矢量数据寄存器和地址寄存器的详细说明请参见[reg数据类型定义.md](../reg数据类型定义.md)。 |
| 173 | 173 | ||
| 174 | ## 返回值说明 | 174 | ## 返回值说明 |
| 175 | 175 | ||
Rdocs/api/SIMD-API/C-API/reg/reg_load/asc_loadalign/asc_loadalign_v3.md→docs/api/SIMD-API/C-API/reg/reg_load/asc_loadalign_v3.md+1-1
| @@ -169,7 +169,7 @@ __simd_callee__ inline void asc_loadalign_brc_v3(vector_float& dst, __ubuf__ flo | |||
| 169 | | src | 输入 | 源操作数(矢量)的起始地址。 | | 169 | | src | 输入 | 源操作数(矢量)的起始地址。 | |
| 170 | | offset | 输入 | 地址偏移量。 | | 170 | | offset | 输入 | 地址偏移量。 | |
| 171 | 171 | ||
| 172 | -矢量数据寄存器的详细说明请参见[reg数据类型定义.md](../../reg数据类型定义.md)。 | 172 | +矢量数据寄存器的详细说明请参见[reg数据类型定义.md](../reg数据类型定义.md)。 |
| 173 | 173 | ||
| 174 | ## 返回值说明 | 174 | ## 返回值说明 |
| 175 | 175 | ||
Rdocs/api/SIMD-API/C-API/reg/reg_load/asc_loadalign/asc_loadalign_v4.md→docs/api/SIMD-API/C-API/reg/reg_load/asc_loadalign_v4.md+1-1
| @@ -169,7 +169,7 @@ __simd_callee__ inline void asc_loadalign_brc_postupdate_v3(vector_float& dst, _ | |||
| 169 | | src | 输入/输出 | 源操作数(矢量)的起始地址。 | | 169 | | src | 输入/输出 | 源操作数(矢量)的起始地址。 | |
| 170 | | offset | 输入 | 地址偏移量。 | | 170 | | offset | 输入 | 地址偏移量。 | |
| 171 | 171 | ||
| 172 | -矢量数据寄存器的详细说明请参见[reg数据类型定义.md](../../reg数据类型定义.md)。 | 172 | +矢量数据寄存器的详细说明请参见[reg数据类型定义.md](../reg数据类型定义.md)。 |
| 173 | 173 | ||
| 174 | ## 返回值说明 | 174 | ## 返回值说明 |
| 175 | 175 | ||
Rdocs/api/SIMD-API/C-API/reg/reg_load/asc_loadalign/asc_loadalign_v5.md→docs/api/SIMD-API/C-API/reg/reg_load/asc_loadalign_v5.md+1-1
| @@ -79,7 +79,7 @@ __simd_callee__ inline void asc_loadalign_postupdate(vector_int4x2_t& dst, __ubu | |||
| 79 | | repeat_stride | 输入 | 源操作数相邻迭代间相同DataBlock的地址步长。 | | 79 | | repeat_stride | 输入 | 源操作数相邻迭代间相同DataBlock的地址步长。 | |
| 80 | | mask | 输入 | 源操作数掩码(掩码寄存器),用于指示在计算过程中哪些元素参与计算。对应位置为1时参与计算,为0时不参与计算。mask未筛选的元素在输出中置零。 | | 80 | | mask | 输入 | 源操作数掩码(掩码寄存器),用于指示在计算过程中哪些元素参与计算。对应位置为1时参与计算,为0时不参与计算。mask未筛选的元素在输出中置零。 | |
| 81 | 81 | ||
| 82 | -矢量数据寄存器和掩码寄存器的详细说明请参见[reg数据类型定义.md](../../reg数据类型定义.md)。 | 82 | +矢量数据寄存器和掩码寄存器的详细说明请参见[reg数据类型定义.md](../reg数据类型定义.md)。 |
| 83 | 83 | ||
| 84 | ## 返回值说明 | 84 | ## 返回值说明 |
| 85 | 85 | ||
Rdocs/api/SIMD-API/C-API/reg/reg_load/asc_loadalign/asc_loadalign_v6.md→docs/api/SIMD-API/C-API/reg/reg_load/asc_loadalign_v6.md+0-0
File renamed without changes.
| @@ -8,7 +8,17 @@ | |||
| 8 | 8 | ||
| 9 | - **[asc_load](asc_load.md)** | 9 | - **[asc_load](asc_load.md)** |
| 10 | 10 | ||
| 11 | -- **[asc_loadalign](asc_loadalign/asc_loadalign.md)** | 11 | +- **[asc_loadalign_v1](asc_loadalign_v1.md)** |
| 12 | + | ||
| 13 | +- **[asc_loadalign_v2](asc_loadalign_v2.md)** | ||
| 14 | + | ||
| 15 | +- **[asc_loadalign_v3](asc_loadalign_v3.md)** | ||
| 16 | + | ||
| 17 | +- **[asc_loadalign_v4](asc_loadalign_v4.md)** | ||
| 18 | + | ||
| 19 | +- **[asc_loadalign_v5](asc_loadalign_v5.md)** | ||
| 20 | + | ||
| 21 | +- **[asc_loadalign_v6](asc_loadalign_v6.md)** | ||
| 12 | 22 | ||
| 13 | - **[asc_loadalign_postupdate](asc_loadalign_postupdate.md)** | 23 | - **[asc_loadalign_postupdate](asc_loadalign_postupdate.md)** |
| 14 | 24 | ||
| @@ -26,7 +26,7 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | -reg计算数据搬运接口,适用于从矢量数据寄存器搬出到UB的场景,不区分是否对齐,在追求极致性能时,对齐场景推荐使用[asc_storealign](./asc_storealign)接口。 | 29 | +reg计算数据搬运接口,适用于从矢量数据寄存器搬出到UB的场景,不区分是否对齐,在追求极致性能时,对齐场景推荐使用[asc_storealign_v1](asc_storealign_v1.md)、[asc_storealign_v2](asc_storealign_v2.md)、[asc_storealign_v3](asc_storealign_v3.md)、[asc_storealign_v4](asc_storealign_v4.md)、[asc_storealign_v5](asc_storealign_v5.md)接口。 |
| 30 | 30 | ||
| 31 | ## 函数原型 | 31 | ## 函数原型 |
| 32 | 32 | ||
| @@ -1,11 +0,0 @@ | |||
| 1 | -# asc_storealign | ||
| 2 | - | ||
| 3 | -- **[asc_storealign_v1](asc_storealign_v1.md)** | ||
| 4 | - | ||
| 5 | -- **[asc_storealign_v2](asc_storealign_v2.md)** | ||
| 6 | - | ||
| 7 | -- **[asc_storealign_v3](asc_storealign_v3.md)** | ||
| 8 | - | ||
| 9 | -- **[asc_storealign_v4](asc_storealign_v4.md)** | ||
| 10 | - | ||
| 11 | -- **[asc_storealign_v5](asc_storealign_v5.md)** | ||
Rdocs/api/SIMD-API/C-API/reg/reg_store/asc_storealign/asc_storealign_v1.md→docs/api/SIMD-API/C-API/reg/reg_store/asc_storealign_v1.md+1-1
| @@ -142,7 +142,7 @@ reg计算数据搬运接口,适用于从矢量数据寄存器或掩码寄存 | |||
| 142 | | dst | 输出 | 目的操作数(矢量)的起始地址。 | | 142 | | dst | 输出 | 目的操作数(矢量)的起始地址。 | |
| 143 | | src | 输入 | 源操作数(掩码寄存器)。 | | 143 | | src | 输入 | 源操作数(掩码寄存器)。 | |
| 144 | 144 | ||
| 145 | -矢量数据寄存器和掩码寄存器的详细说明请参见[reg数据类型定义.md](../../reg数据类型定义.md)。 | 145 | +矢量数据寄存器和掩码寄存器的详细说明请参见[reg数据类型定义.md](../reg数据类型定义.md)。 |
| 146 | 146 | ||
| 147 | ## 返回值说明 | 147 | ## 返回值说明 |
| 148 | 148 | ||
Rdocs/api/SIMD-API/C-API/reg/reg_store/asc_storealign/asc_storealign_v2.md→docs/api/SIMD-API/C-API/reg/reg_store/asc_storealign_v2.md+1-1
| @@ -145,7 +145,7 @@ reg计算数据搬运接口,适用于从矢量数据寄存器或掩码寄存 | |||
| 145 | | src | 输入 | 源操作数(掩码寄存器)。 | | 145 | | src | 输入 | 源操作数(掩码寄存器)。 | |
| 146 | | offset | 输入 | 地址寄存器,存储地址偏移量。 | | 146 | | offset | 输入 | 地址寄存器,存储地址偏移量。 | |
| 147 | 147 | ||
| 148 | -矢量数据寄存器、掩码寄存器和地址寄存器的详细说明请参见[reg数据类型定义.md](../../reg数据类型定义.md)。 | 148 | +矢量数据寄存器、掩码寄存器和地址寄存器的详细说明请参见[reg数据类型定义.md](../reg数据类型定义.md)。 |
| 149 | 149 | ||
| 150 | ## 返回值说明 | 150 | ## 返回值说明 |
| 151 | 151 | ||
Rdocs/api/SIMD-API/C-API/reg/reg_store/asc_storealign/asc_storealign_v3.md→docs/api/SIMD-API/C-API/reg/reg_store/asc_storealign_v3.md+1-1
| @@ -145,7 +145,7 @@ reg计算数据搬运接口,适用于从矢量数据寄存器或掩码寄存 | |||
| 145 | | src | 输入 | 源操作数(掩码寄存器)。 | | 145 | | src | 输入 | 源操作数(掩码寄存器)。 | |
| 146 | | offset | 输入 | 地址偏移量。 | | 146 | | offset | 输入 | 地址偏移量。 | |
| 147 | 147 | ||
| 148 | -矢量数据寄存器和掩码寄存器的详细说明请参见[reg数据类型定义.md](../../reg数据类型定义.md)。 | 148 | +矢量数据寄存器和掩码寄存器的详细说明请参见[reg数据类型定义.md](../reg数据类型定义.md)。 |
| 149 | 149 | ||
| 150 | ## 返回值说明 | 150 | ## 返回值说明 |
| 151 | 151 | ||
Rdocs/api/SIMD-API/C-API/reg/reg_store/asc_storealign/asc_storealign_v4.md→docs/api/SIMD-API/C-API/reg/reg_store/asc_storealign_v4.md+1-1
| @@ -111,7 +111,7 @@ reg计算数据搬运接口,适用于从矢量数据寄存器或掩码寄存 | |||
| 111 | | src | 输入 | 源操作数(掩码寄存器)。 | | 111 | | src | 输入 | 源操作数(掩码寄存器)。 | |
| 112 | | offset | 输入 | 地址偏移量。 | | 112 | | offset | 输入 | 地址偏移量。 | |
| 113 | 113 | ||
| 114 | -矢量数据寄存器和掩码寄存器的详细说明请参见[reg数据类型定义.md](../../reg数据类型定义.md)。 | 114 | +矢量数据寄存器和掩码寄存器的详细说明请参见[reg数据类型定义.md](../reg数据类型定义.md)。 |
| 115 | 115 | ||
| 116 | ## 返回值说明 | 116 | ## 返回值说明 |
| 117 | 117 | ||
Rdocs/api/SIMD-API/C-API/reg/reg_store/asc_storealign/asc_storealign_v5.md→docs/api/SIMD-API/C-API/reg/reg_store/asc_storealign_v5.md+1-1
| @@ -72,7 +72,7 @@ __simd_callee__ inline void asc_storealign_postupdate(__ubuf__ float* dst_align3 | |||
| 72 | | repeat_stride | 输入 | 源操作数相邻迭代间相同DataBlock的地址步长。 | | 72 | | repeat_stride | 输入 | 源操作数相邻迭代间相同DataBlock的地址步长。 | |
| 73 | | mask | 输入 | 源操作数掩码(掩码寄存器),用于指示在计算过程中哪些元素参与计算。对应位置为1时参与计算,为0时不参与计算。 | | 73 | | mask | 输入 | 源操作数掩码(掩码寄存器),用于指示在计算过程中哪些元素参与计算。对应位置为1时参与计算,为0时不参与计算。 | |
| 74 | 74 | ||
| 75 | -矢量数据寄存器和掩码寄存器的详细说明请参见[reg数据类型定义.md](../../reg数据类型定义.md)。 | 75 | +矢量数据寄存器和掩码寄存器的详细说明请参见[reg数据类型定义.md](../reg数据类型定义.md)。 |
| 76 | 76 | ||
| 77 | ## 返回值说明 | 77 | ## 返回值说明 |
| 78 | 78 | ||
| @@ -2,7 +2,15 @@ | |||
| 2 | 2 | ||
| 3 | - **[asc_store](asc_store.md)** | 3 | - **[asc_store](asc_store.md)** |
| 4 | 4 | ||
| 5 | -- **[asc_storealign](asc_storealign/asc_storealign.md)** | 5 | +- **[asc_storealign_v1](asc_storealign_v1.md)** |
| 6 | + | ||
| 7 | +- **[asc_storealign_v2](asc_storealign_v2.md)** | ||
| 8 | + | ||
| 9 | +- **[asc_storealign_v3](asc_storealign_v3.md)** | ||
| 10 | + | ||
| 11 | +- **[asc_storealign_v4](asc_storealign_v4.md)** | ||
| 12 | + | ||
| 13 | +- **[asc_storealign_v5](asc_storealign_v5.md)** | ||
| 6 | 14 | ||
| 7 | - **[asc_storeunalign](asc_storeunalign.md)** | 15 | - **[asc_storeunalign](asc_storeunalign.md)** |
| 8 | 16 | ||
Rdocs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/UB与UB数据搬运/Copy_UBToUB_continuous.md→docs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/Copy_UBToUB_continuous.md+3-3
| @@ -30,7 +30,7 @@ | |||
| 30 | 30 | ||
| 31 | 支持Unified Buffer和Unified Buffer之间的连续数据搬运,数据搬运时格式和内容保持不变。 | 31 | 支持Unified Buffer和Unified Buffer之间的连续数据搬运,数据搬运时格式和内容保持不变。 |
| 32 | 32 | ||
| 33 | -具体支持的数据通路为(以[逻辑位置TPosition](../../../辅助数据结构/TPosition.md)表示): | 33 | +具体支持的数据通路为(以[逻辑位置TPosition](../../辅助数据结构/TPosition.md)表示): |
| 34 | 34 | ||
| 35 | - Unified Buffer -> Unified Buffer | 35 | - Unified Buffer -> Unified Buffer |
| 36 | - VECIN -> VECCALC | 36 | - VECIN -> VECCALC |
| @@ -60,7 +60,7 @@ __aicore__ inline void Copy(const LocalTensor<T>& dst, const LocalTensor<T>& src | |||
| 60 | 60 | ||
| 61 | | 参数名 | 输入/输出 | 描述 | | 61 | | 参数名 | 输入/输出 | 描述 | |
| 62 | | --- | --- | --- | | 62 | | --- | --- | --- | |
| 63 | -| dst | 输出 | 目的操作数。<br>类型为[LocalTensor](../../../数据结构/LocalTensor/LocalTensor简介.md),支持的TPosition为VECIN/VECCALC/VECOUT。起始地址需要保证32字节对齐。 | | 63 | +| dst | 输出 | 目的操作数。<br>类型为[LocalTensor](../../数据结构/LocalTensor/LocalTensor简介.md),支持的TPosition为VECIN/VECCALC/VECOUT。起始地址需要保证32字节对齐。 | |
| 64 | | src | 输入 | 源操作数。<br>类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。起始地址需要保证32字节对齐。<br>源操作数的数据类型需要与目的操作数保持一致。 | | 64 | | src | 输入 | 源操作数。<br>类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。起始地址需要保证32字节对齐。<br>源操作数的数据类型需要与目的操作数保持一致。 | |
| 65 | | count | 输入 | 参与搬运的元素个数。 | | 65 | | count | 输入 | 参与搬运的元素个数。 | |
| 66 | 66 | ||
| @@ -78,7 +78,7 @@ Ascend 950PR/Ascend 950DT,支持的数据类型为:int8_t、uint8_t、fp4x2_ | |||
| 78 | ## 约束说明<a name="zh-cn_topic_0000002567699435_section2045914466492"></a> | 78 | ## 约束说明<a name="zh-cn_topic_0000002567699435_section2045914466492"></a> |
| 79 | 79 | ||
| 80 | - 位于Unified Buffer的地址必须32字节对齐。 | 80 | - 位于Unified Buffer的地址必须32字节对齐。 |
| 81 | -- 操作数地址重叠约束请参考[通用地址重叠约束](../../../../通用说明和约束.md#通用地址重叠约束)。 | 81 | +- 操作数地址重叠约束请参考[通用地址重叠约束](../../../通用说明和约束.md#通用地址重叠约束)。 |
| 82 | - isSetMask参数不生效,保持默认值true即可。 | 82 | - isSetMask参数不生效,保持默认值true即可。 |
| 83 | 83 | ||
| 84 | ## 调用示例<a name="zh-cn_topic_0000002567699435_section088124295117"></a> | 84 | ## 调用示例<a name="zh-cn_topic_0000002567699435_section088124295117"></a> |
Rdocs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/UB与UB数据搬运/Copy_UBToUB_mask_highdim_split.md→docs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/Copy_UBToUB_mask_highdim_split.md+8-8
| @@ -30,7 +30,7 @@ | |||
| 30 | 30 | ||
| 31 | 支持Unified Buffer和Unified Buffer之间的数据搬运,数据搬运时格式和内容保持不变,支持mask操作和DataBlock间隔操作。 | 31 | 支持Unified Buffer和Unified Buffer之间的数据搬运,数据搬运时格式和内容保持不变,支持mask操作和DataBlock间隔操作。 |
| 32 | 32 | ||
| 33 | -具体支持的数据通路为(以[逻辑位置TPosition](../../../辅助数据结构/TPosition.md)表示): | 33 | +具体支持的数据通路为(以[逻辑位置TPosition](../../辅助数据结构/TPosition.md)表示): |
| 34 | 34 | ||
| 35 | - Unified Buffer -> Unified Buffer | 35 | - Unified Buffer -> Unified Buffer |
| 36 | - VECIN -> VECCALC | 36 | - VECIN -> VECCALC |
| @@ -63,16 +63,16 @@ | |||
| 63 | | 参数名 | 描述 | | 63 | | 参数名 | 描述 | |
| 64 | | --- | --- | | 64 | | --- | --- | |
| 65 | | T | 源操作数或者目的操作数的数据类型。支持的数据类型请参考[数据类型](#zh-cn_topic_0000002567699435_section4219135304818)。 | | 65 | | T | 源操作数或者目的操作数的数据类型。支持的数据类型请参考[数据类型](#zh-cn_topic_0000002567699435_section4219135304818)。 | |
| 66 | -| isSetMask | 是否在接口内部设置mask。<br>• true,表示在接口内部设置mask。<br>• false,表示在接口外部设置mask,开发者需要使用[SetVectorMask](../../掩码操作/SetVectorMask.md)接口设置mask值。这种模式下,接口入参中的mask值设置为占位符`MASK_PLACEHOLDER`,用于占位,无实际含义。 | | 66 | +| isSetMask | 是否在接口内部设置mask。<br>• true,表示在接口内部设置mask。<br>• false,表示在接口外部设置mask,开发者需要使用[SetVectorMask](../掩码操作/SetVectorMask.md)接口设置mask值。这种模式下,接口入参中的mask值设置为占位符`MASK_PLACEHOLDER`,用于占位,无实际含义。 | |
| 67 | 67 | ||
| 68 | **表2** 参数说明 | 68 | **表2** 参数说明 |
| 69 | 69 | ||
| 70 | | 参数名 | 输入/输出 | 描述 | | 70 | | 参数名 | 输入/输出 | 描述 | |
| 71 | | --- | --- | --- | | 71 | | --- | --- | --- | |
| 72 | -| dst | 输出 | 目的操作数,类型为[LocalTensor](../../../数据结构/LocalTensor/LocalTensor简介.md),存储位置为Unified Buffer,目的地址需要32字节对齐。 | | 72 | +| dst | 输出 | 目的操作数,类型为[LocalTensor](../../数据结构/LocalTensor/LocalTensor简介.md),存储位置为Unified Buffer,目的地址需要32字节对齐。 | |
| 73 | | src | 输入 | 源操作数,类型为LocalTensor,存储位置为Unified Buffer,源地址需要32字节对齐。 | | 73 | | src | 输入 | 源操作数,类型为LocalTensor,存储位置为Unified Buffer,源地址需要32字节对齐。 | |
| 74 | -| mask[]/mask | 输入 | mask用于控制每次迭代内参与计算的元素。详细设置参考[掩码](../../SIMD计算说明/掩码.md)。 | | 74 | +| mask[]/mask | 输入 | mask用于控制每次迭代内参与计算的元素。详细设置参考[掩码](../SIMD计算说明/掩码.md)。 | |
| 75 | -| repeatTime | 输入 | 重复迭代次数。矢量计算单元,每次读取连续的256字节数据进行计算,为完成对输入数据的处理,必须通过多次迭代(repeat)才能完成所有数据的读取与计算。repeatTime表示迭代的次数。<br>关于该参数的具体描述请参考[高维切分](../../SIMD计算说明/高维切分.md)。| | 75 | +| repeatTime | 输入 | 重复迭代次数。矢量计算单元,每次读取连续的256字节数据进行计算,为完成对输入数据的处理,必须通过多次迭代(repeat)才能完成所有数据的读取与计算。repeatTime表示迭代的次数。<br>关于该参数的具体描述请参考[高维切分](../SIMD计算说明/高维切分.md)。| |
| 76 | | repeatParams | 输入 | 控制操作数地址步长的参数。<br>CopyRepeatParams类型,包含操作数相邻迭代间相同DataBlock的地址步长,操作数同一迭代内不同DataBlock的地址步长等参数。CopyRepeatParams参数说明请参考表3。<br>具体定义请参考\$\{INSTALL\_DIR\}/include/ascendc/basic\_api/interface/kernel\_struct\_data\_copy.h,\$\{INSTALL\_DIR\}请替换为CANN软件安装后文件存储路径。 | | 76 | | repeatParams | 输入 | 控制操作数地址步长的参数。<br>CopyRepeatParams类型,包含操作数相邻迭代间相同DataBlock的地址步长,操作数同一迭代内不同DataBlock的地址步长等参数。CopyRepeatParams参数说明请参考表3。<br>具体定义请参考\$\{INSTALL\_DIR\}/include/ascendc/basic\_api/interface/kernel\_struct\_data\_copy.h,\$\{INSTALL\_DIR\}请替换为CANN软件安装后文件存储路径。 | |
| 77 | 77 | ||
| 78 | **表3** CopyRepeatParams结构体参数定义 | 78 | **表3** CopyRepeatParams结构体参数定义 |
| @@ -111,7 +111,7 @@ | |||
| 111 | ## 约束说明<a name="zh-cn_topic_0000002567699435_section2045914466492"></a> | 111 | ## 约束说明<a name="zh-cn_topic_0000002567699435_section2045914466492"></a> |
| 112 | 112 | ||
| 113 | - 位于Unified Buffer的地址必须32字节对齐。 | 113 | - 位于Unified Buffer的地址必须32字节对齐。 |
| 114 | -- 操作数地址重叠约束请参考[通用地址重叠约束](../../../../通用说明和约束.md#通用地址重叠约束)。 | 114 | +- 操作数地址重叠约束请参考[通用地址重叠约束](../../../通用说明和约束.md#通用地址重叠约束)。 |
| 115 | - CopyRepeatParams结构体参数的值需在取值范围内: | 115 | - CopyRepeatParams结构体参数的值需在取值范围内: |
| 116 | 116 | ||
| 117 | **表4** CopyRepeatParams结构体参数取值范围 | 117 | **表4** CopyRepeatParams结构体参数取值范围 |
| @@ -133,7 +133,7 @@ | |||
| 133 | <!-- end id6 --> | 133 | <!-- end id6 --> |
| 134 | <!-- end id7 --> | 134 | <!-- end id7 --> |
| 135 | 135 | ||
| 136 | -- Copy和矢量计算API一样,支持和掩码操作API配合使用。但Counter模式配合高维切分计算API时,和[通用的Counter模式](../../SIMD计算说明/掩码.md)有一定差异。具体差异如下: | 136 | +- Copy和矢量计算API一样,支持和掩码操作API配合使用。但Counter模式配合高维切分计算API时,和[通用的Counter模式](../SIMD计算说明/掩码.md)有一定差异。具体差异如下: |
| 137 | - 通用的Counter模式:Mask代表**整个矢量计算参与计算的元素个数,迭代次数不生效。** | 137 | - 通用的Counter模式:Mask代表**整个矢量计算参与计算的元素个数,迭代次数不生效。** |
| 138 | - Copy高维切分计算API的Counter模式:Mask代表**每次Repeat中处理的元素个数,迭代次数生效。** | 138 | - Copy高维切分计算API的Counter模式:Mask代表**每次Repeat中处理的元素个数,迭代次数生效。** |
| 139 | 139 | ||
| @@ -142,7 +142,7 @@ | |||
| 142 | $$\text{N}=\text{ceil}(\text{Mask}*\text{sizeof(T)}/\text{datablockSize})$$ | 142 | $$\text{N}=\text{ceil}(\text{Mask}*\text{sizeof(T)}/\text{datablockSize})$$ |
| 143 | 143 | ||
| 144 | **图1** Copy高维切分计算API的Counter模式 | 144 | **图1** Copy高维切分计算API的Counter模式 |
| 145 | -  | 145 | +  |
| 146 | 146 | ||
| 147 | ## 调用示例<a name="zh-cn_topic_0000002567699435_section088124295117"></a> | 147 | ## 调用示例<a name="zh-cn_topic_0000002567699435_section088124295117"></a> |
| 148 | 148 | ||
Rdocs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopyPad_GMToUB.md→docs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopyPad_GMToUB.md+9-9
| @@ -36,7 +36,7 @@ | |||
| 36 | 特别地,针对Ascend 950PR/Ascend 950DT,支持Compact模式,该模式支持单个数据块非32字节对齐,将所有数据块合并成一个连续数据块,在该数据块右侧填充数据至32字节对齐。 | 36 | 特别地,针对Ascend 950PR/Ascend 950DT,支持Compact模式,该模式支持单个数据块非32字节对齐,将所有数据块合并成一个连续数据块,在该数据块右侧填充数据至32字节对齐。 |
| 37 | <!-- end id1 --> | 37 | <!-- end id1 --> |
| 38 | 38 | ||
| 39 | -具体支持的数据通路为(以[逻辑位置TPosition](../../../辅助数据结构/TPosition.md)表示): | 39 | +具体支持的数据通路为(以[逻辑位置TPosition](../../辅助数据结构/TPosition.md)表示): |
| 40 | 40 | ||
| 41 | - Global Memory -> Unified Buffer | 41 | - Global Memory -> Unified Buffer |
| 42 | - GM -> VECIN | 42 | - GM -> VECIN |
| @@ -48,7 +48,7 @@ | |||
| 48 | 填充的数据有两种配置方式: | 48 | 填充的数据有两种配置方式: |
| 49 | 49 | ||
| 50 | - 配置结构体[DataCopyPadExtParams](#table_gm2ub_pad_4)的参数paddingValue,此时DataCopyPadExtParams的参数isPad需要设置为true。 | 50 | - 配置结构体[DataCopyPadExtParams](#table_gm2ub_pad_4)的参数paddingValue,此时DataCopyPadExtParams的参数isPad需要设置为true。 |
| 51 | -- 使用寄存器配置接口[SetPadValue](../../数据搬运辅助配置接口/SetPadValue_ISASI.md)在接口外部设置需要填充的数据,此时DataCopyPadExtParams的参数isPad需要设置为false。 | 51 | +- 使用寄存器配置接口[SetPadValue](../数据搬运辅助配置接口/SetPadValue_ISASI.md)在接口外部设置需要填充的数据,此时DataCopyPadExtParams的参数isPad需要设置为false。 |
| 52 | 52 | ||
| 53 | ## 函数原型<a name="section620mcpsimp"></a> | 53 | ## 函数原型<a name="section620mcpsimp"></a> |
| 54 | 54 | ||
| @@ -82,8 +82,8 @@ | |||
| 82 | 82 | ||
| 83 | | 参数名 | 输入/输出 | 描述 | | 83 | | 参数名 | 输入/输出 | 描述 | |
| 84 | | :--- | :---: | :--- | | 84 | | :--- | :---: | :--- | |
| 85 | -| dst | 输出 | 目的操作数,类型为[LocalTensor](../../../数据结构/LocalTensor/LocalTensor简介.md),存储位置为Unified Buffer,目的地址需要32字节对齐。 | | 85 | +| dst | 输出 | 目的操作数,类型为[LocalTensor](../../数据结构/LocalTensor/LocalTensor简介.md),存储位置为Unified Buffer,目的地址需要32字节对齐。 | |
| 86 | -| src | 输入 | 源操作数,类型为[GlobalTensor](../../../数据结构/GlobalTensor/GlobalTensor简介.md),存储位置为Global Memory,源地址需要1字节对齐。 | | 86 | +| src | 输入 | 源操作数,类型为[GlobalTensor](../../数据结构/GlobalTensor/GlobalTensor简介.md),存储位置为Global Memory,源地址需要1字节对齐。 | |
| 87 | | dataCopyParams | 输入 | 搬运参数。DataCopyExtParams类型,具体参数说明请参考[表3](#table_gm2ub_pad_3)。 | | 87 | | dataCopyParams | 输入 | 搬运参数。DataCopyExtParams类型,具体参数说明请参考[表3](#table_gm2ub_pad_3)。 | |
| 88 | | padParams | 输入 | 从Global Memory搬运数据至Local Memory时,可以根据开发者需要,在搬运数据左边或右边填充数据。padParams是用于控制数据填充过程的参数。DataCopyPadExtParams类型,具体参数请参考[表4](#table_gm2ub_pad_4)。 | | 88 | | padParams | 输入 | 从Global Memory搬运数据至Local Memory时,可以根据开发者需要,在搬运数据左边或右边填充数据。padParams是用于控制数据填充过程的参数。DataCopyPadExtParams类型,具体参数请参考[表4](#table_gm2ub_pad_4)。 | |
| 89 | 89 | ||
| @@ -103,7 +103,7 @@ | |||
| 103 | 103 | ||
| 104 | | 参数名 | 描述 | | 104 | | 参数名 | 描述 | |
| 105 | | :--- | :--- | | 105 | | :--- | :--- | |
| 106 | -| isPad | 是否通过DataCopyPadExtParams结构体中的paddingValue字段设置填充值。<br>true:使用paddingValue字段作为填充值。<br>false:不使用paddingValue字段,根据是否调用寄存器配置接口[SetPadValue](../../数据搬运辅助配置接口/SetPadValue_ISASI.md)分为两种情况。<br>• 调用SetPadValue时,在接口外部配置需要填充的数据。<br>• 不调用SetPadValue时,硬件自动在**每个数据块右侧**填充dummy数据至32字节对齐。若PaddingMode为Compact模式,则只会在**最后一个数据块右侧**填充dummy数据至32字节对齐。 | | 106 | +| isPad | 是否通过DataCopyPadExtParams结构体中的paddingValue字段设置填充值。<br>true:使用paddingValue字段作为填充值。<br>false:不使用paddingValue字段,根据是否调用寄存器配置接口[SetPadValue](../数据搬运辅助配置接口/SetPadValue_ISASI.md)分为两种情况。<br>• 调用SetPadValue时,在接口外部配置需要填充的数据。<br>• 不调用SetPadValue时,硬件自动在**每个数据块右侧**填充dummy数据至32字节对齐。若PaddingMode为Compact模式,则只会在**最后一个数据块右侧**填充dummy数据至32字节对齐。 | |
| 107 | | leftPadding | 连续搬运数据块左侧需要补充的数据范围,单位为元素个数。<br>若PaddingMode为Compact模式,该参数无效,只会在**最后一个数据块右侧**填充数据。<br>**leftPadding、rightPadding所占的字节数均不能超过32字节。** | | 107 | | leftPadding | 连续搬运数据块左侧需要补充的数据范围,单位为元素个数。<br>若PaddingMode为Compact模式,该参数无效,只会在**最后一个数据块右侧**填充数据。<br>**leftPadding、rightPadding所占的字节数均不能超过32字节。** | |
| 108 | | rightPadding | 连续搬运数据块右侧需要补充的数据范围,单位为元素个数。<br>若PaddingMode为Compact模式,该参数无效,只会在**最后一个数据块右侧**填充数据。<br>**leftPadding、rightPadding所占的字节数均不能超过32字节。** | | 108 | | rightPadding | 连续搬运数据块右侧需要补充的数据范围,单位为元素个数。<br>若PaddingMode为Compact模式,该参数无效,只会在**最后一个数据块右侧**填充数据。<br>**leftPadding、rightPadding所占的字节数均不能超过32字节。** | |
| 109 | | paddingValue | 左右两侧需要填充的数据值,需要保证在数据占用字节范围内。<br>数据类型和源操作数保持一致,数据类型为模板参数T。<br>**当数据类型长度为64位时,该参数只能设置为0。** | | 109 | | paddingValue | 左右两侧需要填充的数据值,需要保证在数据占用字节范围内。<br>数据类型和源操作数保持一致,数据类型为模板参数T。<br>**当数据类型长度为64位时,该参数只能设置为0。** | |
| @@ -124,7 +124,7 @@ | |||
| 124 | 124 | ||
| 125 | blockLen+leftPadding+rightPadding不满足32字节对齐时,框架会填充一些假数据dummy,保证左右填充的数据和blockLen、假数据为32字节对齐。leftPadding/rightPadding不为0:若isPad为false,左右两侧填充的数据值和dummy值均为随机值;否则为paddingValue。 | 125 | blockLen+leftPadding+rightPadding不满足32字节对齐时,框架会填充一些假数据dummy,保证左右填充的数据和blockLen、假数据为32字节对齐。leftPadding/rightPadding不为0:若isPad为false,左右两侧填充的数据值和dummy值均为随机值;否则为paddingValue。 |
| 126 | 126 | ||
| 127 | -  | 127 | +  |
| 128 | 128 | ||
| 129 | - 示例2:非32字节对齐场景 | 129 | - 示例2:非32字节对齐场景 |
| 130 | 130 | ||
| @@ -134,7 +134,7 @@ | |||
| 134 | 134 | ||
| 135 | blockLen+leftPadding+rightPadding不满足32字节对齐,leftPadding/rightPadding不为0:若isPad为false,左右两侧填充的数据值和dummy值均为随机值;否则为paddingValue。 | 135 | blockLen+leftPadding+rightPadding不满足32字节对齐,leftPadding/rightPadding不为0:若isPad为false,左右两侧填充的数据值和dummy值均为随机值;否则为paddingValue。 |
| 136 | 136 | ||
| 137 | -  | 137 | +  |
| 138 | 138 | ||
| 139 | <!-- npu="950" id4 --> | 139 | <!-- npu="950" id4 --> |
| 140 | - 示例3:负stride重复搬运场景(仅Ascend 950PR/Ascend 950DT支持) | 140 | - 示例3:负stride重复搬运场景(仅Ascend 950PR/Ascend 950DT支持) |
| @@ -145,7 +145,7 @@ | |||
| 145 | 145 | ||
| 146 | blockLen+leftPadding+rightPadding不满足32字节对齐,leftPadding/rightPadding不为0:若isPad为false,左右两侧填充的数据值和dummy值均为随机值;否则为paddingValue。 | 146 | blockLen+leftPadding+rightPadding不满足32字节对齐,leftPadding/rightPadding不为0:若isPad为false,左右两侧填充的数据值和dummy值均为随机值;否则为paddingValue。 |
| 147 | 147 | ||
| 148 | -  | 148 | +  |
| 149 | <!-- end id4 --> | 149 | <!-- end id4 --> |
| 150 | 150 | ||
| 151 | - 搬运模式的配置示例(仅Ascend 950PR/Ascend 950DT支持) | 151 | - 搬运模式的配置示例(仅Ascend 950PR/Ascend 950DT支持) |
| @@ -165,7 +165,7 @@ | |||
| 165 | 165 | ||
| 166 | blockLen * blockCount + leftPadding + rightPadding满足32字节对齐,isPad为false,左右两侧填充的数据值会默认为随机值,否则为paddingValue。此处示例中,leftPadding为0,rightPadding为16,在最后一个数据块右侧填充16字节。目的操作数的总长度为160字节。 | 166 | blockLen * blockCount + leftPadding + rightPadding满足32字节对齐,isPad为false,左右两侧填充的数据值会默认为随机值,否则为paddingValue。此处示例中,leftPadding为0,rightPadding为16,在最后一个数据块右侧填充16字节。目的操作数的总长度为160字节。 |
| 167 | 167 | ||
| 168 | -  | 168 | +  |
| 169 | <!-- end id5 --> | 169 | <!-- end id5 --> |
| 170 | 170 | ||
| 171 | ## 数据类型<a name="section4219135304818"></a> | 171 | ## 数据类型<a name="section4219135304818"></a> |
Rdocs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopyPad_UBToGM.md→docs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopyPad_UBToGM.md+5-5
| @@ -30,7 +30,7 @@ | |||
| 30 | 30 | ||
| 31 | 该接口提供将数据从Unified Buffer非对齐搬运至Global Memory的功能。 | 31 | 该接口提供将数据从Unified Buffer非对齐搬运至Global Memory的功能。 |
| 32 | 32 | ||
| 33 | -具体支持的数据通路为(以[逻辑位置TPosition](../../../辅助数据结构/TPosition.md)表示): | 33 | +具体支持的数据通路为(以[逻辑位置TPosition](../../辅助数据结构/TPosition.md)表示): |
| 34 | 34 | ||
| 35 | - Unified Buffer -> Global Memory | 35 | - Unified Buffer -> Global Memory |
| 36 | - VECIN -> GM | 36 | - VECIN -> GM |
| @@ -71,8 +71,8 @@ | |||
| 71 | 71 | ||
| 72 | | 参数名 | 输入/输出 | 描述 | | 72 | | 参数名 | 输入/输出 | 描述 | |
| 73 | | :--- | :---: | :--- | | 73 | | :--- | :---: | :--- | |
| 74 | -| dst | 输出 | 目的操作数,类型为[GlobalTensor](../../../数据结构/GlobalTensor/GlobalTensor简介.md)。<br>起始地址无地址对齐约束。 | | 74 | +| dst | 输出 | 目的操作数,类型为[GlobalTensor](../../数据结构/GlobalTensor/GlobalTensor简介.md)。<br>起始地址无地址对齐约束。 | |
| 75 | -| src | 输入 | 源操作数,类型为[LocalTensor](../../../数据结构/LocalTensor/LocalTensor简介.md)。<br>起始地址需要保证32字节对齐。 | | 75 | +| src | 输入 | 源操作数,类型为[LocalTensor](../../数据结构/LocalTensor/LocalTensor简介.md)。<br>起始地址需要保证32字节对齐。 | |
| 76 | | dataCopyParams | 输入 | 搬运参数,DataCopyExtParams类型,具体参数说明请参考[表3](#table_ub2gm_pad_3)。 | | 76 | | dataCopyParams | 输入 | 搬运参数,DataCopyExtParams类型,具体参数说明请参考[表3](#table_ub2gm_pad_3)。 | |
| 77 | 77 | ||
| 78 | 下文表格中列出的结构体参数定义请参考\$\{INSTALL\_DIR\}/include/ascendc/basic\_api/interface/kernel\_struct\_data\_copy.h,\$\{INSTALL\_DIR\}请替换为CANN软件安装后文件存储路径。 | 78 | 下文表格中列出的结构体参数定义请参考\$\{INSTALL\_DIR\}/include/ascendc/basic\_api/interface/kernel\_struct\_data\_copy.h,\$\{INSTALL\_DIR\}请替换为CANN软件安装后文件存储路径。 |
| @@ -96,7 +96,7 @@ | |||
| 96 | 对于32字节对齐搬运场景,从Unified Buffer读取的所有数据都会搬运至Global Memory。 | 96 | 对于32字节对齐搬运场景,从Unified Buffer读取的所有数据都会搬运至Global Memory。 |
| 97 | 97 | ||
| 98 | **图1** blockLen为32字节对齐时Unified Buffer到Global Memory的非对齐搬运示意图<a name="fig_datacopypad3"></a> | 98 | **图1** blockLen为32字节对齐时Unified Buffer到Global Memory的非对齐搬运示意图<a name="fig_datacopypad3"></a> |
| 99 | -  | 99 | +  |
| 100 | 100 | ||
| 101 | - 非32字节对齐场景<a name="非32字节对齐场景"></a> | 101 | - 非32字节对齐场景<a name="非32字节对齐场景"></a> |
| 102 | 102 | ||
| @@ -105,7 +105,7 @@ | |||
| 105 | 对于非32字节对齐的场景,由于Unified Buffer要求32字节对齐,框架在搬出时会自动补充17字节的假数据来保证对齐,搬到Global Memory时再自动将填充的假数据丢弃掉,从而实现Unified Buffer到Global Memory的非对齐搬运。 | 105 | 对于非32字节对齐的场景,由于Unified Buffer要求32字节对齐,框架在搬出时会自动补充17字节的假数据来保证对齐,搬到Global Memory时再自动将填充的假数据丢弃掉,从而实现Unified Buffer到Global Memory的非对齐搬运。 |
| 106 | 106 | ||
| 107 | **图2** blockLen不满足32字节对齐时Unified Buffer到Global Memory的非对齐搬运示意图<a name="fig_datacopypad4"></a> | 107 | **图2** blockLen不满足32字节对齐时Unified Buffer到Global Memory的非对齐搬运示意图<a name="fig_datacopypad4"></a> |
| 108 | -  | 108 | +  |
| 109 | 109 | ||
| 110 | ## 数据类型<a name="section4219135304818"></a> | 110 | ## 数据类型<a name="section4219135304818"></a> |
| 111 | 111 | ||
Rdocs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMAndUB_continuous.md→docs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_GMAndUB_continuous.md+5-5
| @@ -30,7 +30,7 @@ | |||
| 30 | 30 | ||
| 31 | 支持Global Memory与Unified Buffer之间的连续数据搬运,数据在传输过程中保持原始格式和内容不变。 | 31 | 支持Global Memory与Unified Buffer之间的连续数据搬运,数据在传输过程中保持原始格式和内容不变。 |
| 32 | 32 | ||
| 33 | -具体支持的数据通路为(以[逻辑位置TPosition](../../../辅助数据结构/TPosition.md)表示): | 33 | +具体支持的数据通路为(以[逻辑位置TPosition](../../辅助数据结构/TPosition.md)表示): |
| 34 | 34 | ||
| 35 | - Global Memory -> Unified Buffer | 35 | - Global Memory -> Unified Buffer |
| 36 | - GM -> VECIN | 36 | - GM -> VECIN |
| @@ -68,14 +68,14 @@ | |||
| 68 | 68 | ||
| 69 | | 参数名 | 输入/输出 | 描述 | | 69 | | 参数名 | 输入/输出 | 描述 | |
| 70 | | :--- | :---: | :--- | | 70 | | :--- | :---: | :--- | |
| 71 | -| dst | 输出 | 目的操作数。<br>• 类型为[LocalTensor](../../../数据结构/LocalTensor/LocalTensor简介.md)时,存储位置为Unified Buffer,目的地址需要32字节对齐。<br>• 类型为[GlobalTensor](../../../数据结构/GlobalTensor/GlobalTensor简介.md)时,存储位置为Global Memory,目的地址需要按照对应数据类型所占字节数对齐。 | | 71 | +| dst | 输出 | 目的操作数。<br>• 类型为[LocalTensor](../../数据结构/LocalTensor/LocalTensor简介.md)时,存储位置为Unified Buffer,目的地址需要32字节对齐。<br>• 类型为[GlobalTensor](../../数据结构/GlobalTensor/GlobalTensor简介.md)时,存储位置为Global Memory,目的地址需要按照对应数据类型所占字节数对齐。 | |
| 72 | | src | 输入 | 源操作数。<br>• 类型为GlobalTensor时,存储位置为Global Memory,源地址需要按照对应数据类型所占字节数对齐。<br>• 类型为LocalTensor时,存储位置为Unified Buffer,源地址需要32字节对齐。 | | 72 | | src | 输入 | 源操作数。<br>• 类型为GlobalTensor时,存储位置为Global Memory,源地址需要按照对应数据类型所占字节数对齐。<br>• 类型为LocalTensor时,存储位置为Unified Buffer,源地址需要32字节对齐。 | |
| 73 | | count | 输入 | 参与搬运的元素个数。<br>说明:count * sizeof(T)需要32字节对齐,若不对齐,搬运量将对32字节做向下取整。 | | 73 | | count | 输入 | 参与搬运的元素个数。<br>说明:count * sizeof(T)需要32字节对齐,若不对齐,搬运量将对32字节做向下取整。 | |
| 74 | 74 | ||
| 75 | 以half数据类型为例,源操作数的shape为1 \* 128。当count = 128时,[图1](#zh-cn_topic_0000002534928976_fig54801848104717)将源操作数中128个元素连续搬运至目的操作数。 | 75 | 以half数据类型为例,源操作数的shape为1 \* 128。当count = 128时,[图1](#zh-cn_topic_0000002534928976_fig54801848104717)将源操作数中128个元素连续搬运至目的操作数。 |
| 76 | 76 | ||
| 77 | **图1** 连续搬运示意图<a name="zh-cn_topic_0000002534928976_fig54801848104717"></a> | 77 | **图1** 连续搬运示意图<a name="zh-cn_topic_0000002534928976_fig54801848104717"></a> |
| 78 | - | 78 | + |
| 79 | 79 | ||
| 80 | ## 数据类型<a name="section4219135304818"></a> | 80 | ## 数据类型<a name="section4219135304818"></a> |
| 81 | 81 | ||
| @@ -117,9 +117,9 @@ | |||
| 117 | 117 | ||
| 118 | - 位于Global Memory的地址必须按照对应数据类型所占字节数对齐,位于Unified Buffer的地址必须32字节对齐。 | 118 | - 位于Global Memory的地址必须按照对应数据类型所占字节数对齐,位于Unified Buffer的地址必须32字节对齐。 |
| 119 | - 调用连续搬运接口时,count \* sizeof\(T\)需要32字节对齐,若未对齐,则搬运量会向下取整到32字节对齐。 | 119 | - 调用连续搬运接口时,count \* sizeof\(T\)需要32字节对齐,若未对齐,则搬运量会向下取整到32字节对齐。 |
| 120 | -- 如果需要执行多个DataCopy指令,且DataCopy的目的地址存在重叠,需要通过调用[PipeBarrier(ISASI)](../../../同步控制/核内同步/PipeBarrier_ISASI.md)来插入同步指令,保证多个DataCopy指令的串行化,防止出现异常数据。如下图左侧示意图,执行两个DataCopy指令,搬运的目的Global Memory地址存在重叠,两条搬运指令之间需要通过调用PipeBarrier<PIPE_MTE3>()添加MTE3搬出流水的同步;如下图右侧示意图所示,搬运的目的地址Unified Buffer存在重叠,两条搬运指令之间需要调用PipeBarrier<PIPE_MTE2>()添加MTE2搬入流水的同步。 | 120 | +- 如果需要执行多个DataCopy指令,且DataCopy的目的地址存在重叠,需要通过调用[PipeBarrier(ISASI)](../../同步控制/核内同步/PipeBarrier_ISASI.md)来插入同步指令,保证多个DataCopy指令的串行化,防止出现异常数据。如下图左侧示意图,执行两个DataCopy指令,搬运的目的Global Memory地址存在重叠,两条搬运指令之间需要通过调用PipeBarrier<PIPE_MTE3>()添加MTE3搬出流水的同步;如下图右侧示意图所示,搬运的目的地址Unified Buffer存在重叠,两条搬运指令之间需要调用PipeBarrier<PIPE_MTE2>()添加MTE2搬入流水的同步。 |
| 121 | 121 | ||
| 122 | -  | 122 | +  |
| 123 | 123 | ||
| 124 | <!-- npu="910b,A3" id9 --> | 124 | <!-- npu="910b,A3" id9 --> |
| 125 | - 针对如下产品型号: | 125 | - 针对如下产品型号: |
Rdocs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMAndUB_highdim_split.md→docs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_GMAndUB_highdim_split.md+6-6
| @@ -32,7 +32,7 @@ | |||
| 32 | 32 | ||
| 33 | 高维切分数据搬运可通过配置数据块个数、单个数据块长度、地址偏移等搬运参数,同时支持非连续和连续的数据搬运。 | 33 | 高维切分数据搬运可通过配置数据块个数、单个数据块长度、地址偏移等搬运参数,同时支持非连续和连续的数据搬运。 |
| 34 | 34 | ||
| 35 | -具体支持的数据通路为(以[逻辑位置TPosition](../../../辅助数据结构/TPosition.md)表示): | 35 | +具体支持的数据通路为(以[逻辑位置TPosition](../../辅助数据结构/TPosition.md)表示): |
| 36 | 36 | ||
| 37 | - Global Memory -> Unified Buffer | 37 | - Global Memory -> Unified Buffer |
| 38 | - GM -> VECIN | 38 | - GM -> VECIN |
| @@ -72,7 +72,7 @@ | |||
| 72 | 72 | ||
| 73 | | 参数名 | 输入/输出 | 描述 | | 73 | | 参数名 | 输入/输出 | 描述 | |
| 74 | | :--- | :---: | :--- | | 74 | | :--- | :---: | :--- | |
| 75 | -| dst | 输出 | 目的操作数。<br>• 类型为[LocalTensor](../../../数据结构/LocalTensor/LocalTensor简介.md)时,存储位置为Unified Buffer,目的地址需要32字节对齐。<br>• 类型为[GlobalTensor](../../../数据结构/GlobalTensor/GlobalTensor简介.md)时,存储位置为Global Memory,目的地址需要按照对应数据类型所占字节数对齐。 | | 75 | +| dst | 输出 | 目的操作数。<br>• 类型为[LocalTensor](../../数据结构/LocalTensor/LocalTensor简介.md)时,存储位置为Unified Buffer,目的地址需要32字节对齐。<br>• 类型为[GlobalTensor](../../数据结构/GlobalTensor/GlobalTensor简介.md)时,存储位置为Global Memory,目的地址需要按照对应数据类型所占字节数对齐。 | |
| 76 | | src | 输入 | 源操作数。<br>• 类型为GlobalTensor时,存储位置为Global Memory,源地址需要按照对应数据类型所占字节数对齐。<br>• 类型为LocalTensor时,存储位置为Unified Buffer,源地址需要32字节对齐。 | | 76 | | src | 输入 | 源操作数。<br>• 类型为GlobalTensor时,存储位置为Global Memory,源地址需要按照对应数据类型所占字节数对齐。<br>• 类型为LocalTensor时,存储位置为Unified Buffer,源地址需要32字节对齐。 | |
| 77 | | repeatParams | 输入 | 搬运参数,DataCopyParams类型,参数说明请参考[表3](#table_highdim_3)。通过该参数可配置搬运的数据块大小、个数、间隔等信息,同时支持非连续和连续搬运。<br>具体定义请参考\$\{INSTALL\_DIR\}/include/ascendc/basic\_api/interface/kernel\_struct\_data\_copy.h,\$\{INSTALL\_DIR\}请替换为CANN软件安装后文件存储路径。 | | 77 | | repeatParams | 输入 | 搬运参数,DataCopyParams类型,参数说明请参考[表3](#table_highdim_3)。通过该参数可配置搬运的数据块大小、个数、间隔等信息,同时支持非连续和连续搬运。<br>具体定义请参考\$\{INSTALL\_DIR\}/include/ascendc/basic\_api/interface/kernel\_struct\_data\_copy.h,\$\{INSTALL\_DIR\}请替换为CANN软件安装后文件存储路径。 | |
| 78 | 78 | ||
| @@ -101,7 +101,7 @@ | |||
| 101 | - dstGap = 0,目的操作数相邻数据块之间的间隔为0。 | 101 | - dstGap = 0,目的操作数相邻数据块之间的间隔为0。 |
| 102 | 102 | ||
| 103 | **图1** 连续搬运示意图<a name="zh-cn_topic_0000002535088926_fig4621152141711"></a> | 103 | **图1** 连续搬运示意图<a name="zh-cn_topic_0000002535088926_fig4621152141711"></a> |
| 104 | -  | 104 | +  |
| 105 | 105 | ||
| 106 | - 示例2:非连续搬运 | 106 | - 示例2:非连续搬运 |
| 107 | 107 | ||
| @@ -115,7 +115,7 @@ | |||
| 115 | - dstGap = 2,目的操作数相邻数据块之间的间隔为2。 | 115 | - dstGap = 2,目的操作数相邻数据块之间的间隔为2。 |
| 116 | 116 | ||
| 117 | **图2** 非连续搬运示意图<a name="zh-cn_topic_0000002535088926_fig422819202304"></a> | 117 | **图2** 非连续搬运示意图<a name="zh-cn_topic_0000002535088926_fig422819202304"></a> |
| 118 | -  | 118 | +  |
| 119 | 119 | ||
| 120 | ## 数据类型<a name="section4219135304818"></a> | 120 | ## 数据类型<a name="section4219135304818"></a> |
| 121 | 121 | ||
| @@ -176,9 +176,9 @@ | |||
| 176 | | srcGap | [0, 65535] | | 176 | | srcGap | [0, 65535] | |
| 177 | | dstGap | [0, 65535] | | 177 | | dstGap | [0, 65535] | |
| 178 | 178 | ||
| 179 | -- 如果需要执行多个DataCopy指令,且DataCopy的目的地址存在重叠,需要通过调用[PipeBarrier(ISASI)](../../../同步控制/核内同步/PipeBarrier_ISASI.md)来插入同步指令,保证多个DataCopy指令的串行化,防止出现异常数据。如下图左侧示意图,执行两个DataCopy指令,搬运的目的Global Memory地址存在重叠,两条搬运指令之间需要通过调用PipeBarrier<PIPE_MTE3>()添加MTE3搬出流水的同步;如下图右侧示意图所示,搬运的目的地址Unified Buffer存在重叠,两条搬运指令之间需要调用PipeBarrier<PIPE_MTE2>()添加MTE2搬入流水的同步。 | 179 | +- 如果需要执行多个DataCopy指令,且DataCopy的目的地址存在重叠,需要通过调用[PipeBarrier(ISASI)](../../同步控制/核内同步/PipeBarrier_ISASI.md)来插入同步指令,保证多个DataCopy指令的串行化,防止出现异常数据。如下图左侧示意图,执行两个DataCopy指令,搬运的目的Global Memory地址存在重叠,两条搬运指令之间需要通过调用PipeBarrier<PIPE_MTE3>()添加MTE3搬出流水的同步;如下图右侧示意图所示,搬运的目的地址Unified Buffer存在重叠,两条搬运指令之间需要调用PipeBarrier<PIPE_MTE2>()添加MTE2搬入流水的同步。 |
| 180 | 180 | ||
| 181 | -  | 181 | +  |
| 182 | 182 | ||
| 183 | <!-- npu="910b,A3" id11 --> | 183 | <!-- npu="910b,A3" id11 --> |
| 184 | - 针对如下产品型号: | 184 | - 针对如下产品型号: |
Rdocs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMAndUB_slice.md→docs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_GMAndUB_slice.md+3-3
| @@ -30,7 +30,7 @@ | |||
| 30 | 30 | ||
| 31 | 该接口为软仿接口,从易用性角度出发进行设计,支持数据的切片搬运,提取多维Tensor数据的子集进行搬运。 | 31 | 该接口为软仿接口,从易用性角度出发进行设计,支持数据的切片搬运,提取多维Tensor数据的子集进行搬运。 |
| 32 | 32 | ||
| 33 | -具体支持的数据通路为(以[逻辑位置TPosition](../../../辅助数据结构/TPosition.md)表示): | 33 | +具体支持的数据通路为(以[逻辑位置TPosition](../../辅助数据结构/TPosition.md)表示): |
| 34 | 34 | ||
| 35 | - Global Memory -> Unified Buffer | 35 | - Global Memory -> Unified Buffer |
| 36 | - GM -> VECIN | 36 | - GM -> VECIN |
| @@ -71,7 +71,7 @@ | |||
| 71 | 71 | ||
| 72 | | 参数名 | 输入/输出 | 描述 | | 72 | | 参数名 | 输入/输出 | 描述 | |
| 73 | | :--- | :---: | :--- | | 73 | | :--- | :---: | :--- | |
| 74 | -| dst | 输出 | 目的操作数。<br>• 类型为[LocalTensor](../../../数据结构/LocalTensor/LocalTensor简介.md)时,存储位置为Unified Buffer,目的地址需要32字节对齐。<br>• 类型为[GlobalTensor](../../../数据结构/GlobalTensor/GlobalTensor简介.md)时,存储位置为Global Memory,目的地址需要1字节对齐。 | | 74 | +| dst | 输出 | 目的操作数。<br>• 类型为[LocalTensor](../../数据结构/LocalTensor/LocalTensor简介.md)时,存储位置为Unified Buffer,目的地址需要32字节对齐。<br>• 类型为[GlobalTensor](../../数据结构/GlobalTensor/GlobalTensor简介.md)时,存储位置为Global Memory,目的地址需要1字节对齐。 | |
| 75 | | src | 输入 | 源操作数。<br>• 类型为GlobalTensor时,存储位置为Global Memory,源地址需要1字节对齐。<br>• 类型为LocalTensor时,存储位置为Unified Buffer,源地址需要32字节对齐。 | | 75 | | src | 输入 | 源操作数。<br>• 类型为GlobalTensor时,存储位置为Global Memory,源地址需要1字节对齐。<br>• 类型为LocalTensor时,存储位置为Unified Buffer,源地址需要32字节对齐。 | |
| 76 | | dstSliceInfo | 输入 | 目的操作数切片信息,类型为SliceInfo。通过该参数可以配置切片的起始和终止元素个数、间隔、长度等信息。<br>SliceInfo参数说明请参考[表3](#table_slice_3)。 | | 76 | | dstSliceInfo | 输入 | 目的操作数切片信息,类型为SliceInfo。通过该参数可以配置切片的起始和终止元素个数、间隔、长度等信息。<br>SliceInfo参数说明请参考[表3](#table_slice_3)。 | |
| 77 | | srcSliceInfo | 输入 | 源操作数切片信息,类型为SliceInfo。通过该参数可以配置切片的起始和终止元素个数、间隔、长度等信息。<br>具体定义请参考\$\{INSTALL\_DIR\}/include/ascendc/basic\_api/interface/kernel\_struct\_data\_copy.h,\$\{INSTALL\_DIR\}请替换为CANN软件安装后文件存储路径。<br>SliceInfo参数说明请参考[表3](#table_slice_3)。 | | 77 | | srcSliceInfo | 输入 | 源操作数切片信息,类型为SliceInfo。通过该参数可以配置切片的起始和终止元素个数、间隔、长度等信息。<br>具体定义请参考\$\{INSTALL\_DIR\}/include/ascendc/basic\_api/interface/kernel\_struct\_data\_copy.h,\$\{INSTALL\_DIR\}请替换为CANN软件安装后文件存储路径。<br>SliceInfo参数说明请参考[表3](#table_slice_3)。 | |
| @@ -90,7 +90,7 @@ | |||
| 90 | 如[图1](#fig1196816115710)所示,以float数据类型为例,切片搬运接口能从shape为3\*87的源操作中,选取四个不连续的横向切片搬运到目的操作数中,下面结合图示对SliceInfo结构体参数进行解析: | 90 | 如[图1](#fig1196816115710)所示,以float数据类型为例,切片搬运接口能从shape为3\*87的源操作中,选取四个不连续的横向切片搬运到目的操作数中,下面结合图示对SliceInfo结构体参数进行解析: |
| 91 | 91 | ||
| 92 | **图1** 参数解析示意图<a name="fig1196816115710"></a> | 92 | **图1** 参数解析示意图<a name="fig1196816115710"></a> |
| 93 | - | 93 | + |
| 94 | 94 | ||
| 95 | - dimValue为2,表示操作数有2维。 | 95 | - dimValue为2,表示操作数有2维。 |
| 96 | - srcSliceInfo为 {{16, 70, 7, 3, 87}, {0, 2, 1, 1, 3}} | 96 | - srcSliceInfo为 {{16, 70, 7, 3, 87}, {0, 2, 1, 1, 3}} |
Rdocs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMToUB_ND2NZ.md→docs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_GMToUB_ND2NZ.md+5-5
| @@ -30,7 +30,7 @@ | |||
| 30 | 30 | ||
| 31 | 该接口为软仿接口,从易用性角度出发进行设计,支持在从Global Memory到Unified Buffer的数据搬运过程中进行ND到NZ格式的转换。 | 31 | 该接口为软仿接口,从易用性角度出发进行设计,支持在从Global Memory到Unified Buffer的数据搬运过程中进行ND到NZ格式的转换。 |
| 32 | 32 | ||
| 33 | -具体支持的数据通路为(以[逻辑位置TPosition](../../../辅助数据结构/TPosition.md)表示): | 33 | +具体支持的数据通路为(以[逻辑位置TPosition](../../辅助数据结构/TPosition.md)表示): |
| 34 | 34 | ||
| 35 | - Global Memory -> Unified Buffer | 35 | - Global Memory -> Unified Buffer |
| 36 | - GM -> VECIN | 36 | - GM -> VECIN |
| @@ -67,8 +67,8 @@ | |||
| 67 | 67 | ||
| 68 | | 参数名 | 输入/输出 | 描述 | | 68 | | 参数名 | 输入/输出 | 描述 | |
| 69 | | :--- | :---: | :--- | | 69 | | :--- | :---: | :--- | |
| 70 | -| dst | 输出 | 目的操作数,类型为[LocalTensor](../../../数据结构/LocalTensor/LocalTensor简介.md)。 | | 70 | +| dst | 输出 | 目的操作数,类型为[LocalTensor](../../数据结构/LocalTensor/LocalTensor简介.md)。 | |
| 71 | -| src | 输入 | 源操作数,类型为[GlobalTensor](../../../数据结构/GlobalTensor/GlobalTensor简介.md)。 | | 71 | +| src | 输入 | 源操作数,类型为[GlobalTensor](../../数据结构/GlobalTensor/GlobalTensor简介.md)。 | |
| 72 | | intriParams | 输入 | 搬运参数,类型为Nd2NzParam,具体参数请参考[表3](#table_nd2nz_3)。<br>具体定义请参考\$\{INSTALL\_DIR\}/include/ascendc/basic\_api/interface/kernel\_struct\_data\_copy.h,\$\{INSTALL\_DIR\}请替换为CANN软件安装后文件存储路径。 | | 72 | | intriParams | 输入 | 搬运参数,类型为Nd2NzParam,具体参数请参考[表3](#table_nd2nz_3)。<br>具体定义请参考\$\{INSTALL\_DIR\}/include/ascendc/basic\_api/interface/kernel\_struct\_data\_copy.h,\$\{INSTALL\_DIR\}请替换为CANN软件安装后文件存储路径。 | |
| 73 | 73 | ||
| 74 | **表3** Nd2NzParams结构体参数定义<a name="table_nd2nz_3"></a> | 74 | **表3** Nd2NzParams结构体参数定义<a name="table_nd2nz_3"></a> |
| @@ -96,12 +96,12 @@ ND2NZ转换示意图如下,样例中参数设置值和解释说明如下: | |||
| 96 | - dstNzMatrixStride = 96,表达dst中第x个ND矩阵的起点和第x+1个ND矩阵的起点的偏移,即A1和C1之间的距离,即为6个DataBlock,6 \* 16 = 96个元素。 | 96 | - dstNzMatrixStride = 96,表达dst中第x个ND矩阵的起点和第x+1个ND矩阵的起点的偏移,即A1和C1之间的距离,即为6个DataBlock,6 \* 16 = 96个元素。 |
| 97 | 97 | ||
| 98 | **图1** ND2NZ转换示意图(half数据类型)<a name="fig128961542184620"></a> | 98 | **图1** ND2NZ转换示意图(half数据类型)<a name="fig128961542184620"></a> |
| 99 | -") | 99 | +") |
| 100 | 100 | ||
| 101 | enableSmallC0开启模式下的ND2NZ转换示意图如下: | 101 | enableSmallC0开启模式下的ND2NZ转换示意图如下: |
| 102 | 102 | ||
| 103 | **图2** enableSmallC0开启模式下的ND2NZ转换示意图(half数据类型)<a name="fig07641913195410"></a> | 103 | **图2** enableSmallC0开启模式下的ND2NZ转换示意图(half数据类型)<a name="fig07641913195410"></a> |
| 104 | -") | 104 | +") |
| 105 | 105 | ||
| 106 | ## 数据类型<a name="section4219135304818"></a> | 106 | ## 数据类型<a name="section4219135304818"></a> |
| 107 | 107 | ||
Rdocs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMToUB_NDDMA.md→docs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_GMToUB_NDDMA.md+8-8
| @@ -30,7 +30,7 @@ | |||
| 30 | 30 | ||
| 31 | 多维数据搬运接口,相比于基础数据搬运接口,可更加自由配置搬入的维度信息以及对应的Stride。 | 31 | 多维数据搬运接口,相比于基础数据搬运接口,可更加自由配置搬入的维度信息以及对应的Stride。 |
| 32 | 32 | ||
| 33 | -具体支持的数据通路为(以[逻辑位置TPosition](../../../辅助数据结构/TPosition.md)表示): | 33 | +具体支持的数据通路为(以[逻辑位置TPosition](../../辅助数据结构/TPosition.md)表示): |
| 34 | 34 | ||
| 35 | - Global Memory -> Unified Buffer | 35 | - Global Memory -> Unified Buffer |
| 36 | - GM -> VECIN | 36 | - GM -> VECIN |
| @@ -64,8 +64,8 @@ | |||
| 64 | 64 | ||
| 65 | | 参数名 | 输入/输出 | 描述 | | 65 | | 参数名 | 输入/输出 | 描述 | |
| 66 | | :--- | :---: | :--- | | 66 | | :--- | :---: | :--- | |
| 67 | -| dst | 输出 | 目的操作数,类型为[LocalTensor](../../../数据结构/LocalTensor/LocalTensor简介.md)。 | | 67 | +| dst | 输出 | 目的操作数,类型为[LocalTensor](../../数据结构/LocalTensor/LocalTensor简介.md)。 | |
| 68 | -| src | 输入 | 源操作数,类型为[GlobalTensor](../../../数据结构/GlobalTensor/GlobalTensor简介.md)。 | | 68 | +| src | 输入 | 源操作数,类型为[GlobalTensor](../../数据结构/GlobalTensor/GlobalTensor简介.md)。 | |
| 69 | | params | 输入 | 搬运参数NdDmaParams类型,定义如下,具体参数说明请参考[表4](#table_nddma_4)。<br><pre>template <typename T, uint8_t dim><br>struct NdDmaParams {<br> NdDmaLoopInfo<dim> loopInfo;<br> T constantValue; // 若有左右Padding,且不使能NearestValueMode时,该值将作为Padding值填充。<br>};</pre><br>NdDmaLoopInfo类型,定义如下,具体参数说明请参考[表5](#table_nddma_5)。<br><pre>template <uint8_t dim><br>struct NdDmaLoopInfo {<br> uint64_t loopSrcStride[dim] = {0}; // src stride info per loop.<br> uint32_t loopDstStride[dim] = {0}; // dst stride info per loop.<br> uint32_t loopSize[dim] = {0}; // Loop size per loop.<br> uint8_t loopLpSize[dim] = {0}; // Left padding size per loop.<br> uint8_t loopRpSize[dim] = {0}; // Right padding size per loop.<br>};<br>// 注意:dim的有效范围为[1,5]。</pre> | | 69 | | params | 输入 | 搬运参数NdDmaParams类型,定义如下,具体参数说明请参考[表4](#table_nddma_4)。<br><pre>template <typename T, uint8_t dim><br>struct NdDmaParams {<br> NdDmaLoopInfo<dim> loopInfo;<br> T constantValue; // 若有左右Padding,且不使能NearestValueMode时,该值将作为Padding值填充。<br>};</pre><br>NdDmaLoopInfo类型,定义如下,具体参数说明请参考[表5](#table_nddma_5)。<br><pre>template <uint8_t dim><br>struct NdDmaLoopInfo {<br> uint64_t loopSrcStride[dim] = {0}; // src stride info per loop.<br> uint32_t loopDstStride[dim] = {0}; // dst stride info per loop.<br> uint32_t loopSize[dim] = {0}; // Loop size per loop.<br> uint8_t loopLpSize[dim] = {0}; // Left padding size per loop.<br> uint8_t loopRpSize[dim] = {0}; // Right padding size per loop.<br>};<br>// 注意:dim的有效范围为[1,5]。</pre> | |
| 70 | 70 | ||
| 71 | **表3** NdDmaConfig结构体参数定义<a name="table_nddma_3"></a> | 71 | **表3** NdDmaConfig结构体参数定义<a name="table_nddma_3"></a> |
| @@ -98,16 +98,16 @@ | |||
| 98 | 以下以2维的例子介绍几个典型使用场景。 | 98 | 以下以2维的例子介绍几个典型使用场景。 |
| 99 | 99 | ||
| 100 | **图1** 2D Padding场景<a name="fig10722115123919"></a> | 100 | **图1** 2D Padding场景<a name="fig10722115123919"></a> |
| 101 | - | 101 | + |
| 102 | 102 | ||
| 103 | **图2** 2D Transpose场景<a name="fig104451143104510"></a> | 103 | **图2** 2D Transpose场景<a name="fig104451143104510"></a> |
| 104 | - | 104 | + |
| 105 | 105 | ||
| 106 | **图3** 2D BroadCast场景<a name="fig4654326132913"></a> | 106 | **图3** 2D BroadCast场景<a name="fig4654326132913"></a> |
| 107 | - | 107 | + |
| 108 | 108 | ||
| 109 | **图4** 2D Slice场景<a name="fig13061435132915"></a> | 109 | **图4** 2D Slice场景<a name="fig13061435132915"></a> |
| 110 | - | 110 | + |
| 111 | 111 | ||
| 112 | ## 数据类型 | 112 | ## 数据类型 |
| 113 | 113 | ||
| @@ -129,7 +129,7 @@ Ascend 950PR/Ascend 950DT支持的数据类型为:b8、b16、b32、b64。 | |||
| 129 | 129 | ||
| 130 | - 当每层循环的dstStride为升序序列,则不同循环间的地址空间不能交织或者重叠。以一个2D Padding场景为例,loopSrcStride、loopDstStride第二个维度的stride值最小是3,数据3不能落在维度1的循环中。 | 130 | - 当每层循环的dstStride为升序序列,则不同循环间的地址空间不能交织或者重叠。以一个2D Padding场景为例,loopSrcStride、loopDstStride第二个维度的stride值最小是3,数据3不能落在维度1的循环中。 |
| 131 | 131 | ||
| 132 | -  | 132 | +  |
| 133 | 133 | ||
| 134 | - 该接口通过NDDMA进行数据搬运,对应的NDDMA Cache大小为32KB,在使用DataCopy接口进行数据搬运前,需要使用NdDmaDci接口刷新缓存,否则多核场景下读写同一块Global Memory地址可能会导致部分核读取数据错误。 | 134 | - 该接口通过NDDMA进行数据搬运,对应的NDDMA Cache大小为32KB,在使用DataCopy接口进行数据搬运前,需要使用NdDmaDci接口刷新缓存,否则多核场景下读写同一块Global Memory地址可能会导致部分核读取数据错误。 |
| 135 | 135 | ||
Rdocs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_UBToGM_NZ2ND.md→docs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_UBToGM_NZ2ND.md+5-5
| @@ -30,7 +30,7 @@ | |||
| 30 | 30 | ||
| 31 | 该接口为软仿接口,从易用性角度出发进行设计,支持在从Unified Buffer到Global Memory的数据搬运过程中进行NZ到ND格式的转换。 | 31 | 该接口为软仿接口,从易用性角度出发进行设计,支持在从Unified Buffer到Global Memory的数据搬运过程中进行NZ到ND格式的转换。 |
| 32 | 32 | ||
| 33 | -具体支持的数据通路为(以[逻辑位置TPosition](../../../辅助数据结构/TPosition.md)表示): | 33 | +具体支持的数据通路为(以[逻辑位置TPosition](../../辅助数据结构/TPosition.md)表示): |
| 34 | 34 | ||
| 35 | - Unified Buffer -> Global Memory | 35 | - Unified Buffer -> Global Memory |
| 36 | - VECOUT -> GM | 36 | - VECOUT -> GM |
| @@ -57,8 +57,8 @@ __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<T> | |||
| 57 | 57 | ||
| 58 | | 参数名 | 输入/输出 | 描述 | | 58 | | 参数名 | 输入/输出 | 描述 | |
| 59 | | :--- | :---: | :--- | | 59 | | :--- | :---: | :--- | |
| 60 | -| dst | 输出 | 目的操作数,类型为[GlobalTensor](../../../数据结构/GlobalTensor/GlobalTensor简介.md)。 | | 60 | +| dst | 输出 | 目的操作数,类型为[GlobalTensor](../../数据结构/GlobalTensor/GlobalTensor简介.md)。 | |
| 61 | -| src | 输入 | 源操作数,类型为[LocalTensor](../../../数据结构/LocalTensor/LocalTensor简介.md)。 | | 61 | +| src | 输入 | 源操作数,类型为[LocalTensor](../../数据结构/LocalTensor/LocalTensor简介.md)。 | |
| 62 | | intriParams | 输入 | 搬运参数,类型为Nz2NdParamsFull,具体参数请参考[表3](#table_nz2nd_3)。<br>具体定义请参考\$\{INSTALL\_DIR\}/include/ascendc/basic\_api/interface/kernel\_struct\_data\_copy.h,\$\{INSTALL\_DIR\}请替换为CANN软件安装后文件存储路径。 | | 62 | | intriParams | 输入 | 搬运参数,类型为Nz2NdParamsFull,具体参数请参考[表3](#table_nz2nd_3)。<br>具体定义请参考\$\{INSTALL\_DIR\}/include/ascendc/basic\_api/interface/kernel\_struct\_data\_copy.h,\$\{INSTALL\_DIR\}请替换为CANN软件安装后文件存储路径。 | |
| 63 | 63 | ||
| 64 | **表3** Nz2NdParamsFull结构体内参数定义<a name="table_nz2nd_3"></a> | 64 | **表3** Nz2NdParamsFull结构体内参数定义<a name="table_nz2nd_3"></a> |
| @@ -84,7 +84,7 @@ __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<T> | |||
| 84 | - dstNdMatrixStride = 48,表达dst中第x个目的ND矩阵的起点和第x+1个目的ND矩阵的起点的偏移,即A1和C1之间的距离,即为3个DataBlock,3 \* 16 = 48个元素。 | 84 | - dstNdMatrixStride = 48,表达dst中第x个目的ND矩阵的起点和第x+1个目的ND矩阵的起点的偏移,即A1和C1之间的距离,即为3个DataBlock,3 \* 16 = 48个元素。 |
| 85 | 85 | ||
| 86 | **图1** NZ2ND转换示意图(half数据类型)<a name="fig15851251122815"></a> | 86 | **图1** NZ2ND转换示意图(half数据类型)<a name="fig15851251122815"></a> |
| 87 | -") | 87 | +") |
| 88 | 88 | ||
| 89 | 以float数据类型为例,NZ2ND转换示意图如下,样例中参数设置值和解释说明如下: | 89 | 以float数据类型为例,NZ2ND转换示意图如下,样例中参数设置值和解释说明如下: |
| 90 | 90 | ||
| @@ -97,7 +97,7 @@ __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<T> | |||
| 97 | - dstNdMatrixStride = 40,表示dst中第x个目的ND矩阵的起点和第x+1个目的ND矩阵的起点的偏移,即A1和C1之间的距离,为5个DataBlock,5 \* 8 = 40个元素。 | 97 | - dstNdMatrixStride = 40,表示dst中第x个目的ND矩阵的起点和第x+1个目的ND矩阵的起点的偏移,即A1和C1之间的距离,为5个DataBlock,5 \* 8 = 40个元素。 |
| 98 | 98 | ||
| 99 | **图2** NZ2ND转换示意图(float数据类型)<a name="fig5586175192811"></a> | 99 | **图2** NZ2ND转换示意图(float数据类型)<a name="fig5586175192811"></a> |
| 100 | -") | 100 | +") |
| 101 | 101 | ||
| 102 | ## 数据类型<a name="section4219135304818"></a> | 102 | ## 数据类型<a name="section4219135304818"></a> |
| 103 | 103 | ||
Rdocs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/UB与UB数据搬运/DataCopy_UBToUB_continuous.md→docs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_UBToUB_continuous.md+3-3
| @@ -30,7 +30,7 @@ | |||
| 30 | 30 | ||
| 31 | 支持Unified Buffer与Unified Buffer之间的连续数据搬运,数据在传输过程中保持原始格式和内容不变。 | 31 | 支持Unified Buffer与Unified Buffer之间的连续数据搬运,数据在传输过程中保持原始格式和内容不变。 |
| 32 | 32 | ||
| 33 | -具体支持的数据通路为(以[逻辑位置TPosition](../../../辅助数据结构/TPosition.md)表示): | 33 | +具体支持的数据通路为(以[逻辑位置TPosition](../../辅助数据结构/TPosition.md)表示): |
| 34 | 34 | ||
| 35 | - Unified Buffer -> Unified Buffer | 35 | - Unified Buffer -> Unified Buffer |
| 36 | - VECIN -> VECCALC | 36 | - VECIN -> VECCALC |
| @@ -55,14 +55,14 @@ __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& | |||
| 55 | 55 | ||
| 56 | | 参数名 | 输入/输出 | 描述 | | 56 | | 参数名 | 输入/输出 | 描述 | |
| 57 | | :--- | :---: | :--- | | 57 | | :--- | :---: | :--- | |
| 58 | -| dst | 输出 | 目的操作数。类型为[LocalTensor](../../../数据结构/LocalTensor/LocalTensor简介.md),存储位置为Unified Buffer,目的地址需要32字节对齐。 | | 58 | +| dst | 输出 | 目的操作数。类型为[LocalTensor](../../数据结构/LocalTensor/LocalTensor简介.md),存储位置为Unified Buffer,目的地址需要32字节对齐。 | |
| 59 | | src | 输入 | 源操作数。类型为LocalTensor,存储位置为Unified Buffer,源地址需要32字节对齐。 | | 59 | | src | 输入 | 源操作数。类型为LocalTensor,存储位置为Unified Buffer,源地址需要32字节对齐。 | |
| 60 | | count | 输入 | 参与搬运的元素个数。<br>说明:count * sizeof(T)需要32字节对齐,若不对齐,搬运量将对32字节做向下取整。 | | 60 | | count | 输入 | 参与搬运的元素个数。<br>说明:count * sizeof(T)需要32字节对齐,若不对齐,搬运量将对32字节做向下取整。 | |
| 61 | 61 | ||
| 62 | 以half数据类型为例,源操作数的shape为1 \* 128。当count = 128时,[图1](#zh-cn_topic_0000002567699425_fig13481537531)将源操作数中128个元素连续搬运至目的操作数。 | 62 | 以half数据类型为例,源操作数的shape为1 \* 128。当count = 128时,[图1](#zh-cn_topic_0000002567699425_fig13481537531)将源操作数中128个元素连续搬运至目的操作数。 |
| 63 | 63 | ||
| 64 | **图1** 连续搬运示意图<a name="zh-cn_topic_0000002567699425_fig13481537531"></a> | 64 | **图1** 连续搬运示意图<a name="zh-cn_topic_0000002567699425_fig13481537531"></a> |
| 65 | - | 65 | + |
| 66 | 66 | ||
| 67 | ## 数据类型<a name="section4219135304818"></a> | 67 | ## 数据类型<a name="section4219135304818"></a> |
| 68 | 68 | ||
Rdocs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/UB与UB数据搬运/DataCopy_UBToUB_highdim_split.md→docs/api/SIMD-API/基础API/Memory矢量计算/数据搬运/DataCopy_UBToUB_highdim_split.md+4-4
| @@ -30,7 +30,7 @@ | |||
| 30 | 30 | ||
| 31 | 支持Unified Buffer与Unified Buffer之间的高维切分数据搬运,数据在传输过程中保持原始格式和内容不变。 | 31 | 支持Unified Buffer与Unified Buffer之间的高维切分数据搬运,数据在传输过程中保持原始格式和内容不变。 |
| 32 | 32 | ||
| 33 | -具体支持的数据通路为(以[逻辑位置TPosition](../../../辅助数据结构/TPosition.md)表示): | 33 | +具体支持的数据通路为(以[逻辑位置TPosition](../../辅助数据结构/TPosition.md)表示): |
| 34 | 34 | ||
| 35 | - Unified Buffer -> Unified Buffer | 35 | - Unified Buffer -> Unified Buffer |
| 36 | - VECIN -> VECCALC | 36 | - VECIN -> VECCALC |
| @@ -57,7 +57,7 @@ __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& | |||
| 57 | 57 | ||
| 58 | | 参数名 | 输入/输出 | 描述 | | 58 | | 参数名 | 输入/输出 | 描述 | |
| 59 | | :--- | :---: | :--- | | 59 | | :--- | :---: | :--- | |
| 60 | -| dst | 输出 | 目的操作数,类型为[LocalTensor](../../../数据结构/LocalTensor/LocalTensor简介.md),存储位置为Unified Buffer,目的地址需要32字节对齐。 | | 60 | +| dst | 输出 | 目的操作数,类型为[LocalTensor](../../数据结构/LocalTensor/LocalTensor简介.md),存储位置为Unified Buffer,目的地址需要32字节对齐。 | |
| 61 | | src | 输入 | 源操作数,类型为LocalTensor,存储位置为Unified Buffer,源地址需要32字节对齐。 | | 61 | | src | 输入 | 源操作数,类型为LocalTensor,存储位置为Unified Buffer,源地址需要32字节对齐。 | |
| 62 | | repeatParams | 输入 | 搬运参数,DataCopyParams类型,参数说明请参考表3。通过该参数可配置搬运的数据块大小、个数、间隔等信息,同时支持非连续和连续搬运。<br>具体定义请参考\$\{INSTALL\_DIR\}/include/ascendc/basic\_api/interface/kernel\_struct\_data\_copy.h,\$\{INSTALL\_DIR\}请替换为CANN软件安装后文件存储路径。 | | 62 | | repeatParams | 输入 | 搬运参数,DataCopyParams类型,参数说明请参考表3。通过该参数可配置搬运的数据块大小、个数、间隔等信息,同时支持非连续和连续搬运。<br>具体定义请参考\$\{INSTALL\_DIR\}/include/ascendc/basic\_api/interface/kernel\_struct\_data\_copy.h,\$\{INSTALL\_DIR\}请替换为CANN软件安装后文件存储路径。 | |
| 63 | 63 | ||
| @@ -86,7 +86,7 @@ __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& | |||
| 86 | - dstGap = 0,目的操作数相邻数据块之间的间隔为0。 | 86 | - dstGap = 0,目的操作数相邻数据块之间的间隔为0。 |
| 87 | 87 | ||
| 88 | **图1** 连续搬运示意图<a name="zh-cn_topic_0000002535088926_fig4621152141711"></a> | 88 | **图1** 连续搬运示意图<a name="zh-cn_topic_0000002535088926_fig4621152141711"></a> |
| 89 | -  | 89 | +  |
| 90 | 90 | ||
| 91 | - 示例2:非连续搬运 | 91 | - 示例2:非连续搬运 |
| 92 | 92 | ||
| @@ -100,7 +100,7 @@ __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& | |||
| 100 | - dstGap = 2,目的操作数相邻数据块之间的间隔为2。 | 100 | - dstGap = 2,目的操作数相邻数据块之间的间隔为2。 |
| 101 | 101 | ||
| 102 | **图2** 非连续搬运示意图<a name="zh-cn_topic_0000002535088926_fig422819202304"></a> | 102 | **图2** 非连续搬运示意图<a name="zh-cn_topic_0000002535088926_fig422819202304"></a> |
| 103 | -  | 103 | +  |
| 104 | 104 | ||
| 105 | ## 数据类型<a name="section4219135304818"></a> | 105 | ## 数据类型<a name="section4219135304818"></a> |
| 106 | 106 | ||
| @@ -1,17 +0,0 @@ | |||
| 1 | -# GM与UB数据搬运<a name="ZH-CN_TOPIC_0000001499154365"></a> | ||
| 2 | - | ||
| 3 | -- **[GM与UB连续数据搬运(DataCopy)](DataCopy_GMAndUB_continuous.md)** | ||
| 4 | - | ||
| 5 | -- **[GM与UB高维切分数据搬运(DataCopy)](DataCopy_GMAndUB_highdim_split.md)** | ||
| 6 | - | ||
| 7 | -- **[GM与UB切片数据搬运(DataCopy)](DataCopy_GMAndUB_slice.md)** | ||
| 8 | - | ||
| 9 | -- **[GM -> UB随路转换ND2NZ搬运(DataCopy)](DataCopy_GMToUB_ND2NZ.md)** | ||
| 10 | - | ||
| 11 | -- **[UB -> GM随路转换NZ2ND搬运(DataCopy)](DataCopy_UBToGM_NZ2ND.md)** | ||
| 12 | - | ||
| 13 | -- **[GM -> UB多维数据搬运NDDMA(DataCopy)](DataCopy_GMToUB_NDDMA.md)** | ||
| 14 | - | ||
| 15 | -- **[GM -> UB非对齐数据搬运(DataCopyPad)](DataCopyPad_GMToUB.md)** | ||
| 16 | - | ||
| 17 | -- **[UB -> GM非对齐数据搬运(DataCopyPad)](DataCopyPad_UBToGM.md)** | ||
| @@ -1,9 +0,0 @@ | |||
| 1 | -# UB与UB数据搬运<a name="ZH-CN_TOPIC_0000001499154365"></a> | ||
| 2 | - | ||
| 3 | -- **[UB -> UB连续数据搬运(DataCopy)](DataCopy_UBToUB_continuous.md)** | ||
| 4 | - | ||
| 5 | -- **[UB -> UB高维切分数据搬运(DataCopy)](DataCopy_UBToUB_highdim_split.md)** | ||
| 6 | - | ||
| 7 | -- **[UB -> UB连续数据搬运(Copy)](Copy_UBToUB_continuous.md)** | ||
| 8 | - | ||
| 9 | -- **[UB -> UB掩码式高维数据搬运(Copy)](Copy_UBToUB_mask_highdim_split.md)** | ||
| @@ -1,4 +1,25 @@ | |||
| 1 | # 数据搬运<a name="ZH-CN_TOPIC_0000001499154365"></a> | 1 | # 数据搬运<a name="ZH-CN_TOPIC_0000001499154365"></a> |
| 2 | 2 | ||
| 3 | -- **[GM与UB数据搬运](GM与UB数据搬运/GM与UB数据搬运.md)** | 3 | +- **[DataCopy(GM与UB-连续数据搬运)](DataCopy_GMAndUB_continuous.md)** |
| 4 | -- **[UB与UB数据搬运](UB与UB数据搬运/UB与UB数据搬运.md)** | 4 | + |
| 5 | +- **[DataCopy(GM与UB-高维切分数据搬运)](DataCopy_GMAndUB_highdim_split.md)** | ||
| 6 | + | ||
| 7 | +- **[DataCopy(GM与UB-切片数据搬运)](DataCopy_GMAndUB_slice.md)** | ||
| 8 | + | ||
| 9 | +- **[DataCopy(GM -> UB-随路转换ND2NZ搬运)](DataCopy_GMToUB_ND2NZ.md)** | ||
| 10 | + | ||
| 11 | +- **[DataCopy(UB -> GM-随路转换NZ2ND搬运)](DataCopy_UBToGM_NZ2ND.md)** | ||
| 12 | + | ||
| 13 | +- **[DataCopy(GM -> UB-多维数据搬运NDDMA)](DataCopy_GMToUB_NDDMA.md)** | ||
| 14 | + | ||
| 15 | +- **[DataCopyPad(GM -> UB-非对齐数据搬运)](DataCopyPad_GMToUB.md)** | ||
| 16 | + | ||
| 17 | +- **[DataCopyPad(UB -> GM-非对齐数据搬运)](DataCopyPad_UBToGM.md)** | ||
| 18 | + | ||
| 19 | +- **[DataCopy(UB -> UB-连续数据搬运)](DataCopy_UBToUB_continuous.md)** | ||
| 20 | + | ||
| 21 | +- **[DataCopy(UB -> UB-高维切分数据搬运)](DataCopy_UBToUB_highdim_split.md)** | ||
| 22 | + | ||
| 23 | +- **[Copy(UB -> UB-连续数据搬运)](Copy_UBToUB_continuous.md)** | ||
| 24 | + | ||
| 25 | +- **[Copy(UB -> UB-掩码式高维数据搬运)](Copy_UBToUB_mask_highdim_split.md)** | ||
| @@ -28,7 +28,7 @@ | |||
| 28 | 28 | ||
| 29 | 头文件路径为:`"basic_api/kernel_operator_data_copy_intf.h"`。 | 29 | 头文件路径为:`"basic_api/kernel_operator_data_copy_intf.h"`。 |
| 30 | 30 | ||
| 31 | -[DataCopyPad](../数据搬运/GM与UB数据搬运/DataCopyPad_GMToUB.md)从Global Memory将数据非对齐搬运至Unified Buffer时,可根据开发者的需要自行填充数据。SetPadValue用于设置DataCopyPad需要填充的数值。 | 31 | +[DataCopyPad](../数据搬运/DataCopyPad_GMToUB.md)从Global Memory将数据非对齐搬运至Unified Buffer时,可根据开发者的需要自行填充数据。SetPadValue用于设置DataCopyPad需要填充的数值。 |
| 32 | 32 | ||
| 33 | 具体支持的数据通路为(以[逻辑位置TPosition](../../辅助数据结构/TPosition.md)表示): | 33 | 具体支持的数据通路为(以[逻辑位置TPosition](../../辅助数据结构/TPosition.md)表示): |
| 34 | 34 | ||
| @@ -47,5 +47,5 @@ __aicore__ inline void Compute() | |||
| 47 | ``` | 47 | ``` |
| 48 | 48 | ||
| 49 | >[!NOTE]说明 | 49 | >[!NOTE]说明 |
| 50 | ->- GM与UB间的数据搬运需通过[GM与UB数据搬运](../Memory矢量计算/数据搬运/GM与UB数据搬运/GM与UB数据搬运.md)完成; | 50 | +>- GM与UB间的数据搬运需通过[GM与UB数据搬运](../Memory矢量计算/数据搬运/数据搬运.md)完成; |
| 51 | >- Vector Function的流水类型为PIPE_V,Vector Function内部的同步依赖通过[LocalMemBar](./同步控制/LocalMemBar.md)接口插入。 | 51 | >- Vector Function的流水类型为PIPE_V,Vector Function内部的同步依赖通过[LocalMemBar](./同步控制/LocalMemBar.md)接口插入。 |
| @@ -28,7 +28,7 @@ | |||
| 28 | 28 | ||
| 29 | 头文件路径为:`"basic_api/kernel_common.h"`。 | 29 | 头文件路径为:`"basic_api/kernel_common.h"`。 |
| 30 | 30 | ||
| 31 | -从框架获取并占用一个MutexID,与[ReleaseMutexID](ReleaseMutexID_ISASI.md)配合使用,管理MutexID的获取和释放。获取的MutexID可以传入[Mutex::Lock](Mutex_ISASI/Lock.md)/[Mutex::Unlock](Mutex_ISASI/Unlock.md)接口使用,此时Mutex::Lock/Unlock可以与TQue等其他接口配合使用。 | 31 | +从框架获取并占用一个MutexID,与[ReleaseMutexID](ReleaseMutexID_ISASI.md)配合使用,管理MutexID的获取和释放。获取的MutexID可以传入[Mutex::Lock](Lock.md)/[Mutex::Unlock](Unlock.md)接口使用,此时Mutex::Lock/Unlock可以与TQue等其他接口配合使用。 |
| 32 | 32 | ||
| 33 | ## 函数原型<a name="section620mcpsimp"></a> | 33 | ## 函数原型<a name="section620mcpsimp"></a> |
| 34 | 34 | ||
| @@ -54,4 +54,4 @@ MutexID有数量限制,使用结束后应立即调用[ReleaseMutexID](ReleaseM | |||
| 54 | 54 | ||
| 55 | ## 调用示例<a name="section837496171220"></a> | 55 | ## 调用示例<a name="section837496171220"></a> |
| 56 | 56 | ||
| 57 | -示例请参考[Lock调用示例](Mutex_ISASI/Lock.md#section123275308128)。 | 57 | +示例请参考[Lock调用示例](Lock.md#section123275308128)。 |
Rdocs/api/SIMD-API/基础API/同步控制/核内同步/Mutex_ISASI/Lock.md→docs/api/SIMD-API/基础API/同步控制/核内同步/Lock.md+2-2
| @@ -61,7 +61,7 @@ static __aicore__ inline void Lock(MutexID id) | |||
| 61 | ## 约束说明<a name="section184751024101111"></a> | 61 | ## 约束说明<a name="section184751024101111"></a> |
| 62 | 62 | ||
| 63 | - 每个锁有固定的一个MutexID,在不同编程范式中,该ID的获取以及释放方式不同: | 63 | - 每个锁有固定的一个MutexID,在不同编程范式中,该ID的获取以及释放方式不同: |
| 64 | - - 采用[TPipe-TQue框架编程范式](https://gitcode.com/cann/asc-devkit/blob/9.1.0/docs/guide/编程指南/编程模型/AI-Core-SIMD编程/基于TPipe-TQue框架编程/TPipe-TQue框架编程范式.md)时,MutexID需要通过[AllocMutexID](../AllocMutexID_ISASI.md)/[ReleaseMutexID](../ReleaseMutexID_ISASI.md)进行申请释放。 | 64 | + - 采用[TPipe-TQue框架编程范式](https://gitcode.com/cann/asc-devkit/blob/9.1.0/docs/guide/编程指南/编程模型/AI-Core-SIMD编程/基于TPipe-TQue框架编程/TPipe-TQue框架编程范式.md)时,MutexID需要通过[AllocMutexID](AllocMutexID_ISASI.md)/[ReleaseMutexID](ReleaseMutexID_ISASI.md)进行申请释放。 |
| 65 | - 采用[静态Tensor编程范式](https://gitcode.com/cann/asc-devkit/blob/9.1.0/docs/guide/编程指南/编程模型/AI-Core-SIMD编程/基于Tensor的CPP编程/静态Tensor编程.md)时,MutexID由开发者自行管理,建议使用0-27,28-31为系统内部规划预留,不建议使用。 | 65 | - 采用[静态Tensor编程范式](https://gitcode.com/cann/asc-devkit/blob/9.1.0/docs/guide/编程指南/编程模型/AI-Core-SIMD编程/基于Tensor的CPP编程/静态Tensor编程.md)时,MutexID由开发者自行管理,建议使用0-27,28-31为系统内部规划预留,不建议使用。 |
| 66 | - 对于同一个MutexID,必须先执行Lock,然后才能执行Unlock,且指定的pipe需要相同。如果Lock和Unlock没有按照这种"成对出现"的顺序排列,硬件行为将不可预测。以下是常见的错误用法与正确用法示例: | 66 | - 对于同一个MutexID,必须先执行Lock,然后才能执行Unlock,且指定的pipe需要相同。如果Lock和Unlock没有按照这种"成对出现"的顺序排列,硬件行为将不可预测。以下是常见的错误用法与正确用法示例: |
| 67 | 67 | ||
| @@ -86,7 +86,7 @@ static __aicore__ inline void Lock(MutexID id) | |||
| 86 | AscendC::Mutex::Unlock<PIPE_V>(0); | 86 | AscendC::Mutex::Unlock<PIPE_V>(0); |
| 87 | ``` | 87 | ``` |
| 88 | 88 | ||
| 89 | -- 使用相同MutexID、相同流水的两组Lock/UnLock指令时,第二次Lock不会再阻塞流水,这种情况建议使用[PipeBarrier](../PipeBarrier_ISASI.md)接口。以下是错误用法与正确用法的示例: | 89 | +- 使用相同MutexID、相同流水的两组Lock/UnLock指令时,第二次Lock不会再阻塞流水,这种情况建议使用[PipeBarrier](PipeBarrier_ISASI.md)接口。以下是错误用法与正确用法的示例: |
| 90 | 90 | ||
| 91 | ```cpp | 91 | ```cpp |
| 92 | // 错误写法:第二次Lock已不再阻塞,起不到同步效果。 | 92 | // 错误写法:第二次Lock已不再阻塞,起不到同步效果。 |
Rdocs/api/SIMD-API/基础API/同步控制/核内同步/Mutex_ISASI/简介.md→docs/api/SIMD-API/基础API/同步控制/核内同步/Mutex_ISASI.md+4-4
| @@ -6,20 +6,20 @@ Mutex用于核内异步流水指令之间的同步控制,其功能类似于传 | |||
| 6 | - [Unlock](Unlock.md):直到当前流水的前序指令执行完成后,根据MutexID释放对应Mutex。 | 6 | - [Unlock](Unlock.md):直到当前流水的前序指令执行完成后,根据MutexID释放对应Mutex。 |
| 7 | 7 | ||
| 8 | **图1** Lock/UnLock接口<a name="fig58242463299"></a> | 8 | **图1** Lock/UnLock接口<a name="fig58242463299"></a> |
| 9 | - | 9 | + |
| 10 | 10 | ||
| 11 | 每个锁有固定的一个MutexID,在不同编程范式中,该ID的获取以及释放方式不同: | 11 | 每个锁有固定的一个MutexID,在不同编程范式中,该ID的获取以及释放方式不同: |
| 12 | 12 | ||
| 13 | -- 采用[TPipe-TQue框架编程范式](https://gitcode.com/cann/asc-devkit/blob/9.1.0/docs/guide/编程指南/编程模型/AI-Core-SIMD编程/基于TPipe-TQue框架编程/TPipe-TQue框架编程范式.md)时,MutexID需要通过[AllocMutexID](../AllocMutexID_ISASI.md)/[ReleaseMutexID](../ReleaseMutexID_ISASI.md)进行申请释放。 | 13 | +- 采用[TPipe-TQue框架编程范式](https://gitcode.com/cann/asc-devkit/blob/9.1.0/docs/guide/编程指南/编程模型/AI-Core-SIMD编程/基于TPipe-TQue框架编程/TPipe-TQue框架编程范式.md)时,MutexID需要通过[AllocMutexID](AllocMutexID_ISASI.md)/[ReleaseMutexID](ReleaseMutexID_ISASI.md)进行申请释放。 |
| 14 | - 采用[静态Tensor编程范式](https://gitcode.com/cann/asc-devkit/blob/9.1.0/docs/guide/编程指南/编程模型/AI-Core-SIMD编程/基于Tensor的CPP编程/静态Tensor编程.md)时,MutexID由开发者自行管理,建议使用0-27,28-31为系统内部规划预留,不建议使用。 | 14 | - 采用[静态Tensor编程范式](https://gitcode.com/cann/asc-devkit/blob/9.1.0/docs/guide/编程指南/编程模型/AI-Core-SIMD编程/基于Tensor的CPP编程/静态Tensor编程.md)时,MutexID由开发者自行管理,建议使用0-27,28-31为系统内部规划预留,不建议使用。 |
| 15 | 15 | ||
| 16 | -相对于[SetFlag/WaitFlag](../SetFlag_WaitFlag_ISASI.md)同步机制,使用Lock/Unlock接口有以下优势: | 16 | +相对于[SetFlag/WaitFlag](SetFlag_WaitFlag_ISASI.md)同步机制,使用Lock/Unlock接口有以下优势: |
| 17 | 17 | ||
| 18 | - 内聚性更强,使用时与其它流水线解耦,可以简化反向同步,如图2所示,以PIPE\_MTE2与PIPE\_V之间同步为例。 | 18 | - 内聚性更强,使用时与其它流水线解耦,可以简化反向同步,如图2所示,以PIPE\_MTE2与PIPE\_V之间同步为例。 |
| 19 | - 可以使用更多的同步信号量。 | 19 | - 可以使用更多的同步信号量。 |
| 20 | 20 | ||
| 21 | **图2** SetFlag/WaitFlag同步与Lock/Unlock同步代码差异<a name="fig27101823165111"></a> | 21 | **图2** SetFlag/WaitFlag同步与Lock/Unlock同步代码差异<a name="fig27101823165111"></a> |
| 22 | - | 22 | + |
| 23 | 23 | ||
| 24 | Mutex类定义如下: | 24 | Mutex类定义如下: |
| 25 | 25 | ||
| @@ -1,7 +0,0 @@ | |||
| 1 | -# Mutex(ISASI)<a name="ZH-CN_TOPIC_0000002352479256"></a> | ||
| 2 | - | ||
| 3 | -- **[简介](简介.md)** | ||
| 4 | - | ||
| 5 | -- **[Lock](Lock.md)** | ||
| 6 | - | ||
| 7 | -- **[Unlock](Unlock.md)** | ||
| @@ -54,4 +54,4 @@ MutexID有数量限制,使用结束后应立即调用[ReleaseMutexID](ReleaseM | |||
| 54 | 54 | ||
| 55 | ## 调用示例<a name="section837496171220"></a> | 55 | ## 调用示例<a name="section837496171220"></a> |
| 56 | 56 | ||
| 57 | -示例请参考[Lock调用示例](Mutex_ISASI/Lock.md#section123275308128)。 | 57 | +示例请参考[Lock调用示例](Lock.md#section123275308128)。 |
Rdocs/api/SIMD-API/基础API/同步控制/核内同步/TQueSync/SetFlag-WaitFlag.md→docs/api/SIMD-API/基础API/同步控制/核内同步/SetFlag-WaitFlag.md+2-2
| @@ -34,7 +34,7 @@ | |||
| 34 | - WaitFlag:当执行到该指令时,如果发现对应标志位为0,该队列的后续指令将一直被阻塞;如果发现对应标志位为1,则将对应标志位设置为0,同时后续指令开始执行。 | 34 | - WaitFlag:当执行到该指令时,如果发现对应标志位为0,该队列的后续指令将一直被阻塞;如果发现对应标志位为1,则将对应标志位设置为0,同时后续指令开始执行。 |
| 35 | 35 | ||
| 36 | > [!NOTE]说明 | 36 | > [!NOTE]说明 |
| 37 | -> 此接口与[SetFlag/WaitFlag(ISASI)](../SetFlag_WaitFlag_ISASI.md)接口也能实现相同的功能。二者的区别在于,TQueSync类接口可以保证跨硬件版本兼容,而[SetFlag/WaitFlag(ISASI)](../SetFlag_WaitFlag_ISASI.md)中的接口标注为ISASI类别,不能保证跨硬件版本兼容。 | 37 | +> 此接口与[SetFlag/WaitFlag(ISASI)](SetFlag_WaitFlag_ISASI.md)接口也能实现相同的功能。二者的区别在于,TQueSync类接口可以保证跨硬件版本兼容,而[SetFlag/WaitFlag(ISASI)](SetFlag_WaitFlag_ISASI.md)中的接口标注为ISASI类别,不能保证跨硬件版本兼容。 |
| 38 | 38 | ||
| 39 | ## 函数原型<a name="section620mcpsimp"></a> | 39 | ## 函数原型<a name="section620mcpsimp"></a> |
| 40 | 40 | ||
| @@ -49,7 +49,7 @@ __aicore__ inline void WaitFlag(TEventID id) | |||
| 49 | 49 | ||
| 50 | | 参数名 | 输入/输出 | 描述 | | 50 | | 参数名 | 输入/输出 | 描述 | |
| 51 | | --- | --- | --- | | 51 | | --- | --- | --- | |
| 52 | -| id | 输入 | 事件ID,由用户自己指定,推荐通过[AllocEventID](../../../资源管理/Pipe和Que框架/TPipe/AllocEventID.md)或者[FetchEventID](../../../资源管理/Pipe和Que框架/TPipe/FetchEventID.md)来获取。定义如下:<br>`using TEventID = int8_t;`<br>不同产品对id的取值范围说明请参见[id取值范围说明](#id取值范围说明)。 | | 52 | +| id | 输入 | 事件ID,由用户自己指定,推荐通过[AllocEventID](../../资源管理/TPipe/AllocEventID.md)或者[FetchEventID](../../资源管理/TPipe/FetchEventID.md)来获取。定义如下:<br>`using TEventID = int8_t;`<br>不同产品对id的取值范围说明请参见[id取值范围说明](#id取值范围说明)。 | |
| 53 | 53 | ||
| 54 | ### id取值范围说明 | 54 | ### id取值范围说明 |
| 55 | 55 | ||
| @@ -30,7 +30,7 @@ | |||
| 30 | 如图1所示,SetFlag/WaitFlag接口用于核内多流水间的同步: | 30 | 如图1所示,SetFlag/WaitFlag接口用于核内多流水间的同步: |
| 31 | 31 | ||
| 32 | > [!NOTE]说明 | 32 | > [!NOTE]说明 |
| 33 | ->该接口标注为ISASI类别,不能保证跨硬件版本兼容。如需保证跨硬件版本兼容的同步控制接口,请参见[TQueSync SetFlag/WaitFlag](TQueSync/SetFlag-WaitFlag.md)。二者的区别在于,TQueSync类接口可以保证跨硬件版本兼容。 | 33 | +>该接口标注为ISASI类别,不能保证跨硬件版本兼容。如需保证跨硬件版本兼容的同步控制接口,请参见[TQueSync SetFlag/WaitFlag](SetFlag-WaitFlag.md)。二者的区别在于,TQueSync类接口可以保证跨硬件版本兼容。 |
| 34 | 34 | ||
| 35 | - SetFlag:当源流水的前序指令的所有读写操作都完成之后,当前指令开始执行,并将硬件中的对应标志位设置为1。SetFlag只是设置硬件中的对应标志位,并不会阻塞源流水中的下一个指令。 | 35 | - SetFlag:当源流水的前序指令的所有读写操作都完成之后,当前指令开始执行,并将硬件中的对应标志位设置为1。SetFlag只是设置硬件中的对应标志位,并不会阻塞源流水中的下一个指令。 |
| 36 | - WaitFlag:当目的流水执行到该指令时,如果发现硬件中对应标志位为0,目的流水的后续指令将一直被阻塞;如果发现硬件中对应标志位为1,则将硬件中对应标志位设置为0,同时目的流水的后续指令开始执行。 | 36 | - WaitFlag:当目的流水执行到该指令时,如果发现硬件中对应标志位为0,目的流水的后续指令将一直被阻塞;如果发现硬件中对应标志位为1,则将硬件中对应标志位设置为0,同时目的流水的后续指令开始执行。 |
| @@ -66,7 +66,7 @@ __aicore__ inline void WaitFlag(int32_t eventID) | |||
| 66 | 66 | ||
| 67 | - SetFlag和WaitFlag必须成对使用,且SetFlag和WaitFlag的参数必须完全一致(包括模板参数event和输入参数eventID)。如果不匹配,会引发timeout问题。例如,`SetFlag<HardEvent::S_MTE3>(1)`和`WaitFlag<HardEvent::MTE3_MTE1>(1)`并不匹配,因为其模板参数event不同。 | 67 | - SetFlag和WaitFlag必须成对使用,且SetFlag和WaitFlag的参数必须完全一致(包括模板参数event和输入参数eventID)。如果不匹配,会引发timeout问题。例如,`SetFlag<HardEvent::S_MTE3>(1)`和`WaitFlag<HardEvent::MTE3_MTE1>(1)`并不匹配,因为其模板参数event不同。 |
| 68 | 68 | ||
| 69 | -- 在采用[TPipe-TQue框架编程范式](https://gitcode.com/cann/asc-devkit/blob/9.1.0/docs/guide/编程指南/编程模型/AI-Core-SIMD编程/基于TPipe-TQue框架编程/TPipe-TQue框架编程范式.md)时,eventID需要通过[AllocEventID](../../资源管理/Pipe和Que框架/TPipe/AllocEventID.md)或者[FetchEventID](../../资源管理/Pipe和Que框架/TPipe/FetchEventID.md)来获取。 | 69 | +- 在采用[TPipe-TQue框架编程范式](https://gitcode.com/cann/asc-devkit/blob/9.1.0/docs/guide/编程指南/编程模型/AI-Core-SIMD编程/基于TPipe-TQue框架编程/TPipe-TQue框架编程范式.md)时,eventID需要通过[AllocEventID](../../资源管理/TPipe/AllocEventID.md)或者[FetchEventID](../../资源管理/TPipe/FetchEventID.md)来获取。 |
| 70 | 70 | ||
| 71 | - 在采用[静态Tensor编程范式](https://gitcode.com/cann/asc-devkit/blob/9.1.0/docs/guide/编程指南/编程模型/AI-Core-SIMD编程/基于Tensor的CPP编程/静态Tensor编程.md)时,事件的类型和事件ID由开发者自行管理,建议使用事件ID0-5,事件ID6用于系统内部规划(当前未使用),事件ID7用于TPipe编程中的**自动同步**功能,目前暂不建议直接使用事件ID6-7。 | 71 | - 在采用[静态Tensor编程范式](https://gitcode.com/cann/asc-devkit/blob/9.1.0/docs/guide/编程指南/编程模型/AI-Core-SIMD编程/基于Tensor的CPP编程/静态Tensor编程.md)时,事件的类型和事件ID由开发者自行管理,建议使用事件ID0-5,事件ID6用于系统内部规划(当前未使用),事件ID7用于TPipe编程中的**自动同步**功能,目前暂不建议直接使用事件ID6-7。 |
| 72 | 72 | ||
| @@ -1,5 +0,0 @@ | |||
| 1 | -# TQueSync<a name="ZH-CN_TOPIC_0000001911120740"></a> | ||
| 2 | - | ||
| 3 | -- **[模板参数](模板参数.md)** | ||
| 4 | - | ||
| 5 | -- **[SetFlag/WaitFlag](SetFlag-WaitFlag.md)** | ||
Rdocs/api/SIMD-API/基础API/同步控制/核内同步/TQueSync/模板参数.md→docs/api/SIMD-API/基础API/同步控制/核内同步/TQueSync模板参数.md+2-2
| @@ -47,8 +47,8 @@ public: | |||
| 47 | 47 | ||
| 48 | | 参数名 | 输入/输出 | 描述 | | 48 | | 参数名 | 输入/输出 | 描述 | |
| 49 | | --- | --- | --- | | 49 | | --- | --- | --- | |
| 50 | -| src | 输入 | 源流水。支持的流水参考[硬件流水类型](../核内同步能力概述.md#硬件流水类型)。 | | 50 | +| src | 输入 | 源流水。支持的流水参考[硬件流水类型](核内同步能力概述.md#硬件流水类型)。 | |
| 51 | -| dst | 输入 | 目的流水。支持的流水参考[硬件流水类型](../核内同步能力概述.md#硬件流水类型)。 | | 51 | +| dst | 输入 | 目的流水。支持的流水参考[硬件流水类型](核内同步能力概述.md#硬件流水类型)。 | |
| 52 | 52 | ||
| 53 | ## 返回值说明<a name="section640mcpsimp"></a> | 53 | ## 返回值说明<a name="section640mcpsimp"></a> |
| 54 | 54 | ||
Rdocs/api/SIMD-API/基础API/同步控制/核内同步/Mutex_ISASI/Unlock.md→docs/api/SIMD-API/基础API/同步控制/核内同步/Unlock.md+0-0
File renamed without changes.
| @@ -4,7 +4,9 @@ | |||
| 4 | 4 | ||
| 5 | - **[关键特性说明](关键特性说明.md)** | 5 | - **[关键特性说明](关键特性说明.md)** |
| 6 | 6 | ||
| 7 | -- **[TQueSync](TQueSync/TQueSync.md)** | 7 | +- **[TQueSync模板参数](TQueSync模板参数.md)** |
| 8 | + | ||
| 9 | +- **[SetFlag/WaitFlag](SetFlag-WaitFlag.md)** | ||
| 8 | 10 | ||
| 9 | - **[SetFlag/WaitFlag\(ISASI\)](SetFlag_WaitFlag_ISASI.md)** | 11 | - **[SetFlag/WaitFlag\(ISASI\)](SetFlag_WaitFlag_ISASI.md)** |
| 10 | 12 | ||
| @@ -12,7 +14,11 @@ | |||
| 12 | 14 | ||
| 13 | - **[DataSyncBarrier\(ISASI\)](DataSyncBarrier_ISASI.md)** | 15 | - **[DataSyncBarrier\(ISASI\)](DataSyncBarrier_ISASI.md)** |
| 14 | 16 | ||
| 15 | -- **[Mutex(ISASI)](Mutex_ISASI/Mutex_ISASI.md)** | 17 | +- **[Mutex_ISASI](Mutex_ISASI.md)** |
| 18 | + | ||
| 19 | +- **[Lock](Lock.md)** | ||
| 20 | + | ||
| 21 | +- **[Unlock](Unlock.md)** | ||
| 16 | 22 | ||
| 17 | - **[AllocMutexID \(ISASI\)](AllocMutexID_ISASI.md)** | 23 | - **[AllocMutexID \(ISASI\)](AllocMutexID_ISASI.md)** |
| 18 | 24 | ||
| @@ -58,13 +58,13 @@ AI Core内部并行的指令流水类型和解释如下所示: | |||
| 58 | 对上述核内并行流水的同步控制分为两种: | 58 | 对上述核内并行流水的同步控制分为两种: |
| 59 | 59 | ||
| 60 | - 多流水同步:同一核内具有数据依赖的不同类型流水指令之间的同步。 | 60 | - 多流水同步:同一核内具有数据依赖的不同类型流水指令之间的同步。 |
| 61 | - [TQueSync](TQueSync/TQueSync.md)类接口和[SetFlag/WaitFlag\(ISASI\)](SetFlag_WaitFlag_ISASI.md)中提供的同步控制接口的区别在于,[SetFlag/WaitFlag\(ISASI\)](SetFlag_WaitFlag_ISASI.md)中的接口标注为ISASI类别,不能保证跨硬件版本兼容;TQueSync类接口可以保证跨硬件版本兼容。 | 61 | + [TQueSync](TQueSync模板参数.md)类接口和[SetFlag/WaitFlag\(ISASI\)](SetFlag_WaitFlag_ISASI.md)中提供的同步控制接口的区别在于,[SetFlag/WaitFlag\(ISASI\)](SetFlag_WaitFlag_ISASI.md)中的接口标注为ISASI类别,不能保证跨硬件版本兼容;TQueSync类接口可以保证跨硬件版本兼容。 |
| 62 | 通过SetFlag/WaitFlag接口进行不同流水线间的同步控制。在SetFlag/WaitFlag的指令中,可以指定一对指令流水(源流水与目的流水)先后执行的关系,表示两个指令流水之间完成一组“锁”机制,其作用原理为: | 62 | 通过SetFlag/WaitFlag接口进行不同流水线间的同步控制。在SetFlag/WaitFlag的指令中,可以指定一对指令流水(源流水与目的流水)先后执行的关系,表示两个指令流水之间完成一组“锁”机制,其作用原理为: |
| 63 | - SetFlag:当源流水的前序指令的所有读写操作都完成之后,当前指令开始执行,并将硬件中的对应标志位设置为1。 | 63 | - SetFlag:当源流水的前序指令的所有读写操作都完成之后,当前指令开始执行,并将硬件中的对应标志位设置为1。 |
| 64 | - WaitFlag:当目的流水执行到该指令时,如果发现硬件中对应标志位为0,目的流水的后续指令将一直被阻塞;如果发现硬件中对应标志位为1,则将硬件中对应标志位设置为0,同时目的流水的后续指令开始执行。 | 64 | - WaitFlag:当目的流水执行到该指令时,如果发现硬件中对应标志位为0,目的流水的后续指令将一直被阻塞;如果发现硬件中对应标志位为1,则将硬件中对应标志位设置为0,同时目的流水的后续指令开始执行。 |
| 65 | 65 | ||
| 66 | <!-- npu="950" id3 --> | 66 | <!-- npu="950" id3 --> |
| 67 | - Ascend 950PR/Ascend 950DT新增通过[Lock](Mutex_ISASI/Lock.md)/[Unlock](Mutex_ISASI/Unlock.md)接口进行不同流水线间的同步控制。通过Lock锁定指定流水(阻塞后续指令),再通过Unlock释放流水,来完成流水间的同步依赖。 | 67 | + Ascend 950PR/Ascend 950DT新增通过[Lock](Lock.md)/[Unlock](Unlock.md)接口进行不同流水线间的同步控制。通过Lock锁定指定流水(阻塞后续指令),再通过Unlock释放流水,来完成流水间的同步依赖。 |
| 68 | - Lock:根据MutexID获取Mutex,若Mutex已被锁定,将阻塞后续指定流水指令队列,直到前序指令中对应MutexID的Mutex被Unlock。 | 68 | - Lock:根据MutexID获取Mutex,若Mutex已被锁定,将阻塞后续指定流水指令队列,直到前序指令中对应MutexID的Mutex被Unlock。 |
| 69 | - Unlock:当前流水的前置指令退出后,根据MutexID释放对应Mutex。 | 69 | - Unlock:当前流水的前置指令退出后,根据MutexID释放对应Mutex。 |
| 70 | <!-- end id3 --> | 70 | <!-- end id3 --> |
| @@ -11,7 +11,7 @@ AI Core的同步,总共分成3类:核内同步、核间同步、任务间同 | |||
| 11 | | [SetFlag/WaitFlag\(ISASI\)](核内同步/SetFlag_WaitFlag_ISASI.md) | 多流水同步:同一核内不同流水之间的同步指令。SetFlag负责发送通知,WaitFlag负责阻塞直到SetFlag发送通知。 | 硬件同步 | | 11 | | [SetFlag/WaitFlag\(ISASI\)](核内同步/SetFlag_WaitFlag_ISASI.md) | 多流水同步:同一核内不同流水之间的同步指令。SetFlag负责发送通知,WaitFlag负责阻塞直到SetFlag发送通知。 | 硬件同步 | |
| 12 | | [PipeBarrier](核内同步/PipeBarrier_ISASI.md) | 单流水同步:同一核内相同流水之间的同步指令(不支持PIPE_S单流水同步)。 | 硬件同步 | | 12 | | [PipeBarrier](核内同步/PipeBarrier_ISASI.md) | 单流水同步:同一核内相同流水之间的同步指令(不支持PIPE_S单流水同步)。 | 硬件同步 | |
| 13 | | [DataSyncBarrier](核内同步/DataSyncBarrier_ISASI.md) | 阻塞后续的指令执行,直到所有之前的内存访问指令(需要等待的内存位置可通过参数控制)执行结束。 | 硬件同步 | | 13 | | [DataSyncBarrier](核内同步/DataSyncBarrier_ISASI.md) | 阻塞后续的指令执行,直到所有之前的内存访问指令(需要等待的内存位置可通过参数控制)执行结束。 | 硬件同步 | |
| 14 | -| [Lock/Unlock](核内同步/Mutex_ISASI/Mutex_ISASI.md) | 用于核内异步流水指令之间的同步处理,其功能类似于传统CPU中的锁机制。通过锁定指定流水再释放流水来完成流水间的同步依赖。 | 硬件同步 | | 14 | +| [Lock/Unlock](核内同步/Mutex_ISASI.md) | 用于核内异步流水指令之间的同步处理,其功能类似于传统CPU中的锁机制。通过锁定指定流水再释放流水来完成流水间的同步依赖。 | 硬件同步 | |
| 15 | 15 | ||
| 16 | **表2** 核间同步接口 | 16 | **表2** 核间同步接口 |
| 17 | 17 | ||
| @@ -138,21 +138,21 @@ | |||
| 138 | ### 数据搬运 | 138 | ### 数据搬运 |
| 139 | | 接口名 | 功能描述 | | 139 | | 接口名 | 功能描述 | |
| 140 | | --- | --- | | 140 | | --- | --- | |
| 141 | -| [GM与UB连续数据搬运(DataCopy)](Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMAndUB_continuous.md) | 支持Global Memory与Unified Buffer之间的连续数据搬运,数据在传输过程中保持原始格式和内容不变。 | | 141 | +| [DataCopy(GM与UB-连续数据搬运)](Memory矢量计算/数据搬运/DataCopy_GMAndUB_continuous.md) | 支持Global Memory与Unified Buffer之间的连续数据搬运,数据在传输过程中保持原始格式和内容不变。 | |
| 142 | -| [GM与UB高维切分数据搬运(DataCopy)](Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMAndUB_highdim_split.md) | 支持Global Memory与Unified Buffer之间的高维切分数据搬运,数据在传输过程中保持原始格式和内容不变。 | | 142 | +| [DataCopy(GM与UB-高维切分数据搬运)](Memory矢量计算/数据搬运/DataCopy_GMAndUB_highdim_split.md) | 支持Global Memory与Unified Buffer之间的高维切分数据搬运,数据在传输过程中保持原始格式和内容不变。 | |
| 143 | -| [GM与UB切片数据搬运(DataCopy)](Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMAndUB_slice.md) | 该接口为软仿接口,从易用性角度出发进行设计,支持数据的切片搬运,提取多维Tensor数据的子集进行搬运。 | | 143 | +| [DataCopy(GM与UB-切片数据搬运)](Memory矢量计算/数据搬运/DataCopy_GMAndUB_slice.md) | 该接口为软仿接口,从易用性角度出发进行设计,支持数据的切片搬运,提取多维Tensor数据的子集进行搬运。 | |
| 144 | -| [GMToUB随路转换ND2NZ搬运(DataCopy)](Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMToUB_ND2NZ.md) | 该接口为软仿接口,从易用性角度出发进行设计,支持在从Global Memory到Unified Buffer的数据搬运过程中进行ND到NZ格式的转换。 | | 144 | +| [DataCopy(GM -> UB-随路转换ND2NZ搬运)](Memory矢量计算/数据搬运/DataCopy_GMToUB_ND2NZ.md) | 该接口为软仿接口,从易用性角度出发进行设计,支持在从Global Memory到Unified Buffer的数据搬运过程中进行ND到NZ格式的转换。 | |
| 145 | -| [UBToGM随路转换NZ2ND搬运(DataCopy)](Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_UBToGM_NZ2ND.md) | 该接口为软仿接口,从易用性角度出发进行设计,支持在从Unified Buffer到Global Memory的数据搬运过程中进行NZ到ND格式的转换。 | | 145 | +| [DataCopy(UB -> GM-随路转换NZ2ND搬运)](Memory矢量计算/数据搬运/DataCopy_UBToGM_NZ2ND.md) | 该接口为软仿接口,从易用性角度出发进行设计,支持在从Unified Buffer到Global Memory的数据搬运过程中进行NZ到ND格式的转换。 | |
| 146 | -| [GMToUB多维数据搬运NDDMA(DataCopy)](Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMToUB_NDDMA.md) | 多维数据搬运接口,相比于基础数据搬运接口,可更加自由配置搬入的维度信息以及对应的Stride。 | | 146 | +| [DataCopy(GM -> UB-多维数据搬运NDDMA)](Memory矢量计算/数据搬运/DataCopy_GMToUB_NDDMA.md) | 多维数据搬运接口,相比于基础数据搬运接口,可更加自由配置搬入的维度信息以及对应的Stride。 | |
| 147 | -| [GMToUB非对齐数据搬运(DataCopyPad)](Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopyPad_GMToUB.md) | 该接口提供将数据从Global Memory非对齐搬运至Unified Buffer的功能,可以根据开发者的需要自行填充数据。 | | 147 | +| [DataCopyPad(GM -> UB-非对齐数据搬运)](Memory矢量计算/数据搬运/DataCopyPad_GMToUB.md) | 该接口提供将数据从Global Memory非对齐搬运至Unified Buffer的功能,可以根据开发者的需要自行填充数据。 | |
| 148 | -| [UBToGM非对齐数据搬运(DataCopyPad)](Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopyPad_UBToGM.md) | 该接口提供将数据从Unified Buffer非对齐搬运至Global Memory的功能。 | | 148 | +| [DataCopyPad(UB -> GM-非对齐数据搬运)](Memory矢量计算/数据搬运/DataCopyPad_UBToGM.md) | 该接口提供将数据从Unified Buffer非对齐搬运至Global Memory的功能。 | |
| 149 | | [SetPadValue(ISASI)](Memory矢量计算/数据搬运辅助配置接口/SetPadValue_ISASI.md) | 从Global Memory将数据非对齐搬运至Unified Buffer时,可根据开发者的需要自行填充数据。SetPadValue用于设置DataCopyPad需要填充的数值。 | | 149 | | [SetPadValue(ISASI)](Memory矢量计算/数据搬运辅助配置接口/SetPadValue_ISASI.md) | 从Global Memory将数据非对齐搬运至Unified Buffer时,可根据开发者的需要自行填充数据。SetPadValue用于设置DataCopyPad需要填充的数值。 | |
| 150 | | [SetLoopModePara](Memory矢量计算/数据搬运辅助配置接口/SetLoopModePara.md) | DataCopy、DataCopyPad过程中通过该接口使能loop mode并且设置loop mode的参数,在数据搬运结束后通过ResetLoopModePara重置loop mode的参数。 | | 150 | | [SetLoopModePara](Memory矢量计算/数据搬运辅助配置接口/SetLoopModePara.md) | DataCopy、DataCopyPad过程中通过该接口使能loop mode并且设置loop mode的参数,在数据搬运结束后通过ResetLoopModePara重置loop mode的参数。 | |
| 151 | | [ResetLoopModePara](Memory矢量计算/数据搬运辅助配置接口/ResetLoopModePara.md) | 重置loop mode的参数。与SetLoopModePara搭配使用,在使能loop mode并且设置loop mode的参数的数据搬运场景下,数据搬运结束后需要调用该函数来重置loop mode参数。 | | 151 | | [ResetLoopModePara](Memory矢量计算/数据搬运辅助配置接口/ResetLoopModePara.md) | 重置loop mode的参数。与SetLoopModePara搭配使用,在使能loop mode并且设置loop mode的参数的数据搬运场景下,数据搬运结束后需要调用该函数来重置loop mode参数。 | |
| 152 | -| [UBToUB连续数据搬运(DataCopy)](Memory矢量计算/数据搬运/UB与UB数据搬运/DataCopy_UBToUB_continuous.md) | 支持Unified Buffer与Unified Buffer之间的连续数据搬运,数据在传输过程中保持原始格式和内容不变。 | | 152 | +| [DataCopy(UB -> UB-连续数据搬运)](Memory矢量计算/数据搬运/DataCopy_UBToUB_continuous.md) | 支持Unified Buffer与Unified Buffer之间的连续数据搬运,数据在传输过程中保持原始格式和内容不变。 | |
| 153 | -| [UBToUB高维切分数据搬运(DataCopy)](Memory矢量计算/数据搬运/UB与UB数据搬运/DataCopy_UBToUB_highdim_split.md) | 支持Unified Buffer与Unified Buffer之间的高维切分数据搬运,数据在传输过程中保持原始格式和内容不变。 | | 153 | +| [DataCopy(UB -> UB-高维切分数据搬运)](Memory矢量计算/数据搬运/DataCopy_UBToUB_highdim_split.md) | 支持Unified Buffer与Unified Buffer之间的高维切分数据搬运,数据在传输过程中保持原始格式和内容不变。 | |
| 154 | -| [UBToUB连续数据搬运(Copy)](Memory矢量计算/数据搬运/UB与UB数据搬运/Copy_UBToUB_continuous.md) | 支持Unified Buffer和Unified Buffer之间的连续数据搬运,数据搬运时格式和内容保持不变。 | | 154 | +| [Copy(UB -> UB-连续数据搬运)](Memory矢量计算/数据搬运/Copy_UBToUB_continuous.md) | 支持Unified Buffer和Unified Buffer之间的连续数据搬运,数据搬运时格式和内容保持不变。 | |
| 155 | -| [UBToUB掩码式高维数据搬运(Copy)](Memory矢量计算/数据搬运/UB与UB数据搬运/Copy_UBToUB_mask_highdim_split.md) | 支持Unified Buffer和Unified Buffer之间的数据搬运,数据搬运时格式和内容保持不变,支持mask操作和DataBlock间隔操作。 | | 155 | +| [Copy(UB -> UB-掩码式高维数据搬运)](Memory矢量计算/数据搬运/Copy_UBToUB_mask_highdim_split.md) | 支持Unified Buffer和Unified Buffer之间的数据搬运,数据搬运时格式和内容保持不变,支持mask操作和DataBlock间隔操作。 | |
| 156 | 156 | ||
| 157 | ### 基础算术 | 157 | ### 基础算术 |
| 158 | | 接口名 | 功能描述 | | 158 | | 接口名 | 功能描述 | |
| @@ -488,24 +488,24 @@ | |||
| 488 | ## 资源管理 | 488 | ## 资源管理 |
| 489 | | 接口名 | 功能描述 | | 489 | | 接口名 | 功能描述 | |
| 490 | | --- | --- | | 490 | | --- | --- | |
| 491 | -| [TPipe](资源管理/Pipe和Que框架/TPipe/TPipe.md) | TPipe是用来管理全局内存等资源的框架。通过TPipe类提供的接口可以完成内存等资源的分配管理操作。 | | 491 | +| [TPipe](资源管理/TPipe/TPipe.md) | TPipe是用来管理全局内存等资源的框架。通过TPipe类提供的接口可以完成内存等资源的分配管理操作。 | |
| 492 | -| [GetTPipePtr](资源管理/Pipe和Que框架/GetTPipePtr.md) | 创建TPipe对象时,对象初始化会设置全局唯一的TPipe指针。本接口用于获取该指针,获取该指针后,可进行TPipe相关的操作。 | | 492 | +| [GetTPipePtr](资源管理/GetTPipePtr.md) | 创建TPipe对象时,对象初始化会设置全局唯一的TPipe指针。本接口用于获取该指针,获取该指针后,可进行TPipe相关的操作。 | |
| 493 | -| [TBufPool](资源管理/Pipe和Que框架/TBufPool/TBufPool.md) | TPipe可以管理全局内存资源,而TBufPool可以手动管理或复用Unified Buffer/L1 Buffer物理内存,主要用于多个stage计算中Unified Buffer/L1 Buffer物理内存不足的场景。 | | 493 | +| [TBufPool](资源管理/TBufPool/TBufPool.md) | TPipe可以管理全局内存资源,而TBufPool可以手动管理或复用Unified Buffer/L1 Buffer物理内存,主要用于多个stage计算中Unified Buffer/L1 Buffer物理内存不足的场景。 | |
| 494 | -| [TQue](资源管理/Pipe和Que框架/TQue/TQue.md) | 提供入队出队等接口,通过队列(Queue)完成任务间同步。 | | 494 | +| [TQue](资源管理/TQue/TQue.md) | 提供入队出队等接口,通过队列(Queue)完成任务间同步。 | |
| 495 | -| [TQueBind](资源管理/Pipe和Que框架/TQueBind/TQueBind.md) | TQueBind绑定源逻辑位置和目的逻辑位置,根据源位置和目的位置,来确定内存分配的位置 、插入对应的同步事件,帮助开发者解决内存分配和管理、同步等问题。 | | 495 | +| [TQueBind](资源管理/TQueBind/TQueBind.md) | TQueBind绑定源逻辑位置和目的逻辑位置,根据源位置和目的位置,来确定内存分配的位置 、插入对应的同步事件,帮助开发者解决内存分配和管理、同步等问题。 | |
| 496 | -| [TBuf](资源管理/Pipe和Que框架/TBuf/TBuf.md) | 使用Ascend C编程的过程中,可能会用到一些临时变量。这些临时变量占用的内存可以使用TBuf数据结构来管理。 | | 496 | +| [TBuf](资源管理/TBuf/TBuf.md) | 使用Ascend C编程的过程中,可能会用到一些临时变量。这些临时变量占用的内存可以使用TBuf数据结构来管理。 | |
| 497 | -| [InitSpmBuffer](资源管理/Pipe和Que框架/TPipe/InitSpmBuffer.md) | 初始化SPM Buffer。 | | 497 | +| [InitSpmBuffer](资源管理/TPipe/InitSpmBuffer.md) | 初始化SPM Buffer。 | |
| 498 | -| [WriteSpmBuffer](资源管理/Pipe和Que框架/TPipe/WriteSpmBuffer.md) | 将需要溢出暂存的数据拷贝到SPM Buffer中。 | | 498 | +| [WriteSpmBuffer](资源管理/TPipe/WriteSpmBuffer.md) | 将需要溢出暂存的数据拷贝到SPM Buffer中。 | |
| 499 | -| [ReadSpmBuffer](资源管理/Pipe和Que框架/TPipe/ReadSpmBuffer.md) | 从SPM Buffer读回到local数据中。 | | 499 | +| [ReadSpmBuffer](资源管理/TPipe/ReadSpmBuffer.md) | 从SPM Buffer读回到local数据中。 | |
| 500 | -| [GetUserWorkspace](资源管理/临时空间管理/workspace/GetUserWorkspace.md) | 获取用户使用的workspace指针。 | | 500 | +| [GetUserWorkspace](资源管理/workspace/GetUserWorkspace.md) | 获取用户使用的workspace指针。 | |
| 501 | -| [SetSysWorkSpace](资源管理/临时空间管理/workspace/SetSysWorkSpace.md) | 在进行融合算子编程时,由于框架通信机制需要使用到workspace,也就是系统workspace,所以在该场景下,开发者要调用该接口,设置系统workspace的指针。 | | 501 | +| [SetSysWorkSpace](资源管理/workspace/SetSysWorkSpace.md) | 在进行融合算子编程时,由于框架通信机制需要使用到workspace,也就是系统workspace,所以在该场景下,开发者要调用该接口,设置系统workspace的指针。 | |
| 502 | -| [GetSysWorkSpacePtr](资源管理/临时空间管理/workspace/GetSysWorkSpacePtr.md) | 获取系统workspace指针。 | | 502 | +| [GetSysWorkSpacePtr](资源管理/workspace/GetSysWorkSpacePtr.md) | 获取系统workspace指针。 | |
| 503 | -| [PopStackBuffer](资源管理/临时空间管理/PopStackBuffer.md) | 在指定position(逻辑位置)申请临时空间,空间大小为指定position的全部剩余空间。 | | 503 | +| [PopStackBuffer](资源管理/PopStackBuffer.md) | 在指定position(逻辑位置)申请临时空间,空间大小为指定position的全部剩余空间。 | |
| 504 | 504 | ||
| 505 | ## 同步控制 | 505 | ## 同步控制 |
| 506 | | 接口名 | 功能描述 | | 506 | | 接口名 | 功能描述 | |
| 507 | | --- | --- | | 507 | | --- | --- | |
| 508 | -| [TQueSync](同步控制/核内同步/TQueSync/TQueSync.md) | TQueSync类提供同步控制接口,开发者可以使用这类API来自行完成同步控制。 | | 508 | +| [TQueSync](同步控制/核内同步/TQueSync模板参数.md) | TQueSync类提供同步控制接口,开发者可以使用这类API来自行完成同步控制。 | |
| 509 | | [IBSet](同步控制/核间同步/IBSet.md) | 调用IBSet设置某一个核的标志位,与IBWait成对使用,表示核之间的同步等待指令:被等待核中调用IBSet,通过将值1写入全局内存中某块地址来通知等待核;而等待核中调用IBWait,持续读取全局内存中相应地址块的值,直到其值变为1,从而实现核间同步。 | | 509 | | [IBSet](同步控制/核间同步/IBSet.md) | 调用IBSet设置某一个核的标志位,与IBWait成对使用,表示核之间的同步等待指令:被等待核中调用IBSet,通过将值1写入全局内存中某块地址来通知等待核;而等待核中调用IBWait,持续读取全局内存中相应地址块的值,直到其值变为1,从而实现核间同步。 | |
| 510 | | [IBWait](同步控制/核间同步/IBWait.md) | 调用IBSet设置某一个核的标志位,与IBWait成对使用,表示核之间的同步等待指令:被等待核中调用IBSet,通过将值1写入全局内存中某块地址来通知等待核;而等待核中调用IBWait,持续读取全局内存中相应地址块的值,直到其值变为1,从而实现核间同步。 | | 510 | | [IBWait](同步控制/核间同步/IBWait.md) | 调用IBSet设置某一个核的标志位,与IBWait成对使用,表示核之间的同步等待指令:被等待核中调用IBSet,通过将值1写入全局内存中某块地址来通知等待核;而等待核中调用IBWait,持续读取全局内存中相应地址块的值,直到其值变为1,从而实现核间同步。 | |
| 511 | | [SyncAll](同步控制/核间同步/SyncAll.md) | SyncAll是核间同步控制接口。 | | 511 | | [SyncAll](同步控制/核间同步/SyncAll.md) | SyncAll是核间同步控制接口。 | |
| @@ -8,19 +8,19 @@ Global Memory与L1 Buffer/L0 Buffer之间的数据搬运提供了灵活、分层 | |||
| 8 | 8 | ||
| 9 | | 数据通路 | 功能 | 描述 | | 9 | | 数据通路 | 功能 | 描述 | |
| 10 | |----------|------|------| | 10 | |----------|------|------| |
| 11 | -| Global Memory与L1 Buffer | 连续数据搬运(DataCopy) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续数据搬运。 | | 11 | +| Global Memory与L1 Buffer | DataCopy(GM与L1-连续数据搬运) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续数据搬运。 | |
| 12 | -| Global Memory与L1 Buffer | 高维切分数据搬运(DataCopy) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续和非连续的数据搬运。 | | 12 | +| Global Memory与L1 Buffer | DataCopy(GM与L1-高维切分数据搬运) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续和非连续的数据搬运。 | |
| 13 | -| Global Memory->L1 Buffer | 随路转换-[ND2NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#ZH-CN_TOPIC_0000002568950893>)搬运(DataCopy) | 支持在数据搬运时进行[ND](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section958745018719>)到[NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section363412741113>)格式的转换。 | | 13 | +| Global Memory->L1 Buffer | DataCopy(GM -> L1-随路转换-[ND2NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#ZH-CN_TOPIC_0000002568950893>)搬运) | 支持在数据搬运时进行[ND](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section958745018719>)到[NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section363412741113>)格式的转换。 | |
| 14 | -| Global Memory->L1 Buffer | 随路转换-[DN2NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#ZH-CN_TOPIC_0000002568950893>)搬运(DataCopy) | 支持在数据搬运时进行[DN](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section958745018719>)到[NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section363412741113>)格式的转换。 | | 14 | +| Global Memory->L1 Buffer | DataCopy(GM -> L1-随路转换-[DN2NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#ZH-CN_TOPIC_0000002568950893>)搬运) | 支持在数据搬运时进行[DN](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section958745018719>)到[NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section363412741113>)格式的转换。 | |
| 15 | -| Global Memory->L1 Buffer | 非对齐数据搬运(DataCopyPad) | 支持数据非对齐搬运,可以根据开发者的需要自行填充数据。 | | 15 | +| Global Memory->L1 Buffer | DataCopyPad(GM -> L1-非对齐数据搬运) | 支持数据非对齐搬运,可以根据开发者的需要自行填充数据。 | |
| 16 | -| Global Memory->L1 Buffer | [NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section363412741113>)数据搬运(Load2D) | 负责完成[NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section363412741113>)矩阵的数据搬运。 | | 16 | +| Global Memory->L1 Buffer | LoadData(GM -> L1-[NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section363412741113>)数据搬运-2D) | 负责完成[NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section363412741113>)矩阵的数据搬运。 | |
| 17 | -| Global Memory->L1 Buffer | [NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section363412741113>)数据搬运(Load2DV2) | 负责完成[NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section363412741113>)矩阵的数据搬运。 | | 17 | +| Global Memory->L1 Buffer | LoadData(GM -> L1-[NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section363412741113>)数据搬运-2DV2) | 负责完成[NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section363412741113>)矩阵的数据搬运。 | |
| 18 | -| Global Memory->L0A Buffer | 2D格式分形矩阵搬运(Load2D) | 负责完成普通矩阵计算所需的2D格式数据的搬运。 | | 18 | +| Global Memory->L0A Buffer | LoadData(GM -> L0A-2D格式分形矩阵搬运) | 负责完成普通矩阵计算所需的2D格式数据的搬运。 | |
| 19 | -| Global Memory->L0B Buffer | 2D格式分形矩阵搬运(Load2D) | 负责完成普通矩阵计算所需的2D格式数据的搬运。 | | 19 | +| Global Memory->L0B Buffer | LoadData(GM -> L0B-2D格式分形矩阵搬运) | 负责完成普通矩阵计算所需的2D格式数据的搬运。 | |
| 20 | -| L0C Buffer->Global Memory | 随路量化激活搬运(DataCopy) | 支持多种随路能力的组合,需要设置不同的寄存器,配合DataCopy接口使能不同的数据搬运能力。 | | 20 | +| L0C Buffer->Global Memory | DataCopy(L0C -> GM-随路量化激活搬运) | 支持多种随路能力的组合,需要设置不同的寄存器,配合DataCopy接口使能不同的数据搬运能力。 | |
| 21 | -| L0C Buffer->Global Memory | 随路量化激活搬运(FixPipe) | 支持多种随路能力的组合,FixPipe接口内包含了设置寄存器与数据搬运能力。 | | 21 | +| L0C Buffer->Global Memory | Fixpipe(L0C -> GM-随路量化激活搬运) | 支持多种随路能力的组合,FixPipe接口内包含了设置寄存器与数据搬运能力。 | |
| 22 | 22 | ||
| 23 | -## GM与L1连续数据搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002574022813"></a> | 23 | +## DataCopy(GM与L1-连续数据搬运)<a name="ZH-CN_TOPIC_0000002574022813"></a> |
| 24 | 24 | ||
| 25 | DataCopy能够实现Global Memory和L1 Buffer之间的连续数据搬运,数据搬运时格式和内容保持不变。 | 25 | DataCopy能够实现Global Memory和L1 Buffer之间的连续数据搬运,数据搬运时格式和内容保持不变。 |
| 26 | 26 | ||
| @@ -31,7 +31,7 @@ DataCopy能够实现Global Memory和L1 Buffer之间的连续数据搬运,数 | |||
| 31 | - L1 Buffer -> Global Memory | 31 | - L1 Buffer -> Global Memory |
| 32 | - A1/B1 -> GM | 32 | - A1/B1 -> GM |
| 33 | 33 | ||
| 34 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopy(GMToL1连续数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_GMToL1_continuous.md)。 | 34 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopy(GM与L1-连续数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_GMToL1_continuous.md)。 |
| 35 | 35 | ||
| 36 | src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。 | 36 | src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。 |
| 37 | 37 | ||
| @@ -49,7 +49,7 @@ src和dst分别为源操作数和目的操作数;count为连续搬运的元素 | |||
| 49 | __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count) | 49 | __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count) |
| 50 | ``` | 50 | ``` |
| 51 | 51 | ||
| 52 | -## GM与L1高维切分数据搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002543262916"></a> | 52 | +## DataCopy(GM与L1-高维切分数据搬运)<a name="ZH-CN_TOPIC_0000002543262916"></a> |
| 53 | 53 | ||
| 54 | DataCopy能够实现Global Memory和L1 Buffer之间的连续数据搬运和非连续数据搬运,数据搬运时格式和内容保持不变。 | 54 | DataCopy能够实现Global Memory和L1 Buffer之间的连续数据搬运和非连续数据搬运,数据搬运时格式和内容保持不变。 |
| 55 | 55 | ||
| @@ -62,7 +62,7 @@ DataCopy能够实现Global Memory和L1 Buffer之间的连续数据搬运和非 | |||
| 62 | - L1 Buffer -> Global Memory | 62 | - L1 Buffer -> Global Memory |
| 63 | - A1/B1 -> GM | 63 | - A1/B1 -> GM |
| 64 | 64 | ||
| 65 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopy(GMToL1高维切分数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_GMToL1_highdim_split.md)。 | 65 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopy(GM与L1-高维切分数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_GMToL1_highdim_split.md)。 |
| 66 | 66 | ||
| 67 | src和dst分别为源操作数和目的操作数;repeatParams为搬运参数。 | 67 | src和dst分别为源操作数和目的操作数;repeatParams为搬运参数。 |
| 68 | 68 | ||
| @@ -80,7 +80,7 @@ src和dst分别为源操作数和目的操作数;repeatParams为搬运参数 | |||
| 80 | __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<T>& src, const DataCopyParams& repeatParams) | 80 | __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<T>& src, const DataCopyParams& repeatParams) |
| 81 | ``` | 81 | ``` |
| 82 | 82 | ||
| 83 | -## GMToL1随路转换-ND2NZ搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002573902841"></a> | 83 | +## DataCopy(GM -> L1-随路转换-ND2NZ搬运)<a name="ZH-CN_TOPIC_0000002573902841"></a> |
| 84 | 84 | ||
| 85 | 该接口主要实现将数据从Global Memory搬运至L1 Buffer,并支持在数据搬运时进行[ND](../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md)到[NZ](../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md)格式的转换。 | 85 | 该接口主要实现将数据从Global Memory搬运至L1 Buffer,并支持在数据搬运时进行[ND](../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md)到[NZ](../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md)格式的转换。 |
| 86 | 86 | ||
| @@ -89,7 +89,7 @@ src和dst分别为源操作数和目的操作数;repeatParams为搬运参数 | |||
| 89 | - Global Memory -> L1 Buffer | 89 | - Global Memory -> L1 Buffer |
| 90 | - GM -> A1/B1 | 90 | - GM -> A1/B1 |
| 91 | 91 | ||
| 92 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopy(GMToL1随路转换-ND2NZ搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_GMToL1_ND2NZ.md)。 | 92 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopy(GM -> L1-随路转换-ND2NZ搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_GMToL1_ND2NZ.md)。 |
| 93 | 93 | ||
| 94 | src和dst分别为源操作数和目的操作数;intriParams为ND2NZ搬运配置参数。 | 94 | src和dst分别为源操作数和目的操作数;intriParams为ND2NZ搬运配置参数。 |
| 95 | 95 | ||
| @@ -110,7 +110,7 @@ src和dst分别为源操作数和目的操作数;intriParams为ND2NZ搬运配 | |||
| 110 | <!-- end id1 --> | 110 | <!-- end id1 --> |
| 111 | 111 | ||
| 112 | <!-- npu="950" id2 --> | 112 | <!-- npu="950" id2 --> |
| 113 | -## GMToL1随路转换-DN2NZ搬运(DataCopy) | 113 | +## DataCopy(GM -> L1-随路转换-DN2NZ搬运) |
| 114 | 114 | ||
| 115 | 该接口主要实现将数据从Global Memory搬运至L1 Buffer,并支持在数据搬运时进行[DN](../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md)到[NZ](../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md)格式的转换。 | 115 | 该接口主要实现将数据从Global Memory搬运至L1 Buffer,并支持在数据搬运时进行[DN](../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md)到[NZ](../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md)格式的转换。 |
| 116 | 116 | ||
| @@ -119,7 +119,7 @@ src和dst分别为源操作数和目的操作数;intriParams为ND2NZ搬运配 | |||
| 119 | - Global Memory -> L1 Buffer | 119 | - Global Memory -> L1 Buffer |
| 120 | - GM -> A1/B1 | 120 | - GM -> A1/B1 |
| 121 | 121 | ||
| 122 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopy(GMToL1随路转换-DN2NZ搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_GMToL1_DN2NZ.md)。 | 122 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopy(GM -> L1-随路转换-DN2NZ搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_GMToL1_DN2NZ.md)。 |
| 123 | 123 | ||
| 124 | src和dst分别为源操作数和目的操作数;intriParams为DN2NZ搬运配置参数。 | 124 | src和dst分别为源操作数和目的操作数;intriParams为DN2NZ搬运配置参数。 |
| 125 | 125 | ||
| @@ -132,7 +132,7 @@ src和dst分别为源操作数和目的操作数;intriParams为DN2NZ搬运配 | |||
| 132 | <!-- end id2 --> | 132 | <!-- end id2 --> |
| 133 | 133 | ||
| 134 | <!-- npu="950" id3 --> | 134 | <!-- npu="950" id3 --> |
| 135 | -## GMToL1非对齐数据搬运(DataCopyPad) | 135 | +## DataCopyPad(GM -> L1-非对齐数据搬运) |
| 136 | 136 | ||
| 137 | 该接口主要实现将数据从Global Memory搬运至L1 Buffer,并支持在数据搬运时提供非对齐数据搬运功能,可以根据开发者的需要自行填充数据。 | 137 | 该接口主要实现将数据从Global Memory搬运至L1 Buffer,并支持在数据搬运时提供非对齐数据搬运功能,可以根据开发者的需要自行填充数据。 |
| 138 | 138 | ||
| @@ -141,7 +141,7 @@ src和dst分别为源操作数和目的操作数;intriParams为DN2NZ搬运配 | |||
| 141 | - Global Memory -> L1 Buffer | 141 | - Global Memory -> L1 Buffer |
| 142 | - GM -> A1/B1 | 142 | - GM -> A1/B1 |
| 143 | 143 | ||
| 144 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopyPad(GMToL1非对齐数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopyPad_GMToL1.md)。 | 144 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopyPad(GM -> L1-非对齐数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopyPad_GMToL1.md)。 |
| 145 | 145 | ||
| 146 | src和dst分别为源操作数和目的操作数;dataCopyParams和padParams为搬运参数。 | 146 | src和dst分别为源操作数和目的操作数;dataCopyParams和padParams为搬运参数。 |
| 147 | 147 | ||
| @@ -153,7 +153,7 @@ src和dst分别为源操作数和目的操作数;dataCopyParams和padParams为 | |||
| 153 | ``` | 153 | ``` |
| 154 | <!-- end id3 --> | 154 | <!-- end id3 --> |
| 155 | 155 | ||
| 156 | -## GMToL1 NZ数据搬运(Load2D)<a name="ZH-CN_TOPIC_0000002543422574"></a> | 156 | +## LoadData(GM -> L1-2D矩阵搬运)<a name="ZH-CN_TOPIC_0000002543422574"></a> |
| 157 | 157 | ||
| 158 | 该接口主要实现将数据从Global Memory搬运至L1 Buffer,负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 | 158 | 该接口主要实现将数据从Global Memory搬运至L1 Buffer,负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 |
| 159 | 159 | ||
| @@ -162,7 +162,7 @@ src和dst分别为源操作数和目的操作数;dataCopyParams和padParams为 | |||
| 162 | - Global Memory -> L1 Buffer | 162 | - Global Memory -> L1 Buffer |
| 163 | - GM -> A1/B1 | 163 | - GM -> A1/B1 |
| 164 | 164 | ||
| 165 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(GMToL1-2D矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/GMToL1-Load2D指令搬运.md)。 | 165 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(GM -> L1-2D矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/GMToL1-Load2D指令搬运.md)。 |
| 166 | 166 | ||
| 167 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 | 167 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 |
| 168 | 168 | ||
| @@ -172,7 +172,7 @@ __aicore__ inline void LoadData(const LocalTensor<T>& dst, const GlobalTensor<T> | |||
| 172 | ``` | 172 | ``` |
| 173 | 173 | ||
| 174 | <!-- npu="950" id4 --> | 174 | <!-- npu="950" id4 --> |
| 175 | -## GMToL1 NZ数据搬运(Load2DV2) | 175 | +## LoadData(GM -> L1-2D矩阵搬运V2) |
| 176 | 176 | ||
| 177 | 该接口主要实现将数据从Global Memory搬运至L1 Buffer,负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 | 177 | 该接口主要实现将数据从Global Memory搬运至L1 Buffer,负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 |
| 178 | 178 | ||
| @@ -181,7 +181,7 @@ __aicore__ inline void LoadData(const LocalTensor<T>& dst, const GlobalTensor<T> | |||
| 181 | - Global Memory -> L1 Buffer | 181 | - Global Memory -> L1 Buffer |
| 182 | - GM -> A1/B1 | 182 | - GM -> A1/B1 |
| 183 | 183 | ||
| 184 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(GMToL1-2D矩阵搬运V2)](../cube_compute_ISASI/矩阵计算的搬入/GMToL1-Load2DV2指令搬运.md)。 | 184 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(GM -> L1-2D矩阵搬运V2)](../cube_compute_ISASI/矩阵计算的搬入/GMToL1-Load2DV2指令搬运.md)。 |
| 185 | 185 | ||
| 186 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 | 186 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 |
| 187 | 187 | ||
| @@ -193,7 +193,7 @@ src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数 | |||
| 193 | ``` | 193 | ``` |
| 194 | <!-- end id4 --> | 194 | <!-- end id4 --> |
| 195 | 195 | ||
| 196 | -## GMToL0A 2D格式分形矩阵搬运(Load2D)<a name="ZH-CN_TOPIC_0000002574022815"></a> | 196 | +## Load2D(GM -> L0A-2D格式分形矩阵搬运)<a name="ZH-CN_TOPIC_0000002574022815"></a> |
| 197 | 197 | ||
| 198 | 该接口主要实现将数据从Global Memory搬运至L0A Buffer,负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 | 198 | 该接口主要实现将数据从Global Memory搬运至L0A Buffer,负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 |
| 199 | 199 | ||
| @@ -202,7 +202,7 @@ src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数 | |||
| 202 | - Global Memory -> L0A Buffer | 202 | - Global Memory -> L0A Buffer |
| 203 | - GM -> A2 | 203 | - GM -> A2 |
| 204 | 204 | ||
| 205 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(2D矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/Load2D.md)。 | 205 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(GM -> L0A-2D格式分形矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/Load2D.md)。 |
| 206 | 206 | ||
| 207 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 | 207 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 |
| 208 | 208 | ||
| @@ -211,7 +211,7 @@ template <typename T> | |||
| 211 | __aicore__ inline void LoadData(const LocalTensor<T>& dst, const GlobalTensor<T>& src, const LoadData2DParams& loadDataParams) | 211 | __aicore__ inline void LoadData(const LocalTensor<T>& dst, const GlobalTensor<T>& src, const LoadData2DParams& loadDataParams) |
| 212 | ``` | 212 | ``` |
| 213 | 213 | ||
| 214 | -## GMToL0B 2D格式分形矩阵搬运(Load2D)<a name="ZH-CN_TOPIC_0000002543262918"></a> | 214 | +## Load2D(GM -> L0B-2D格式分形矩阵搬运)<a name="ZH-CN_TOPIC_0000002543262918"></a> |
| 215 | 215 | ||
| 216 | 该接口主要实现将数据从Global Memory搬运至L0B Buffer,负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 | 216 | 该接口主要实现将数据从Global Memory搬运至L0B Buffer,负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 |
| 217 | 217 | ||
| @@ -220,7 +220,7 @@ __aicore__ inline void LoadData(const LocalTensor<T>& dst, const GlobalTensor<T> | |||
| 220 | - Global Memory -> L0B Buffer | 220 | - Global Memory -> L0B Buffer |
| 221 | - GM -> B2 | 221 | - GM -> B2 |
| 222 | 222 | ||
| 223 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(2D矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/Load2D.md)。 | 223 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(GM -> L0B-2D格式分形矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/Load2D.md)。 |
| 224 | 224 | ||
| 225 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 | 225 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 |
| 226 | 226 | ||
| @@ -229,7 +229,7 @@ template <typename T> | |||
| 229 | __aicore__ inline void LoadData(const LocalTensor<T>& dst, const GlobalTensor<T>& src, const LoadData2DParams& loadDataParams) | 229 | __aicore__ inline void LoadData(const LocalTensor<T>& dst, const GlobalTensor<T>& src, const LoadData2DParams& loadDataParams) |
| 230 | ``` | 230 | ``` |
| 231 | 231 | ||
| 232 | -## L0CToGM随路量化激活搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002573902843"></a> | 232 | +## DataCopy(L0C到GM-随路量化激活搬运)<a name="ZH-CN_TOPIC_0000002573902843"></a> |
| 233 | 233 | ||
| 234 | 该接口主要实现将数据从L0C Buffer搬运至Global Memory,并支持多种随路能力的组合,需要设置不同的寄存器。 | 234 | 该接口主要实现将数据从L0C Buffer搬运至Global Memory,并支持多种随路能力的组合,需要设置不同的寄存器。 |
| 235 | 235 | ||
| @@ -238,7 +238,7 @@ __aicore__ inline void LoadData(const LocalTensor<T>& dst, const GlobalTensor<T> | |||
| 238 | - L0C Buffer -> Global Memory | 238 | - L0C Buffer -> Global Memory |
| 239 | - CO1 -> GM | 239 | - CO1 -> GM |
| 240 | 240 | ||
| 241 | -搬运的数据为[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md)的结果,接口具体介绍请参考:[DataCopy(L0C到GM数据搬运)](../cube_compute_ISASI/矩阵计算的搬出/DataCopy_L0CToGM.md)。 | 241 | +搬运的数据为[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md)的结果,接口具体介绍请参考:[DataCopy(L0C -> GM-随路量化激活搬运)](../cube_compute_ISASI/矩阵计算的搬出/DataCopy_L0CToGM.md)。 |
| 242 | 242 | ||
| 243 | src和dst分别为源操作数和目的操作数;intriParams为搬运参数。 | 243 | src和dst分别为源操作数和目的操作数;intriParams为搬运参数。 |
| 244 | 244 | ||
| @@ -247,7 +247,7 @@ template <typename T, typename U> | |||
| 247 | __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<U>& src, const DataCopyCO12DstParams& intriParams) | 247 | __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<U>& src, const DataCopyCO12DstParams& intriParams) |
| 248 | ``` | 248 | ``` |
| 249 | 249 | ||
| 250 | -## L0CToGM随路量化激活搬运(FixPipe)<a name="ZH-CN_TOPIC_0000002543422576"></a> | 250 | +## Fixpipe(L0C到GM-随路量化激活搬运)<a name="ZH-CN_TOPIC_0000002543422576"></a> |
| 251 | 251 | ||
| 252 | 该接口主要实现将数据从L0C Buffer搬运至Global Memory,并支持多种随路能力的组合,接口内包含了设置寄存器与数据搬运能力。 | 252 | 该接口主要实现将数据从L0C Buffer搬运至Global Memory,并支持多种随路能力的组合,接口内包含了设置寄存器与数据搬运能力。 |
| 253 | 253 | ||
| @@ -258,7 +258,7 @@ __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<U> | |||
| 258 | 258 | ||
| 259 | 搬运的数据为[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md)的结果,以Ascend 950PR/Ascend 950DT为例,接口示例如下: | 259 | 搬运的数据为[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md)的结果,以Ascend 950PR/Ascend 950DT为例,接口示例如下: |
| 260 | 260 | ||
| 261 | -注意,不同产品型号的接口原型可能不同,具体介绍请参考:[Fixpipe(L0C到GM数据搬运)](../cube_compute_ISASI/矩阵计算的搬出/Fixpipe_L0CToGM.md)。 | 261 | +注意,不同产品型号的接口原型可能不同,具体介绍请参考:[Fixpipe(L0C -> GM-随路量化激活搬运)](../cube_compute_ISASI/矩阵计算的搬出/Fixpipe_L0CToGM.md)。 |
| 262 | 262 | ||
| 263 | src和dst分别为源操作数和目的操作数;intriParams为搬运参数,cbufWorkspace为开启tensor量化时所需的量化参数。 | 263 | src和dst分别为源操作数和目的操作数;intriParams为搬运参数,cbufWorkspace为开启tensor量化时所需的量化参数。 |
| 264 | 264 | ||
| @@ -10,19 +10,19 @@ Global Memory(GM)与Unified Buffer(UB)之间的数据搬运提供了多 | |||
| 10 | 10 | ||
| 11 | | 数据通路 | 功能 | 描述 | | 11 | | 数据通路 | 功能 | 描述 | |
| 12 | | :---: | :--- | :--- | | 12 | | :---: | :--- | :--- | |
| 13 | -| GM->UB | 连续数据搬运(DataCopy) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续数据搬运。 | | 13 | +| GM->UB | DataCopy(GM -> UB-连续数据搬运) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续数据搬运。 | |
| 14 | -| UB->GM | 连续数据搬运(DataCopy) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续数据搬运。 | | 14 | +| UB->GM | DataCopy(UB -> GM-连续数据搬运) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续数据搬运。 | |
| 15 | -| GM->UB | 高维切分数据搬运(DataCopy) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续和非连续的数据搬运。 | | 15 | +| GM->UB | DataCopy(GM -> UB-高维切分数据搬运) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续和非连续的数据搬运。 | |
| 16 | -| UB->GM | 高维切分数据搬运(DataCopy) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续和非连续的数据搬运。 | | 16 | +| UB->GM | DataCopy(UB -> GM-高维切分数据搬运) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续和非连续的数据搬运。 | |
| 17 | -| GM->UB | 切片数据搬运(DataCopy) | 该接口为软仿接口,支持数据的切片搬运,提取多维Tensor数据的子集进行搬运。 | | 17 | +| GM->UB | DataCopy(GM -> UB-切片数据搬运) | 该接口为软仿接口,支持数据的切片搬运,提取多维Tensor数据的子集进行搬运。 | |
| 18 | -| UB->GM | 切片数据搬运(DataCopy) | 该接口为软仿接口,支持数据的切片搬运,提取多维Tensor数据的子集进行搬运。 | | 18 | +| UB->GM | DataCopy(UB -> GM-切片数据搬运) | 该接口为软仿接口,支持数据的切片搬运,提取多维Tensor数据的子集进行搬运。 | |
| 19 | -| GM->UB | 随路转换ND2NZ搬运(DataCopy) | 该接口为软仿接口,支持在从Global Memory到Unified Buffer的数据搬运过程中进行ND到NZ格式的转换。 | | 19 | +| GM->UB | DataCopy(GM -> UB-随路转换ND2NZ搬运) | 该接口为软仿接口,支持在从Global Memory到Unified Buffer的数据搬运过程中进行ND到NZ格式的转换。 | |
| 20 | -| UB->GM | 随路转换NZ2ND搬运(DataCopy) | 该接口为软仿接口,支持在从Unified Buffer到Global Memory的数据搬运过程中进行NZ到ND格式的转换。 | | 20 | +| UB->GM | DataCopy(UB -> GM-随路转换NZ2ND搬运) | 该接口为软仿接口,支持在从Unified Buffer到Global Memory的数据搬运过程中进行NZ到ND格式的转换。 | |
| 21 | -| GM->UB | 多维数据搬运NDDMA(DataCopy) | 多维数据搬运接口,相比于基础数据搬运接口,可更加自由配置搬入的维度信息以及对应的Stride。 | | 21 | +| GM->UB | DataCopy(GM -> UB-多维数据搬运NDDMA) | 多维数据搬运接口,相比于基础数据搬运接口,可更加自由配置搬入的维度信息以及对应的Stride。 | |
| 22 | -| GM->UB | 非对齐数据搬运(DataCopyPad) | 支持数据的非对齐搬运,搬运到UB时可以自行填充数据。 | | 22 | +| GM->UB | DataCopyPad(GM -> UB-非对齐数据搬运) | 支持数据的非对齐搬运,搬运到UB时可以自行填充数据。 | |
| 23 | -| UB->GM | 非对齐数据搬运(DataCopyPad) | 支持数据的非对齐搬运。 | | 23 | +| UB->GM | DataCopyPad(UB -> GM-非对齐数据搬运) | 支持数据的非对齐搬运。 | |
| 24 | 24 | ||
| 25 | -## GM与UB连续数据搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002382908021"></a> | 25 | +## DataCopy(GM与UB-连续数据搬运)<a name="ZH-CN_TOPIC_0000002382908021"></a> |
| 26 | 26 | ||
| 27 | 支持Global Memory与Unified Buffer之间的连续数据搬运,数据在传输过程中保持原始格式和内容不变。 | 27 | 支持Global Memory与Unified Buffer之间的连续数据搬运,数据在传输过程中保持原始格式和内容不变。 |
| 28 | 28 | ||
| @@ -36,7 +36,7 @@ Global Memory(GM)与Unified Buffer(UB)之间的数据搬运提供了多 | |||
| 36 | - CO2 -> GM(仅Atlas 推理系列产品AI Core支持) | 36 | - CO2 -> GM(仅Atlas 推理系列产品AI Core支持) |
| 37 | <!-- end id1 --> | 37 | <!-- end id1 --> |
| 38 | 38 | ||
| 39 | -搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[GM与UB连续数据搬运(DataCopy)](../Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMAndUB_continuous.md)。 | 39 | +搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[DataCopy(GM与UB-连续数据搬运)](../Memory矢量计算/数据搬运/DataCopy_GMAndUB_continuous.md)。 |
| 40 | 40 | ||
| 41 | src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。 | 41 | src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。 |
| 42 | 42 | ||
| @@ -54,7 +54,7 @@ src和dst分别为源操作数和目的操作数;count为连续搬运的元素 | |||
| 54 | __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count) | 54 | __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count) |
| 55 | ``` | 55 | ``` |
| 56 | 56 | ||
| 57 | -## GM与UB高维切分数据搬运(DataCopy)<a name="ZH-CN_TOPIC_00000023829080211"></a> | 57 | +## DataCopy(GM与UB-高维切分数据搬运)<a name="ZH-CN_TOPIC_00000023829080211"></a> |
| 58 | 58 | ||
| 59 | 支持Global Memory与Unified Buffer之间的高维切分数据搬运,数据在传输过程中保持原始格式和内容不变。 | 59 | 支持Global Memory与Unified Buffer之间的高维切分数据搬运,数据在传输过程中保持原始格式和内容不变。 |
| 60 | 60 | ||
| @@ -70,7 +70,7 @@ src和dst分别为源操作数和目的操作数;count为连续搬运的元素 | |||
| 70 | - CO2 -> GM(仅Atlas 推理系列产品AI Core支持) | 70 | - CO2 -> GM(仅Atlas 推理系列产品AI Core支持) |
| 71 | <!-- end id2 --> | 71 | <!-- end id2 --> |
| 72 | 72 | ||
| 73 | -搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[GM与UB高维切分数据搬运(DataCopy)](../Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMAndUB_highdim_split.md)。 | 73 | +搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[DataCopy(GM与UB-高维切分数据搬运)](../Memory矢量计算/数据搬运/DataCopy_GMAndUB_highdim_split.md)。 |
| 74 | 74 | ||
| 75 | src和dst分别为源操作数和目的操作数;repeatParams为DataCopyParams类型的搬运参数,通过该参数可配置搬运的数据块大小、个数、间隔等信息,同时支持非连续和连续搬运。 | 75 | src和dst分别为源操作数和目的操作数;repeatParams为DataCopyParams类型的搬运参数,通过该参数可配置搬运的数据块大小、个数、间隔等信息,同时支持非连续和连续搬运。 |
| 76 | 76 | ||
| @@ -88,7 +88,7 @@ src和dst分别为源操作数和目的操作数;repeatParams为DataCopyParams | |||
| 88 | __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<T>& src, const DataCopyParams& repeatParams) | 88 | __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<T>& src, const DataCopyParams& repeatParams) |
| 89 | ``` | 89 | ``` |
| 90 | 90 | ||
| 91 | -## GM与UB切片数据搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002568770166"></a> | 91 | +## DataCopy(GM与UB-切片数据搬运)<a name="ZH-CN_TOPIC_0000002568770166"></a> |
| 92 | 92 | ||
| 93 | 该接口为软仿接口,从易用性角度出发进行设计,支持数据的切片搬运,提取多维Tensor数据的子集进行搬运。 | 93 | 该接口为软仿接口,从易用性角度出发进行设计,支持数据的切片搬运,提取多维Tensor数据的子集进行搬运。 |
| 94 | 94 | ||
| @@ -102,7 +102,7 @@ src和dst分别为源操作数和目的操作数;repeatParams为DataCopyParams | |||
| 102 | - CO2 -> GM(仅Atlas 推理系列产品AI Core支持) | 102 | - CO2 -> GM(仅Atlas 推理系列产品AI Core支持) |
| 103 | <!-- end id3 --> | 103 | <!-- end id3 --> |
| 104 | 104 | ||
| 105 | -搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[GM与UB切片数据搬运(DataCopy)](../Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMAndUB_slice.md)。 | 105 | +搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[DataCopy(GM与UB-切片数据搬运)](../Memory矢量计算/数据搬运/DataCopy_GMAndUB_slice.md)。 |
| 106 | 106 | ||
| 107 | src和dst分别为源操作数和目的操作数;dstSliceInfo和srcSliceInfo分别为目的和源操作数的切片信息,类型为SliceInfo;dimValue为操作数维度信息。 | 107 | src和dst分别为源操作数和目的操作数;dstSliceInfo和srcSliceInfo分别为目的和源操作数的切片信息,类型为SliceInfo;dimValue为操作数维度信息。 |
| 108 | 108 | ||
| @@ -120,7 +120,7 @@ src和dst分别为源操作数和目的操作数;dstSliceInfo和srcSliceInfo | |||
| 120 | __aicore__ inline void DataCopy(const GlobalTensor<T> &dst, const LocalTensor<T> &src, const SliceInfo dstSliceInfo[], const SliceInfo srcSliceInfo[], const uint32_t dimValue = 1) | 120 | __aicore__ inline void DataCopy(const GlobalTensor<T> &dst, const LocalTensor<T> &src, const SliceInfo dstSliceInfo[], const SliceInfo srcSliceInfo[], const uint32_t dimValue = 1) |
| 121 | ``` | 121 | ``` |
| 122 | 122 | ||
| 123 | -## GM -> UB随路转换ND2NZ搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002349187356"></a> | 123 | +## DataCopy(GM -> UB-随路转换ND2NZ搬运)<a name="ZH-CN_TOPIC_0000002349187356"></a> |
| 124 | 124 | ||
| 125 | 该接口为软仿接口,从易用性角度出发进行设计,支持在从Global Memory到Unified Buffer的数据搬运过程中进行ND到NZ格式的转换。 | 125 | 该接口为软仿接口,从易用性角度出发进行设计,支持在从Global Memory到Unified Buffer的数据搬运过程中进行ND到NZ格式的转换。 |
| 126 | 126 | ||
| @@ -129,7 +129,7 @@ src和dst分别为源操作数和目的操作数;dstSliceInfo和srcSliceInfo | |||
| 129 | - Global Memory -> Unified Buffer | 129 | - Global Memory -> Unified Buffer |
| 130 | - GM -> VECIN | 130 | - GM -> VECIN |
| 131 | 131 | ||
| 132 | -搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[GM -> UB随路转换ND2NZ搬运(DataCopy)](../Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMToUB_ND2NZ.md)。 | 132 | +搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[DataCopy(GM -> UB-随路转换ND2NZ搬运)](../Memory矢量计算/数据搬运/DataCopy_GMToUB_ND2NZ.md)。 |
| 133 | 133 | ||
| 134 | src和dst分别为源操作数和目的操作数;intriParams为Nd2NzParams类型的搬运参数,配置ND到NZ格式转换信息。 | 134 | src和dst分别为源操作数和目的操作数;intriParams为Nd2NzParams类型的搬运参数,配置ND到NZ格式转换信息。 |
| 135 | 135 | ||
| @@ -149,7 +149,7 @@ src和dst分别为源操作数和目的操作数;intriParams为Nd2NzParams类 | |||
| 149 | ``` | 149 | ``` |
| 150 | <!-- end id4 --> | 150 | <!-- end id4 --> |
| 151 | 151 | ||
| 152 | -## UB -> GM随路转换NZ2ND搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002391805265"></a> | 152 | +## DataCopy(UB -> GM-随路转换NZ2ND搬运)<a name="ZH-CN_TOPIC_0000002391805265"></a> |
| 153 | 153 | ||
| 154 | 该接口为软仿接口,从易用性角度出发进行设计,支持在从Unified Buffer到Global Memory的数据搬运过程中进行NZ到ND格式的转换。 | 154 | 该接口为软仿接口,从易用性角度出发进行设计,支持在从Unified Buffer到Global Memory的数据搬运过程中进行NZ到ND格式的转换。 |
| 155 | 155 | ||
| @@ -161,7 +161,7 @@ src和dst分别为源操作数和目的操作数;intriParams为Nd2NzParams类 | |||
| 161 | - CO2 -> GM(仅Atlas 推理系列产品AI Core支持) | 161 | - CO2 -> GM(仅Atlas 推理系列产品AI Core支持) |
| 162 | <!-- end id5 --> | 162 | <!-- end id5 --> |
| 163 | 163 | ||
| 164 | -搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[UB->GM随路转换NZ2ND搬运(DataCopy)](../Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_UBToGM_NZ2ND.md)。 | 164 | +搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[DataCopy(UB -> GM-随路转换NZ2ND搬运)](../Memory矢量计算/数据搬运/DataCopy_UBToGM_NZ2ND.md)。 |
| 165 | 165 | ||
| 166 | src和dst分别为源操作数和目的操作数;intriParams为Nz2NdParamsFull类型的搬运参数,配置NZ到ND格式转换信息。 | 166 | src和dst分别为源操作数和目的操作数;intriParams为Nz2NdParamsFull类型的搬运参数,配置NZ到ND格式转换信息。 |
| 167 | 167 | ||
| @@ -170,7 +170,7 @@ template <typename T> | |||
| 170 | __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<T>& src, const Nz2NdParamsFull& intriParams) | 170 | __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<T>& src, const Nz2NdParamsFull& intriParams) |
| 171 | ``` | 171 | ``` |
| 172 | 172 | ||
| 173 | -## GM -> UB多维数据搬运NDDMA(DataCopy)<a name="ZH-CN_TOPIC_0000002544407954"></a> | 173 | +## DataCopy(GM -> UB-多维数据搬运NDDMA)<a name="ZH-CN_TOPIC_0000002544407954"></a> |
| 174 | 174 | ||
| 175 | 多维数据搬运接口,相比于基础数据搬运接口,可更加自由配置搬入的维度信息以及对应的Stride。 | 175 | 多维数据搬运接口,相比于基础数据搬运接口,可更加自由配置搬入的维度信息以及对应的Stride。 |
| 176 | 176 | ||
| @@ -179,7 +179,7 @@ __aicore__ inline void DataCopy(const GlobalTensor<T>& dst, const LocalTensor<T> | |||
| 179 | - Global Memory -> Unified Buffer | 179 | - Global Memory -> Unified Buffer |
| 180 | - GM -> VECIN | 180 | - GM -> VECIN |
| 181 | 181 | ||
| 182 | -搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[GM -> UB多维数据搬运NDDMA(DataCopy)](../Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMToUB_NDDMA.md)。 | 182 | +搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[DataCopy(GM -> UB-多维数据搬运NDDMA)](../Memory矢量计算/数据搬运/DataCopy_GMToUB_NDDMA.md)。 |
| 183 | 183 | ||
| 184 | src和dst分别为源操作数和目的操作数;params为NdDmaParams类型的搬运参数,配置多维度搬运信息。 | 184 | src和dst分别为源操作数和目的操作数;params为NdDmaParams类型的搬运参数,配置多维度搬运信息。 |
| 185 | 185 | ||
| @@ -196,7 +196,7 @@ src和dst分别为源操作数和目的操作数;params为NdDmaParams类型的 | |||
| 196 | __aicore__ inline void NdDmaDci() | 196 | __aicore__ inline void NdDmaDci() |
| 197 | ``` | 197 | ``` |
| 198 | 198 | ||
| 199 | -## GM -> UB非对齐数据搬运(DataCopyPad)<a name="ZH-CN_TOPIC_0000001894460401"></a> | 199 | +## DataCopyPad(GM -> UB-非对齐数据搬运)<a name="ZH-CN_TOPIC_0000001894460401"></a> |
| 200 | 200 | ||
| 201 | 该接口提供将数据从Global Memory非对齐搬运至Unified Buffer的功能,可以根据开发者的需要自行填充数据。当每个搬运的数据块长度(blockLen)非32字节对齐时,每一个数据块都需要填充数据至32字节对齐。 | 201 | 该接口提供将数据从Global Memory非对齐搬运至Unified Buffer的功能,可以根据开发者的需要自行填充数据。当每个搬运的数据块长度(blockLen)非32字节对齐时,每一个数据块都需要填充数据至32字节对齐。 |
| 202 | 202 | ||
| @@ -213,7 +213,7 @@ src和dst分别为源操作数和目的操作数;params为NdDmaParams类型的 | |||
| 213 | - GM -> VECCALC(仅Ascend 950PR/Ascend 950DT支持) | 213 | - GM -> VECCALC(仅Ascend 950PR/Ascend 950DT支持) |
| 214 | <!-- end id7 --> | 214 | <!-- end id7 --> |
| 215 | 215 | ||
| 216 | -搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[GM -> UB非对齐数据搬运(DataCopyPad)](../Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopyPad_GMToUB.md)。 | 216 | +搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[DataCopyPad(GM -> UB-非对齐数据搬运)](../Memory矢量计算/数据搬运/DataCopyPad_GMToUB.md)。 |
| 217 | 217 | ||
| 218 | src和dst分别为源操作数和目的操作数;dataCopyParams为DataCopyExtParams类型的搬运参数;padParams为DataCopyPadExtParams类型的填充控制参数。 | 218 | src和dst分别为源操作数和目的操作数;dataCopyParams为DataCopyExtParams类型的搬运参数;padParams为DataCopyPadExtParams类型的填充控制参数。 |
| 219 | 219 | ||
| @@ -233,7 +233,7 @@ src和dst分别为源操作数和目的操作数;dataCopyParams为DataCopyExtP | |||
| 233 | ``` | 233 | ``` |
| 234 | <!-- end id8 --> | 234 | <!-- end id8 --> |
| 235 | 235 | ||
| 236 | -## UB -> GM非对齐数据搬运(DataCopyPad)<a name="ZH-CN_TOPIC_0000001894460502"></a> | 236 | +## DataCopyPad(UB -> GM-非对齐数据搬运)<a name="ZH-CN_TOPIC_0000001894460502"></a> |
| 237 | 237 | ||
| 238 | 该接口提供将数据从Unified Buffer非对齐搬运至Global Memory的功能。 | 238 | 该接口提供将数据从Unified Buffer非对齐搬运至Global Memory的功能。 |
| 239 | 239 | ||
| @@ -245,7 +245,7 @@ src和dst分别为源操作数和目的操作数;dataCopyParams为DataCopyExtP | |||
| 245 | - VECIN -> GM | 245 | - VECIN -> GM |
| 246 | - VECOUT -> GM | 246 | - VECOUT -> GM |
| 247 | 247 | ||
| 248 | -搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[UB -> GM非对齐数据搬运(DataCopyPad)](../Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopyPad_UBToGM.md)。 | 248 | +搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[DataCopyPad(UB -> GM-非对齐数据搬运)](../Memory矢量计算/数据搬运/DataCopyPad_UBToGM.md)。 |
| 249 | 249 | ||
| 250 | src和dst分别为源操作数和目的操作数;dataCopyParams为DataCopyExtParams类型的搬运参数。 | 250 | src和dst分别为源操作数和目的操作数;dataCopyParams为DataCopyExtParams类型的搬运参数。 |
| 251 | 251 | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | # L1与BiasTable Buffer数据搬运 | 1 | # L1与BiasTable Buffer数据搬运 |
| 2 | 2 | ||
| 3 | -## L1ToBiasTable Buffer连续数据搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002574022837"></a> | 3 | +## DataCopy(L1 -> BiasTable-Buffer-连续数据搬运)<a name="ZH-CN_TOPIC_0000002574022837"></a> |
| 4 | 4 | ||
| 5 | DataCopy能够实现L1 Buffer至BiasTable Buffer的连续数据搬运,数据搬运时格式和内容保持不变。 | 5 | DataCopy能够实现L1 Buffer至BiasTable Buffer的连续数据搬运,数据搬运时格式和内容保持不变。 |
| 6 | 6 | ||
| @@ -9,7 +9,7 @@ DataCopy能够实现L1 Buffer至BiasTable Buffer的连续数据搬运,数据 | |||
| 9 | - L1 Buffer -> BiasTable Buffer | 9 | - L1 Buffer -> BiasTable Buffer |
| 10 | - C1 -> C2 | 10 | - C1 -> C2 |
| 11 | 11 | ||
| 12 | -搬运的数据用于矩阵计算,接口具体介绍请参考:[DataCopy(L1ToBiasTable-Buffer数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_L1ToBiasTable.md)。 | 12 | +搬运的数据用于矩阵计算,接口具体介绍请参考:[DataCopy(L1 -> BiasTable-Buffer-连续数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_L1ToBiasTable.md)。 |
| 13 | 13 | ||
| 14 | src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。 | 14 | src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。 |
| 15 | 15 | ||
| @@ -18,7 +18,7 @@ template <typename T> | |||
| 18 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count) | 18 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count) |
| 19 | ``` | 19 | ``` |
| 20 | 20 | ||
| 21 | -## L1ToBiasTable Buffer高维切分数据搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002543262936"></a> | 21 | +## DataCopy(L1 -> BiasTable-Buffer-高维切分数据搬运)<a name="ZH-CN_TOPIC_0000002543262936"></a> |
| 22 | 22 | ||
| 23 | DataCopy能够实现L1 Buffer至BiasTable Buffer的连续数据搬运和非连续数据搬运,数据搬运时格式和内容保持不变。 | 23 | DataCopy能够实现L1 Buffer至BiasTable Buffer的连续数据搬运和非连续数据搬运,数据搬运时格式和内容保持不变。 |
| 24 | 24 | ||
| @@ -29,7 +29,7 @@ DataCopy能够实现L1 Buffer至BiasTable Buffer的连续数据搬运和非连 | |||
| 29 | - L1 Buffer -> BiasTable Buffer | 29 | - L1 Buffer -> BiasTable Buffer |
| 30 | - C1 -> C2 | 30 | - C1 -> C2 |
| 31 | 31 | ||
| 32 | -搬运的数据用于矩阵计算,接口具体介绍请参考:[DataCopy(L1ToBiasTable-Buffer数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_L1ToBiasTable.md)。 | 32 | +搬运的数据用于矩阵计算,接口具体介绍请参考:[DataCopy(L1 -> BiasTable-Buffer-高维切分数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_L1ToBiasTable.md)。 |
| 33 | 33 | ||
| 34 | src和dst分别为源操作数和目的操作数;repeatParams为搬运参数。 | 34 | src和dst分别为源操作数和目的操作数;repeatParams为搬运参数。 |
| 35 | 35 | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | # L1与Fixpipe Buffer数据搬运 | 1 | # L1与Fixpipe Buffer数据搬运 |
| 2 | 2 | ||
| 3 | -## L1ToFixpipe Buffer连续数据搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002543262934"></a> | 3 | +## DataCopy(L1 -> Fixpipe-Buffer-连续数据搬运)<a name="ZH-CN_TOPIC_0000002543262934"></a> |
| 4 | 4 | ||
| 5 | DataCopy能够实现L1 Buffer至Fixpipe Buffer的连续数据搬运,数据搬运时格式和内容保持不变。 | 5 | DataCopy能够实现L1 Buffer至Fixpipe Buffer的连续数据搬运,数据搬运时格式和内容保持不变。 |
| 6 | 6 | ||
| @@ -9,7 +9,7 @@ DataCopy能够实现L1 Buffer至Fixpipe Buffer的连续数据搬运,数据搬 | |||
| 9 | - L1 Buffer -> Fixpipe Buffer | 9 | - L1 Buffer -> Fixpipe Buffer |
| 10 | - C1 -> C2PIPE2GM | 10 | - C1 -> C2PIPE2GM |
| 11 | 11 | ||
| 12 | -搬运的数据为[随路量化](../cube_compute_ISASI/矩阵搬出关键特性说明/随路量化.md)和[随路relu](../cube_compute_ISASI/矩阵搬出关键特性说明/随路ReLU.md)参数,接口具体介绍请参考:[DataCopy(L1ToFixpipe-Buffer数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_L1ToFixpipe.md)。 | 12 | +搬运的数据为[随路量化](../cube_compute_ISASI/矩阵搬出关键特性说明/随路量化.md)和[随路relu](../cube_compute_ISASI/矩阵搬出关键特性说明/随路ReLU.md)参数,接口具体介绍请参考:[DataCopy(L1 -> Fixpipe-Buffer-连续数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_L1ToFixpipe.md)。 |
| 13 | 13 | ||
| 14 | src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。 | 14 | src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。 |
| 15 | 15 | ||
| @@ -18,7 +18,7 @@ template <typename T> | |||
| 18 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count); | 18 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count); |
| 19 | ``` | 19 | ``` |
| 20 | 20 | ||
| 21 | -## L1ToFixpipe Buffer高维切分数据搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002573902863"></a> | 21 | +## DataCopy(L1 -> Fixpipe-Buffer-高维切分数据搬运)<a name="ZH-CN_TOPIC_0000002573902863"></a> |
| 22 | 22 | ||
| 23 | DataCopy能够实现L1 Buffer至Fixpipe Buffer的连续数据搬运和非连续数据搬运,数据搬运时格式和内容保持不变。 | 23 | DataCopy能够实现L1 Buffer至Fixpipe Buffer的连续数据搬运和非连续数据搬运,数据搬运时格式和内容保持不变。 |
| 24 | 24 | ||
| @@ -29,7 +29,7 @@ DataCopy能够实现L1 Buffer至Fixpipe Buffer的连续数据搬运和非连续 | |||
| 29 | - L1 Buffer -> Fixpipe Buffer | 29 | - L1 Buffer -> Fixpipe Buffer |
| 30 | - C1 -> C2PIPE2GM | 30 | - C1 -> C2PIPE2GM |
| 31 | 31 | ||
| 32 | -搬运的数据为[随路量化](../cube_compute_ISASI/矩阵搬出关键特性说明/随路量化.md)和[随路relu](../cube_compute_ISASI/矩阵搬出关键特性说明/随路ReLU.md)参数,接口具体介绍请参考:[DataCopy(L1ToFixpipe-Buffer数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_L1ToFixpipe.md)。 | 32 | +搬运的数据为[随路量化](../cube_compute_ISASI/矩阵搬出关键特性说明/随路量化.md)和[随路relu](../cube_compute_ISASI/矩阵搬出关键特性说明/随路ReLU.md)参数,接口具体介绍请参考:[DataCopy(L1 -> Fixpipe-Buffer-高维切分数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_L1ToFixpipe.md)。 |
| 33 | 33 | ||
| 34 | src和dst分别为源操作数和目的操作数;repeatParams为搬运参数。 | 34 | src和dst分别为源操作数和目的操作数;repeatParams为搬运参数。 |
| 35 | 35 | ||
| @@ -8,21 +8,21 @@ L1 Buffer与L0 Buffer之间的数据搬运提供了灵活的接口支持,能 | |||
| 8 | 8 | ||
| 9 | | 数据通路 | 功能 | 描述 | | 9 | | 数据通路 | 功能 | 描述 | |
| 10 | |----------|------|------| | 10 | |----------|------|------| |
| 11 | -| L1 Buffer->L0A Buffer | 2D格式分形矩阵搬运(Load2D) | 负责完成普通矩阵计算所需的2D格式数据的搬运。 | | 11 | +| L1 Buffer->L0A Buffer | LoadData(L1 -> L0A-2D格式分形矩阵搬运) | 负责完成普通矩阵计算所需的2D格式数据的搬运。 | |
| 12 | -| L1 Buffer->L0A Buffer | 2D格式分形矩阵搬运(Load2DV2) | 负责完成普通矩阵计算所需的2D格式数据的搬运。 | | 12 | +| L1 Buffer->L0A Buffer | LoadData(L1 -> L0A-2D格式分形矩阵搬运V2) | 负责完成普通矩阵计算所需的2D格式数据的搬运。 | |
| 13 | -| L1 Buffer->L0A Buffer | 2D格式分形矩阵搬运(Load2DMX) | 负责完成矩阵计算所需的左右矩阵数据和对应的左右量化系数矩阵数据的搬运。 | | 13 | +| L1 Buffer->L0A Buffer | LoadData(L1 -> L0A-2D格式分形矩阵搬运MX) | 负责完成矩阵计算所需的左右矩阵数据和对应的左右量化系数矩阵数据的搬运。 | |
| 14 | -| L1 Buffer->L0A Buffer | 2D格式分形矩阵伴转置搬运(LoadDataWithTranspose) | 负责完成普通矩阵计算所需的2D格式的数据的搬运,搬运过程中会伴随转置操作。 | | 14 | +| L1 Buffer->L0A Buffer | LoadDataWithTranspose(L1 -> L0A-2D格式分形矩阵伴转置搬运) | 负责完成普通矩阵计算所需的2D格式的数据的搬运,搬运过程中会伴随转置操作。 | |
| 15 | -| L1 Buffer->L0A Buffer | 3D格式分形矩阵搬运(Load3D) | 用于将NC1HWC0格式的Feature Map完成Image to Column展开,然后再从展开后的二维矩阵中选取指定数据块搬入对应内存位置。 | | 15 | +| L1 Buffer->L0A Buffer | LoadData(L1 -> L0A-3D格式分形矩阵搬运) | 用于将NC1HWC0格式的Feature Map完成Image to Column展开,然后再从展开后的二维矩阵中选取指定数据块搬入对应内存位置。 | |
| 16 | -| L1 Buffer->L0B Buffer | 2D格式分形矩阵搬运(Load2D) | 负责完成普通矩阵计算所需的2D格式数据的搬运。 | | 16 | +| L1 Buffer->L0B Buffer | LoadData(L1 -> L0B-2D格式分形矩阵搬运) | 负责完成普通矩阵计算所需的2D格式数据的搬运。 | |
| 17 | -| L1 Buffer->L0B Buffer | 2D格式分形矩阵搬运(Load2DV2) | 负责完成普通矩阵计算所需的2D格式数据的搬运。 | | 17 | +| L1 Buffer->L0B Buffer | LoadData(L1 -> L0B-2D格式分形矩阵搬运V2) | 负责完成普通矩阵计算所需的2D格式数据的搬运。 | |
| 18 | -| L1 Buffer->L0B Buffer | 2D格式分形矩阵搬运(Load2DMX) | 负责完成矩阵计算所需的左右矩阵数据和对应的左右量化系数矩阵数据的搬运。 | | 18 | +| L1 Buffer->L0B Buffer | LoadData(L1 -> L0B-2D格式分形矩阵搬运MX) | 负责完成矩阵计算所需的左右矩阵数据和对应的左右量化系数矩阵数据的搬运。 | |
| 19 | -| L1 Buffer->L0B Buffer | 2D格式分形矩阵伴转置搬运(LoadDataWithTranspose) | 负责完成普通矩阵计算所需的2D格式的数据的搬运,搬运过程中会伴随转置操作。 | | 19 | +| L1 Buffer->L0B Buffer | LoadDataWithTranspose(L1 -> L0B-2D格式分形矩阵伴转置搬运) | 负责完成普通矩阵计算所需的2D格式的数据的搬运,搬运过程中会伴随转置操作。 | |
| 20 | -| L1 Buffer->L0B Buffer | 3D格式分形矩阵搬运(Load3D) | 用于将NC1HWC0格式的Feature Map完成Image to Column展开,然后再从展开后的二维矩阵中选取指定数据块搬入对应内存位置。 | | 20 | +| L1 Buffer->L0B Buffer | LoadData(L1 -> L0B-3D格式分形矩阵搬运) | 用于将NC1HWC0格式的Feature Map完成Image to Column展开,然后再从展开后的二维矩阵中选取指定数据块搬入对应内存位置。 | |
| 21 | -| L1 Buffer->L0B Buffer | 稠密权重矩阵搬运(LoadDataWithSparse) | 用于从L1 Buffer中搬运以512Byte为单位存放的稠密权重矩阵到L0B Buffer里,同时搬运以128Byte为单位的索引矩阵到内置的专用buffer空间(用于后续MmadWithSparse接口进行读取)。 | | 21 | +| L1 Buffer->L0B Buffer | LoadDataWithSparse(L1 -> L0B-稠密权重矩阵搬运) | 用于从L1 Buffer中搬运以512Byte为单位存放的稠密权重矩阵到L0B Buffer里,同时搬运以128Byte为单位的索引矩阵到内置的专用buffer空间(用于后续MmadWithSparse接口进行读取)。 | |
| 22 | -| L0C Buffer->L1 Buffer | L0C Buffer->L1 Buffer随路量化激活搬运(DataCopy) | 支持多种随路能力的组合,需要设置不同的寄存器,配合DataCopy指令使能不同的数据搬运能力。 | | 22 | +| L0C Buffer->L1 Buffer | DataCopy(L0C -> L1-随路量化激活搬运) | 支持多种随路能力的组合,需要设置不同的寄存器,配合DataCopy指令使能不同的数据搬运能力。 | |
| 23 | -| L0C Buffer->L1 Buffer | L0C Buffer->L1 Buffer随路量化激活搬运(FixPipe) | 支持多种随路能力的组合,FixPipe接口内包含了设置寄存器与数据搬运能力。 | | 23 | +| L0C Buffer->L1 Buffer | Fixpipe(L0C -> L1-随路量化激活搬运) | 支持多种随路能力的组合,FixPipe接口内包含了设置寄存器与数据搬运能力。 | |
| 24 | 24 | ||
| 25 | -## L1ToL0A 2D格式分形矩阵搬运(Load2D)<a name="ZH-CN_TOPIC_0000002573902845"></a> | 25 | +## LoadData(L1 -> L0A-2D格式分形矩阵搬运)<a name="ZH-CN_TOPIC_0000002573902845"></a> |
| 26 | 26 | ||
| 27 | Load2D能够实现L1 Buffer到L0A Buffer之间的数据搬运。负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 | 27 | Load2D能够实现L1 Buffer到L0A Buffer之间的数据搬运。负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 |
| 28 | 28 | ||
| @@ -31,7 +31,7 @@ Load2D能够实现L1 Buffer到L0A Buffer之间的数据搬运。负责完成普 | |||
| 31 | - L1 Buffer -> L0A Buffer | 31 | - L1 Buffer -> L0A Buffer |
| 32 | - A1 -> A2 | 32 | - A1 -> A2 |
| 33 | 33 | ||
| 34 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(2D矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/Load2D.md)。 | 34 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(2D格式分形矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/Load2D.md)。 |
| 35 | 35 | ||
| 36 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 | 36 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 |
| 37 | 37 | ||
| @@ -41,7 +41,7 @@ __aicore__ inline void LoadData(const LocalTensor<T>& dst, const LocalTensor<T>& | |||
| 41 | ``` | 41 | ``` |
| 42 | 42 | ||
| 43 | <!-- npu="950" id1 --> | 43 | <!-- npu="950" id1 --> |
| 44 | -## L1ToL0A 2D格式分形矩阵搬运(Load2DV2) | 44 | +## LoadData(L1 -> L0A-2D格式分形矩阵搬运V2) |
| 45 | 45 | ||
| 46 | Load2DV2能够实现L1 Buffer到L0A Buffer之间的数据搬运。负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 | 46 | Load2DV2能够实现L1 Buffer到L0A Buffer之间的数据搬运。负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 |
| 47 | 47 | ||
| @@ -50,7 +50,7 @@ Load2DV2能够实现L1 Buffer到L0A Buffer之间的数据搬运。负责完成 | |||
| 50 | - L1 Buffer -> L0A Buffer | 50 | - L1 Buffer -> L0A Buffer |
| 51 | - A1 -> A2 | 51 | - A1 -> A2 |
| 52 | 52 | ||
| 53 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(2D矩阵搬运V2)](../cube_compute_ISASI/矩阵计算的搬入/Load2DV2.md)。 | 53 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(2D格式分形矩阵搬运V2)](../cube_compute_ISASI/矩阵计算的搬入/Load2DV2.md)。 |
| 54 | 54 | ||
| 55 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 | 55 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 |
| 56 | 56 | ||
| @@ -63,7 +63,7 @@ src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数 | |||
| 63 | <!-- end id1 --> | 63 | <!-- end id1 --> |
| 64 | 64 | ||
| 65 | <!-- npu="950" id2 --> | 65 | <!-- npu="950" id2 --> |
| 66 | -## L1ToL0A 2D格式分形矩阵搬运(Load2DMX) | 66 | +## LoadData(L1 -> L0A-2D格式分形矩阵搬运MX) |
| 67 | 67 | ||
| 68 | Load2DMX负责完成矩阵计算所需的左右矩阵数据和对应的左右量化系数矩阵数据的搬运,其中左右矩阵数据以大小为512Byte的数据分形为单位进行搬运,左右量化系数矩阵以32Byte的数据分形为单位进行搬运。 | 68 | Load2DMX负责完成矩阵计算所需的左右矩阵数据和对应的左右量化系数矩阵数据的搬运,其中左右矩阵数据以大小为512Byte的数据分形为单位进行搬运,左右量化系数矩阵以32Byte的数据分形为单位进行搬运。 |
| 69 | 69 | ||
| @@ -72,7 +72,7 @@ Load2DMX负责完成矩阵计算所需的左右矩阵数据和对应的左右量 | |||
| 72 | - L1 Buffer -> L0A Buffer | 72 | - L1 Buffer -> L0A Buffer |
| 73 | - A1 -> A2 | 73 | - A1 -> A2 |
| 74 | 74 | ||
| 75 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(MX矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/Load2DMX.md)。 | 75 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(L1 -> L0A-2D格式分形矩阵搬运MX)](../cube_compute_ISASI/矩阵计算的搬入/Load2DMX.md)。 |
| 76 | 76 | ||
| 77 | src和srcMx为源操作数,dst为目的操作数;loadDataParams和loadMxDataParams为搬运参数。 | 77 | src和srcMx为源操作数,dst为目的操作数;loadDataParams和loadMxDataParams为搬运参数。 |
| 78 | 78 | ||
| @@ -91,7 +91,7 @@ src和srcMx为源操作数,dst为目的操作数;loadDataParams和loadMxData | |||
| 91 | ``` | 91 | ``` |
| 92 | <!-- end id2 --> | 92 | <!-- end id2 --> |
| 93 | 93 | ||
| 94 | -## L1ToL0A 2D格式分形矩阵伴转置搬运(LoadDataWithTranspose)<a name="ZH-CN_TOPIC_0000002543422578"></a> | 94 | +## LoadDataWithTranspose(L1 -> L0A-2D格式分形矩阵伴转置搬运)<a name="ZH-CN_TOPIC_0000002543422578"></a> |
| 95 | 95 | ||
| 96 | LoadDataWithTranspose能够实现L1 Buffer到L0A Buffer之间的数据搬运。负责完成普通矩阵计算所需的2D格式的数据搬运,搬运过程中会伴随转置操作,以大小为512Byte的数据分形为单位进行搬运。 | 96 | LoadDataWithTranspose能够实现L1 Buffer到L0A Buffer之间的数据搬运。负责完成普通矩阵计算所需的2D格式的数据搬运,搬运过程中会伴随转置操作,以大小为512Byte的数据分形为单位进行搬运。 |
| 97 | 97 | ||
| @@ -100,7 +100,7 @@ LoadDataWithTranspose能够实现L1 Buffer到L0A Buffer之间的数据搬运。 | |||
| 100 | - L1 Buffer -> L0A Buffer | 100 | - L1 Buffer -> L0A Buffer |
| 101 | - A1 -> A2 | 101 | - A1 -> A2 |
| 102 | 102 | ||
| 103 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadDataWithTranspose](../cube_compute_ISASI/矩阵计算的搬入/LoadDataWithTranspose.md)。 | 103 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadDataWithTranspose(L1 -> L0A-2D格式分形矩阵伴转置搬运)](../cube_compute_ISASI/矩阵计算的搬入/LoadDataWithTranspose.md)。 |
| 104 | 104 | ||
| 105 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 | 105 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 |
| 106 | 106 | ||
| @@ -119,7 +119,7 @@ __aicore__ inline void LoadDataWithTranspose(const LocalTensor<T>& dst, const Lo | |||
| 119 | ``` | 119 | ``` |
| 120 | <!-- end id10 --> | 120 | <!-- end id10 --> |
| 121 | 121 | ||
| 122 | -## L1ToL0A 3D格式分形矩阵搬运(Load3D)<a name="ZH-CN_TOPIC_0000002574022819"></a> | 122 | +## LoadData(L1 -> L0A-3D格式分形矩阵搬运)<a name="ZH-CN_TOPIC_0000002574022819"></a> |
| 123 | 123 | ||
| 124 | Load3D本质上是用于将NC1HWC0格式的Feature Map完成Image to Column展开,然后再从展开后的二维矩阵中选取指定数据块搬入对应内存位置。 | 124 | Load3D本质上是用于将NC1HWC0格式的Feature Map完成Image to Column展开,然后再从展开后的二维矩阵中选取指定数据块搬入对应内存位置。 |
| 125 | 125 | ||
| @@ -128,7 +128,7 @@ Load3D本质上是用于将NC1HWC0格式的Feature Map完成Image to Column展 | |||
| 128 | - L1 Buffer -> L0A Buffer | 128 | - L1 Buffer -> L0A Buffer |
| 129 | - A1 -> A2 | 129 | - A1 -> A2 |
| 130 | 130 | ||
| 131 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(卷积数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/Load3D.md)。 | 131 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(L1 -> L0A-3D格式分形矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/Load3D.md)。 |
| 132 | 132 | ||
| 133 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 | 133 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 |
| 134 | 134 | ||
| @@ -155,7 +155,7 @@ src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数 | |||
| 155 | ``` | 155 | ``` |
| 156 | <!-- end id3 --> | 156 | <!-- end id3 --> |
| 157 | 157 | ||
| 158 | -## L1ToL0B 2D格式分形矩阵搬运(Load2D)<a name="ZH-CN_TOPIC_0000002543262922"></a> | 158 | +## LoadData(L1 -> L0B-2D格式分形矩阵搬运)<a name="ZH-CN_TOPIC_0000002543262922"></a> |
| 159 | 159 | ||
| 160 | Load2D能够实现L1 Buffer到L0B Buffer之间的数据搬运。负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 | 160 | Load2D能够实现L1 Buffer到L0B Buffer之间的数据搬运。负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 |
| 161 | 161 | ||
| @@ -164,7 +164,7 @@ Load2D能够实现L1 Buffer到L0B Buffer之间的数据搬运。负责完成普 | |||
| 164 | - L1 Buffer -> L0B Buffer | 164 | - L1 Buffer -> L0B Buffer |
| 165 | - B1 -> B2 | 165 | - B1 -> B2 |
| 166 | 166 | ||
| 167 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(2D矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/Load2D.md)。 | 167 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(L1 -> L0B-2D格式分形矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/Load2D.md)。 |
| 168 | 168 | ||
| 169 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 | 169 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 |
| 170 | 170 | ||
| @@ -174,7 +174,7 @@ __aicore__ inline void LoadData(const LocalTensor<T>& dst, const LocalTensor<T>& | |||
| 174 | ``` | 174 | ``` |
| 175 | 175 | ||
| 176 | <!-- npu="950" id4 --> | 176 | <!-- npu="950" id4 --> |
| 177 | -## L1ToL0B 2D格式分形矩阵搬运(Load2DV2) | 177 | +## LoadData(L1 -> L0B-2D格式分形矩阵搬运V2) |
| 178 | 178 | ||
| 179 | Load2DV2能够实现L1 Buffer到L0B Buffer之间的数据搬运。负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 | 179 | Load2DV2能够实现L1 Buffer到L0B Buffer之间的数据搬运。负责完成普通矩阵计算所需的2D格式数据的搬运,以大小为512Byte的数据分形为单位进行搬运。 |
| 180 | 180 | ||
| @@ -183,7 +183,7 @@ Load2DV2能够实现L1 Buffer到L0B Buffer之间的数据搬运。负责完成 | |||
| 183 | - L1 Buffer -> L0B Buffer | 183 | - L1 Buffer -> L0B Buffer |
| 184 | - B1 -> B2 | 184 | - B1 -> B2 |
| 185 | 185 | ||
| 186 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(2D矩阵搬运V2)](../cube_compute_ISASI/矩阵计算的搬入/Load2DV2.md)。 | 186 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(L1 -> L0B-2D格式分形矩阵搬运V2)](../cube_compute_ISASI/矩阵计算的搬入/Load2DV2.md)。 |
| 187 | 187 | ||
| 188 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 | 188 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 |
| 189 | 189 | ||
| @@ -196,7 +196,7 @@ src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数 | |||
| 196 | <!-- end id4 --> | 196 | <!-- end id4 --> |
| 197 | 197 | ||
| 198 | <!-- npu="950" id5 --> | 198 | <!-- npu="950" id5 --> |
| 199 | -## L1ToL0B 2D格式分形矩阵搬运(Load2DMX) | 199 | +## LoadData(L1 -> L0B-2D格式分形矩阵搬运MX) |
| 200 | 200 | ||
| 201 | Load2DMX负责完成矩阵计算所需的左右矩阵数据和对应的左右量化系数矩阵数据的搬运,其中左右矩阵数据以大小为512Byte的数据分形为单位进行搬运,左右量化系数矩阵以32Byte的数据分形为单位进行搬运。 | 201 | Load2DMX负责完成矩阵计算所需的左右矩阵数据和对应的左右量化系数矩阵数据的搬运,其中左右矩阵数据以大小为512Byte的数据分形为单位进行搬运,左右量化系数矩阵以32Byte的数据分形为单位进行搬运。 |
| 202 | 202 | ||
| @@ -205,7 +205,7 @@ Load2DMX负责完成矩阵计算所需的左右矩阵数据和对应的左右量 | |||
| 205 | - L1 Buffer -> L0B Buffer | 205 | - L1 Buffer -> L0B Buffer |
| 206 | - B1 -> B2 | 206 | - B1 -> B2 |
| 207 | 207 | ||
| 208 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(MX矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/Load2DMX.md)。 | 208 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(L1 -> L0B-2D格式分形矩阵搬运MX)](../cube_compute_ISASI/矩阵计算的搬入/Load2DMX.md)。 |
| 209 | 209 | ||
| 210 | src和srcMx为源操作数,dst为目的操作数;loadDataParams和loadMxDataParams为搬运参数。 | 210 | src和srcMx为源操作数,dst为目的操作数;loadDataParams和loadMxDataParams为搬运参数。 |
| 211 | 211 | ||
| @@ -224,7 +224,7 @@ src和srcMx为源操作数,dst为目的操作数;loadDataParams和loadMxData | |||
| 224 | ``` | 224 | ``` |
| 225 | <!-- end id5 --> | 225 | <!-- end id5 --> |
| 226 | 226 | ||
| 227 | -## L1ToL0B 2D格式分形矩阵伴转置搬运(LoadDataWithTranspose)<a name="ZH-CN_TOPIC_0000002573902847"></a> | 227 | +## LoadDataWithTranspose(L1 -> L0B-2D格式分形矩阵伴转置搬运)<a name="ZH-CN_TOPIC_0000002573902847"></a> |
| 228 | 228 | ||
| 229 | LoadDataWithTranspose能够实现L1 Buffer到L0B Buffer之间的数据搬运。负责完成普通矩阵计算所需的2D格式的数据搬运,搬运过程中会伴随转置操作,以大小为512Byte的数据分形为单位进行搬运。 | 229 | LoadDataWithTranspose能够实现L1 Buffer到L0B Buffer之间的数据搬运。负责完成普通矩阵计算所需的2D格式的数据搬运,搬运过程中会伴随转置操作,以大小为512Byte的数据分形为单位进行搬运。 |
| 230 | 230 | ||
| @@ -233,7 +233,7 @@ LoadDataWithTranspose能够实现L1 Buffer到L0B Buffer之间的数据搬运。 | |||
| 233 | - L1 Buffer -> L0B Buffer | 233 | - L1 Buffer -> L0B Buffer |
| 234 | - B1 -> B2 | 234 | - B1 -> B2 |
| 235 | 235 | ||
| 236 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadDataWithTranspose](../cube_compute_ISASI/矩阵计算的搬入/LoadDataWithTranspose.md)。 | 236 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadDataWithTranspose(L1 -> L0B-2D格式分形矩阵伴转置搬运)](../cube_compute_ISASI/矩阵计算的搬入/LoadDataWithTranspose.md)。 |
| 237 | 237 | ||
| 238 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 | 238 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 |
| 239 | 239 | ||
| @@ -252,7 +252,7 @@ __aicore__ inline void LoadDataWithTranspose(const LocalTensor<T>& dst, const Lo | |||
| 252 | ``` | 252 | ``` |
| 253 | <!-- end id11 --> | 253 | <!-- end id11 --> |
| 254 | 254 | ||
| 255 | -## L1ToL0B 3D格式分形矩阵搬运(Load3D)<a name="ZH-CN_TOPIC_0000002543422580"></a> | 255 | +## LoadData(L1 -> L0B-3D格式分形矩阵搬运)<a name="ZH-CN_TOPIC_0000002543422580"></a> |
| 256 | 256 | ||
| 257 | Load3D本质上是用于将NC1HWC0格式的Feature Map完成Image to Column展开,然后再从展开后的二维矩阵中选取指定数据块搬入对应内存位置。 | 257 | Load3D本质上是用于将NC1HWC0格式的Feature Map完成Image to Column展开,然后再从展开后的二维矩阵中选取指定数据块搬入对应内存位置。 |
| 258 | 258 | ||
| @@ -261,7 +261,7 @@ Load3D本质上是用于将NC1HWC0格式的Feature Map完成Image to Column展 | |||
| 261 | - L1 Buffer -> L0B Buffer | 261 | - L1 Buffer -> L0B Buffer |
| 262 | - B1 -> B2 | 262 | - B1 -> B2 |
| 263 | 263 | ||
| 264 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(卷积数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/Load3D.md)。 | 264 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadData(L1 -> L0B-3D格式分形矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/Load3D.md)。 |
| 265 | 265 | ||
| 266 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 | 266 | src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数。 |
| 267 | 267 | ||
| @@ -289,7 +289,7 @@ src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数 | |||
| 289 | <!-- end id6 --> | 289 | <!-- end id6 --> |
| 290 | 290 | ||
| 291 | <!-- npu="A3,910b" id9 --> | 291 | <!-- npu="A3,910b" id9 --> |
| 292 | -## L1ToL0B稠密权重矩阵搬运(LoadDataWithSparse)<a name="ZH-CN_TOPIC_0000002574022821"></a> | 292 | +## L1ToL0BLoadDataWithSparse(L1 -> L0B-稠密权重矩阵搬运)<a name="ZH-CN_TOPIC_0000002574022821"></a> |
| 293 | 293 | ||
| 294 | 用于从L1中搬运以512Byte为单位存放的稠密权重矩阵到L0B里,同时搬运以128Byte为单位的索引矩阵到内置的专用buffer空间(用于后续MmadWithSparse接口进行读取)。 | 294 | 用于从L1中搬运以512Byte为单位存放的稠密权重矩阵到L0B里,同时搬运以128Byte为单位的索引矩阵到内置的专用buffer空间(用于后续MmadWithSparse接口进行读取)。 |
| 295 | 295 | ||
| @@ -298,7 +298,7 @@ src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数 | |||
| 298 | - L1 Buffer -> L0B Buffer | 298 | - L1 Buffer -> L0B Buffer |
| 299 | - B1 -> B2 | 299 | - B1 -> B2 |
| 300 | 300 | ||
| 301 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[LoadDataWithSparse](../cube_compute_ISASI/矩阵计算的搬入/LoadDataWithSparse.md)。 | 301 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[L1ToL0BLoadDataWithSparse(L1 -> L0B-稠密权重矩阵搬运)](../cube_compute_ISASI/矩阵计算的搬入/LoadDataWithSparse.md)。 |
| 302 | 302 | ||
| 303 | - 仅如下产品型号支持: | 303 | - 仅如下产品型号支持: |
| 304 | 304 | ||
| @@ -316,7 +316,7 @@ src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数 | |||
| 316 | ``` | 316 | ``` |
| 317 | <!-- end id9 --> | 317 | <!-- end id9 --> |
| 318 | 318 | ||
| 319 | -## L0CToL1随路量化激活搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002543262924"></a> | 319 | +## DataCopy(L0C -> L1-随路量化激活搬运)<a name="ZH-CN_TOPIC_0000002543262924"></a> |
| 320 | 320 | ||
| 321 | 该接口主要实现将数据从L0C Buffer搬运至L1 Buffer,并支持多种随路能力的组合,需要设置不同的寄存器。 | 321 | 该接口主要实现将数据从L0C Buffer搬运至L1 Buffer,并支持多种随路能力的组合,需要设置不同的寄存器。 |
| 322 | 322 | ||
| @@ -325,7 +325,7 @@ src和dst分别为源操作数和目的操作数;loadDataParams为搬运参数 | |||
| 325 | - L0C Buffer -> L1 Buffer | 325 | - L0C Buffer -> L1 Buffer |
| 326 | - CO1 -> C1 | 326 | - CO1 -> C1 |
| 327 | 327 | ||
| 328 | -搬运的数据为[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md)的结果,接口具体介绍请参考:[DataCopy(L0C到L1数据搬运)](../cube_compute_ISASI/矩阵计算的搬出/DataCopy_L0CToL1.md)。 | 328 | +搬运的数据为[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md)的结果,接口具体介绍请参考:[DataCopy(L0C -> L1-随路量化激活搬运)](../cube_compute_ISASI/矩阵计算的搬出/DataCopy_L0CToL1.md)。 |
| 329 | 329 | ||
| 330 | src和dst分别为源操作数和目的操作数;intriParams为搬运参数。 | 330 | src和dst分别为源操作数和目的操作数;intriParams为搬运参数。 |
| 331 | 331 | ||
| @@ -334,7 +334,7 @@ template <typename T, typename U> | |||
| 334 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<U>& src, const DataCopyCO12DstParams& intriParams) | 334 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<U>& src, const DataCopyCO12DstParams& intriParams) |
| 335 | ``` | 335 | ``` |
| 336 | 336 | ||
| 337 | -## L0CToL1随路量化激活搬运(FixPipe)<a name="ZH-CN_TOPIC_0000002573902849"></a> | 337 | +## Fixpipe(L0C -> L1-随路量化激活搬运)<a name="ZH-CN_TOPIC_0000002573902849"></a> |
| 338 | 338 | ||
| 339 | 该接口主要实现将数据从L0C Buffer搬运至L1 Buffer,并支持多种随路能力的组合,接口内包含了设置寄存器与数据搬运能力。 | 339 | 该接口主要实现将数据从L0C Buffer搬运至L1 Buffer,并支持多种随路能力的组合,接口内包含了设置寄存器与数据搬运能力。 |
| 340 | 340 | ||
| @@ -345,7 +345,7 @@ __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<U>& | |||
| 345 | 345 | ||
| 346 | 搬运的数据为[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md)的结果,以Ascend 950PR/Ascend 950DT为例,接口示例如下: | 346 | 搬运的数据为[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md)的结果,以Ascend 950PR/Ascend 950DT为例,接口示例如下: |
| 347 | 347 | ||
| 348 | -注意,不同产品型号的接口原型可能不同,具体介绍请参考:[Fixpipe(L0C到L1数据搬运)](../cube_compute_ISASI/矩阵计算的搬出/Fixpipe_L0CToL1.md)。 | 348 | +注意,不同产品型号的接口原型可能不同,具体介绍请参考:[Fixpipe(L0C -> L1-随路量化激活搬运)](../cube_compute_ISASI/矩阵计算的搬出/Fixpipe_L0CToL1.md)。 |
| 349 | 349 | ||
| 350 | src和dst分别为源操作数和目的操作数;intriParams为搬运参数,cbufWorkspace为开启tensor量化时所需的量化参数。 | 350 | src和dst分别为源操作数和目的操作数;intriParams为搬运参数,cbufWorkspace为开启tensor量化时所需的量化参数。 |
| 351 | 351 | ||
| @@ -8,16 +8,16 @@ L1 Buffer/L0C Buffer与Unified Buffer之间的数据搬运提供了灵活的接 | |||
| 8 | 8 | ||
| 9 | | 数据通路 | 功能 | 描述 | | 9 | | 数据通路 | 功能 | 描述 | |
| 10 | |----------|------|------| | 10 | |----------|------|------| |
| 11 | -| Unified Buffer->L1 Buffer | 连续数据搬运(DataCopy) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续数据搬运。 | | 11 | +| Unified Buffer->L1 Buffer | DataCopy(UB -> L1-连续数据搬运) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续数据搬运。 | |
| 12 | -| Unified Buffer->L1 Buffer | 高维切分数据搬运(DataCopy) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续和非连续的数据搬运。 | | 12 | +| Unified Buffer->L1 Buffer | DataCopy(UB -> L1-高维切分数据搬运) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续和非连续的数据搬运。 | |
| 13 | -| Unified Buffer->L1 Buffer | 随路转换-[ND2NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#ZH-CN_TOPIC_0000002568950893>)搬运(DataCopy) | 支持在数据搬运时进行[ND](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section958745018719>)到[NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section363412741113>)格式的转换。 | | 13 | +| Unified Buffer->L1 Buffer | 随路转换-[ND2NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#ZH-CN_TOPIC_0000002568950893>)搬运) | 支持在数据搬运时进行[ND](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section958745018719>)到[NZ](<../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md#zh-cn_topic_0000002545089965_section363412741113>)格式的转换。 | |
| 14 | -| Unified Buffer->L1 Buffer | 非对齐数据搬运(DataCopyPad) | 支持数据非对齐搬运,可以根据开发者的需要自行填充数据。 | | 14 | +| Unified Buffer->L1 Buffer | DataCopyPad(UB -> L1-非对齐数据搬运) | 支持数据非对齐搬运,可以根据开发者的需要自行填充数据。 | |
| 15 | -| L0C Buffer->Unified Buffer | 随路转换与量化(DataCopy) | 支持多种随路能力的组合,DataCopy接口内包含了设置寄存器与数据搬运能力。 | | 15 | +| L0C Buffer->Unified Buffer | DataCopy(L0C -> UB-随路转换与量化) | 支持多种随路能力的组合,DataCopy接口内包含了设置寄存器与数据搬运能力。 | |
| 16 | -| L0C Buffer->Unified Buffer | 随路量化激活搬运(FixPipe) | 支持多种随路能力的组合,FixPipe接口内包含了设置寄存器与数据搬运能力。 | | 16 | +| L0C Buffer->Unified Buffer | Fixpipe(L0C -> UB-随路量化激活搬运) | 支持多种随路能力的组合,FixPipe接口内包含了设置寄存器与数据搬运能力。 | |
| 17 | -| L1 Buffer->Unified Buffer | 连续数据搬运(DataCopyL1ToUB) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续数据搬运。 | | 17 | +| L1 Buffer->Unified Buffer | DataCopyL1ToUB(L1 -> UB-连续数据搬运) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续数据搬运。 | |
| 18 | -| L1 Buffer->Unified Buffer | 高维切分数据搬运(DataCopyL1ToUB) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续和非连续的数据搬运。 | | 18 | +| L1 Buffer->Unified Buffer | DataCopyL1ToUB(L1 -> UB-高维切分数据搬运) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续和非连续的数据搬运。 | |
| 19 | 19 | ||
| 20 | -## UBToL1连续数据搬运(DataCopy) | 20 | +## DataCopy(UB -> L1-连续数据搬运) |
| 21 | 21 | ||
| 22 | DataCopy能够实现Unified Buffer到L1 Buffer的连续数据搬运,数据搬运时格式和内容保持不变。 | 22 | DataCopy能够实现Unified Buffer到L1 Buffer的连续数据搬运,数据搬运时格式和内容保持不变。 |
| 23 | 23 | ||
| @@ -26,7 +26,7 @@ DataCopy能够实现Unified Buffer到L1 Buffer的连续数据搬运,数据搬 | |||
| 26 | - Unified Buffer -> L1 Buffer | 26 | - Unified Buffer -> L1 Buffer |
| 27 | - UB -> C1 | 27 | - UB -> C1 |
| 28 | 28 | ||
| 29 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopy(UBToL1连续数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_UBToL1_continuous.md)。 | 29 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopy(UB -> L1-连续数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_UBToL1_continuous.md)。 |
| 30 | 30 | ||
| 31 | src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。 | 31 | src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。 |
| 32 | 32 | ||
| @@ -35,7 +35,7 @@ template <typename T> | |||
| 35 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count) | 35 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count) |
| 36 | ``` | 36 | ``` |
| 37 | 37 | ||
| 38 | -## UBToL1高维切分数据搬运(DataCopy) | 38 | +## DataCopy(UB -> L1-高维切分数据搬运) |
| 39 | 39 | ||
| 40 | DataCopy能够实现Unified Buffer到L1 Buffer的连续数据搬运和非连续数据搬运,数据搬运时格式和内容保持不变。 | 40 | DataCopy能够实现Unified Buffer到L1 Buffer的连续数据搬运和非连续数据搬运,数据搬运时格式和内容保持不变。 |
| 41 | 41 | ||
| @@ -46,7 +46,7 @@ DataCopy能够实现Unified Buffer到L1 Buffer的连续数据搬运和非连续 | |||
| 46 | - Unified Buffer -> L1 Buffer | 46 | - Unified Buffer -> L1 Buffer |
| 47 | - UB -> C1 | 47 | - UB -> C1 |
| 48 | 48 | ||
| 49 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopy(UBToL1高维切分数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_UBToL1_highdim_split.md)。 | 49 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopy(UB -> L1-高维切分数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_UBToL1_highdim_split.md)。 |
| 50 | 50 | ||
| 51 | src和dst分别为源操作数和目的操作数;repeatParams为搬运参数。 | 51 | src和dst分别为源操作数和目的操作数;repeatParams为搬运参数。 |
| 52 | 52 | ||
| @@ -55,7 +55,7 @@ template <typename T> | |||
| 55 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const DataCopyParams& repeatParams) | 55 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const DataCopyParams& repeatParams) |
| 56 | ``` | 56 | ``` |
| 57 | 57 | ||
| 58 | -## UBToL1随路转换-ND2NZ搬运(DataCopy) | 58 | +## DataCopy(UB -> L1-随路转换-ND2NZ搬运) |
| 59 | 59 | ||
| 60 | 该接口主要实现将数据从Unified Buffer搬运至L1 Buffer,并支持在数据搬运时进行[ND](../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md)到[NZ](../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md)格式的转换。 | 60 | 该接口主要实现将数据从Unified Buffer搬运至L1 Buffer,并支持在数据搬运时进行[ND](../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md)到[NZ](../cube_compute_ISASI/矩阵计算分形介绍/关键分形格式详解.md)格式的转换。 |
| 61 | 61 | ||
| @@ -64,7 +64,7 @@ __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& | |||
| 64 | - Unified Buffer -> L1 Buffer | 64 | - Unified Buffer -> L1 Buffer |
| 65 | - UB -> C1 | 65 | - UB -> C1 |
| 66 | 66 | ||
| 67 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopy(UBToL1随路转换-ND2NZ搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_UBToL1_ND2NZ.md)。 | 67 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopy(UB -> L1-随路转换-ND2NZ搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopy_UBToL1_ND2NZ.md)。 |
| 68 | 68 | ||
| 69 | src和dst分别为源操作数和目的操作数;intriParams为ND2NZ搬运配置参数。 | 69 | src和dst分别为源操作数和目的操作数;intriParams为ND2NZ搬运配置参数。 |
| 70 | 70 | ||
| @@ -73,7 +73,7 @@ template <typename T> | |||
| 73 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const Nd2NzParams& intriParams) | 73 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const Nd2NzParams& intriParams) |
| 74 | ``` | 74 | ``` |
| 75 | 75 | ||
| 76 | -## UBToL1非对齐数据搬运(DataCopyPad) | 76 | +## UBToL1DataCopyPad(UB -> L1-非对齐数据搬运) |
| 77 | 77 | ||
| 78 | 该接口主要实现将数据从Unified Buffer搬运至L1 Buffer,并支持在数据搬运时提供非对齐数据搬运功能,可以根据开发者的需要自行填充数据。 | 78 | 该接口主要实现将数据从Unified Buffer搬运至L1 Buffer,并支持在数据搬运时提供非对齐数据搬运功能,可以根据开发者的需要自行填充数据。 |
| 79 | 79 | ||
| @@ -82,7 +82,7 @@ __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& | |||
| 82 | - Unified Buffer -> L1 Buffer | 82 | - Unified Buffer -> L1 Buffer |
| 83 | - UB -> C1 | 83 | - UB -> C1 |
| 84 | 84 | ||
| 85 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopyPad(UBToL1非对齐数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopyPad_UBToL1.md)。 | 85 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopyPad(UB -> L1-非对齐数据搬运)](../cube_compute_ISASI/矩阵计算的搬入/DataCopyPad_UBToL1.md)。 |
| 86 | 86 | ||
| 87 | src和dst分别为源操作数和目的操作数;dataCopyParams和nd2nzParams为搬运参数。 | 87 | src和dst分别为源操作数和目的操作数;dataCopyParams和nd2nzParams为搬运参数。 |
| 88 | 88 | ||
| @@ -92,7 +92,7 @@ __aicore__ inline void DataCopyPad(const LocalTensor<T>& dst, const LocalTensor< | |||
| 92 | ``` | 92 | ``` |
| 93 | 93 | ||
| 94 | <!-- npu="310p" id1 --> | 94 | <!-- npu="310p" id1 --> |
| 95 | -## L0CToUB随路量化激活搬运(DataCopy) | 95 | +## DataCopy(L0C -> UB-随路量化激活搬运) |
| 96 | 96 | ||
| 97 | 该接口主要实现将数据从L0C Buffer搬运至Unified Buffer,并支持多种随路能力的组合,接口内包含了设置寄存器与数据搬运能力。 | 97 | 该接口主要实现将数据从L0C Buffer搬运至Unified Buffer,并支持多种随路能力的组合,接口内包含了设置寄存器与数据搬运能力。 |
| 98 | 98 | ||
| @@ -101,7 +101,7 @@ __aicore__ inline void DataCopyPad(const LocalTensor<T>& dst, const LocalTensor< | |||
| 101 | - L0C Buffer -> Unified Buffer | 101 | - L0C Buffer -> Unified Buffer |
| 102 | - CO1 -> UB | 102 | - CO1 -> UB |
| 103 | 103 | ||
| 104 | -搬运的数据为[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md)的结果,接口具体介绍请参考:[DataCopy(L0C到UB数据搬运)](../cube_compute_ISASI/矩阵计算的搬出/DataCopy_L0CToUB.md)。 | 104 | +搬运的数据为[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md)的结果,接口具体介绍请参考:[DataCopy(L0C -> UB-随路量化激活搬运)](../cube_compute_ISASI/矩阵计算的搬出/DataCopy_L0CToUB.md)。 |
| 105 | 105 | ||
| 106 | 该接口仅Atlas 推理系列产品AI Core支持。 | 106 | 该接口仅Atlas 推理系列产品AI Core支持。 |
| 107 | 107 | ||
| @@ -122,7 +122,7 @@ src和dst分别为源操作数和目的操作数;intriParams和enhancedParams | |||
| 122 | ``` | 122 | ``` |
| 123 | <!-- end id1 --> | 123 | <!-- end id1 --> |
| 124 | 124 | ||
| 125 | -## L0CToUB随路量化激活搬运(FixPipe) | 125 | +## L0CToUBFixpipe(L0C -> UB-随路量化激活搬运) |
| 126 | 126 | ||
| 127 | 该接口主要实现将数据从L0C Buffer搬运至Unified Buffer,并支持多种随路能力的组合,接口内包含了设置寄存器与数据搬运能力。 | 127 | 该接口主要实现将数据从L0C Buffer搬运至Unified Buffer,并支持多种随路能力的组合,接口内包含了设置寄存器与数据搬运能力。 |
| 128 | 128 | ||
| @@ -133,7 +133,7 @@ src和dst分别为源操作数和目的操作数;intriParams和enhancedParams | |||
| 133 | 133 | ||
| 134 | 搬运的数据为[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md)的结果,以Ascend 950PR/Ascend 950DT为例,接口示例如下: | 134 | 搬运的数据为[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md)的结果,以Ascend 950PR/Ascend 950DT为例,接口示例如下: |
| 135 | 135 | ||
| 136 | -注意,不同产品型号的接口原型可能不同,具体介绍请参考:[Fixpipe(L0C到UB数据搬运)](../cube_compute_ISASI/矩阵计算的搬出/Fixpipe_L0CToUB.md)。 | 136 | +注意,不同产品型号的接口原型可能不同,具体介绍请参考:[Fixpipe(L0C -> UB-随路量化激活搬运)](../cube_compute_ISASI/矩阵计算的搬出/Fixpipe_L0CToUB.md)。 |
| 137 | 137 | ||
| 138 | src和dst分别为源操作数和目的操作数;intriParams为搬运参数,cbufWorkspace为开启tensor量化时所需的量化参数。 | 138 | src和dst分别为源操作数和目的操作数;intriParams为搬运参数,cbufWorkspace为开启tensor量化时所需的量化参数。 |
| 139 | 139 | ||
| @@ -152,7 +152,7 @@ src和dst分别为源操作数和目的操作数;intriParams为搬运参数, | |||
| 152 | ``` | 152 | ``` |
| 153 | 153 | ||
| 154 | <!-- npu="950" id2 --> | 154 | <!-- npu="950" id2 --> |
| 155 | -## L1ToUB连续数据搬运(DataCopyL1ToUB) | 155 | +## L1ToUBDataCopyL1ToUB(L1 -> UB-连续数据搬运) |
| 156 | 156 | ||
| 157 | DataCopyL1ToUB能够实现L1 Buffer到Unified Buffer的连续数据搬运,数据搬运时格式和内容保持不变。 | 157 | DataCopyL1ToUB能够实现L1 Buffer到Unified Buffer的连续数据搬运,数据搬运时格式和内容保持不变。 |
| 158 | 158 | ||
| @@ -161,7 +161,7 @@ DataCopyL1ToUB能够实现L1 Buffer到Unified Buffer的连续数据搬运,数 | |||
| 161 | - L1 Buffer -> Unified Buffer | 161 | - L1 Buffer -> Unified Buffer |
| 162 | - C1 -> UB | 162 | - C1 -> UB |
| 163 | 163 | ||
| 164 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopyL1ToUB(L1到UB数据搬运)](../cube_compute_ISASI/矩阵计算的搬出/DataCopyL1ToUB.md)。 | 164 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopyL1ToUB(L1 -> UB-连续数据搬运)](../cube_compute_ISASI/矩阵计算的搬出/DataCopyL1ToUB.md)。 |
| 165 | 165 | ||
| 166 | 该接口仅Ascend 950PR/Ascend 950DT支持。 | 166 | 该接口仅Ascend 950PR/Ascend 950DT支持。 |
| 167 | 167 | ||
| @@ -174,7 +174,7 @@ __aicore__ inline void DataCopyL1ToUB(const LocalTensor<T>& dst, const LocalTens | |||
| 174 | <!-- end id2 --> | 174 | <!-- end id2 --> |
| 175 | 175 | ||
| 176 | <!-- npu="950" id3 --> | 176 | <!-- npu="950" id3 --> |
| 177 | -## L1ToUB高维切分数据搬运(DataCopyL1ToUB) | 177 | +## L1ToUBDataCopyL1ToUB(L1 -> UB-高维切分数据搬运) |
| 178 | 178 | ||
| 179 | DataCopyL1ToUB能够实现L1 Buffer到Unified Buffer的连续数据搬运和非连续数据搬运,数据搬运时格式和内容保持不变。 | 179 | DataCopyL1ToUB能够实现L1 Buffer到Unified Buffer的连续数据搬运和非连续数据搬运,数据搬运时格式和内容保持不变。 |
| 180 | 180 | ||
| @@ -185,7 +185,7 @@ DataCopyL1ToUB能够实现L1 Buffer到Unified Buffer的连续数据搬运和非 | |||
| 185 | - L1 Buffer -> Unified Buffer | 185 | - L1 Buffer -> Unified Buffer |
| 186 | - C1 -> UB | 186 | - C1 -> UB |
| 187 | 187 | ||
| 188 | -搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopyL1ToUB(L1到UB数据搬运)](../cube_compute_ISASI/矩阵计算的搬出/DataCopyL1ToUB.md)。 | 188 | +搬运的数据用于[矩阵计算](../cube_compute_ISASI/cube_compute_ISASI.md),接口具体介绍请参考:[DataCopyL1ToUB(L1 -> UB-高维切分数据搬运)](../cube_compute_ISASI/矩阵计算的搬出/DataCopyL1ToUB.md)。 |
| 189 | 189 | ||
| 190 | 该接口仅Ascend 950PR/Ascend 950DT支持。 | 190 | 该接口仅Ascend 950PR/Ascend 950DT支持。 |
| 191 | 191 | ||
| @@ -10,12 +10,12 @@ Unified Buffer(UB)之间的数据搬运提供了灵活的接口支持,共 | |||
| 10 | 10 | ||
| 11 | | 数据通路 | 功能 | 描述 | | 11 | | 数据通路 | 功能 | 描述 | |
| 12 | | :---: | :--- | :--- | | 12 | | :---: | :--- | :--- | |
| 13 | -| UB->UB | 连续数据搬运(DataCopy) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续数据搬运。 | | 13 | +| UB->UB | DataCopy(UB -> UB-连续数据搬运) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续数据搬运。 | |
| 14 | -| UB->UB | 高维切分数据搬运(DataCopy) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续和非连续的数据搬运。 | | 14 | +| UB->UB | DataCopy(UB -> UB-高维切分数据搬运) | 提供基础的数据搬运能力,数据在传输过程中保持原始格式和内容不变,支持连续和非连续的数据搬运。 | |
| 15 | -| UB->UB | 连续数据搬运(Copy) | 支持连续数据搬运,数据搬运时格式和内容保持不变。 | | 15 | +| UB->UB | Copy(UB -> UB-连续数据搬运) | 支持连续数据搬运,数据搬运时格式和内容保持不变。 | |
| 16 | -| UB->UB | 掩码式高维数据搬运(Copy) | 支持mask操作和DataBlock间隔操作,支持在接口内部和接口外部设置mask。 | | 16 | +| UB->UB | Copy(UB -> UB-掩码式高维数据搬运) | 支持mask操作和DataBlock间隔操作,支持在接口内部和接口外部设置mask。 | |
| 17 | 17 | ||
| 18 | -## UB -> UB连续数据搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002382907025"></a> | 18 | +## DataCopy(UB -> UB-连续数据搬运)<a name="ZH-CN_TOPIC_0000002382907025"></a> |
| 19 | 19 | ||
| 20 | 支持Unified Buffer与Unified Buffer之间的连续数据搬运,数据在传输过程中保持原始格式和内容不变。 | 20 | 支持Unified Buffer与Unified Buffer之间的连续数据搬运,数据在传输过程中保持原始格式和内容不变。 |
| 21 | 21 | ||
| @@ -25,7 +25,7 @@ Unified Buffer(UB)之间的数据搬运提供了灵活的接口支持,共 | |||
| 25 | - VECIN -> VECCALC | 25 | - VECIN -> VECCALC |
| 26 | - VECCALC -> VECOUT | 26 | - VECCALC -> VECOUT |
| 27 | 27 | ||
| 28 | -搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[UB -> UB连续数据搬运(DataCopy)](../Memory矢量计算/数据搬运/UB与UB数据搬运/DataCopy_UBToUB_continuous.md)。 | 28 | +搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[DataCopy(UB -> UB-连续数据搬运)](../Memory矢量计算/数据搬运/DataCopy_UBToUB_continuous.md)。 |
| 29 | 29 | ||
| 30 | src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。 | 30 | src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。 |
| 31 | 31 | ||
| @@ -34,7 +34,7 @@ template <typename T> | |||
| 34 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count) | 34 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count) |
| 35 | ``` | 35 | ``` |
| 36 | 36 | ||
| 37 | -## UB -> UB高维切分数据搬运(DataCopy)<a name="ZH-CN_TOPIC_0000002382908321"></a> | 37 | +## DataCopy(UB -> UB-高维切分数据搬运)<a name="ZH-CN_TOPIC_0000002382908321"></a> |
| 38 | 38 | ||
| 39 | 支持Unified Buffer与Unified Buffer之间的高维切分数据搬运,数据在传输过程中保持原始格式和内容不变。 | 39 | 支持Unified Buffer与Unified Buffer之间的高维切分数据搬运,数据在传输过程中保持原始格式和内容不变。 |
| 40 | 40 | ||
| @@ -46,7 +46,7 @@ __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& | |||
| 46 | - VECIN -> VECCALC | 46 | - VECIN -> VECCALC |
| 47 | - VECCALC -> VECOUT | 47 | - VECCALC -> VECOUT |
| 48 | 48 | ||
| 49 | -搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[UB -> UB高维切分数据搬运(DataCopy)](../Memory矢量计算/数据搬运/UB与UB数据搬运/DataCopy_UBToUB_highdim_split.md)。 | 49 | +搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[DataCopy(UB -> UB-高维切分数据搬运)](../Memory矢量计算/数据搬运/DataCopy_UBToUB_highdim_split.md)。 |
| 50 | 50 | ||
| 51 | src和dst分别为源操作数和目的操作数;repeatParams为DataCopyParams类型的搬运参数,通过该参数可配置搬运的数据块大小、个数、间隔等信息,同时支持非连续和连续搬运。 | 51 | src和dst分别为源操作数和目的操作数;repeatParams为DataCopyParams类型的搬运参数,通过该参数可配置搬运的数据块大小、个数、间隔等信息,同时支持非连续和连续搬运。 |
| 52 | 52 | ||
| @@ -55,7 +55,7 @@ template <typename T> | |||
| 55 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const DataCopyParams& repeatParams) | 55 | __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const DataCopyParams& repeatParams) |
| 56 | ``` | 56 | ``` |
| 57 | 57 | ||
| 58 | -## UB -> UB连续数据搬运(Copy)<a name="ZH-CN_TOPIC_0000002575088175"></a> | 58 | +## Copy(UB -> UB连续数据搬运)<a name="ZH-CN_TOPIC_0000002575088175"></a> |
| 59 | 59 | ||
| 60 | 支持Unified Buffer和Unified Buffer之间的连续数据搬运,数据搬运时格式和内容保持不变。 | 60 | 支持Unified Buffer和Unified Buffer之间的连续数据搬运,数据搬运时格式和内容保持不变。 |
| 61 | 61 | ||
| @@ -69,7 +69,7 @@ __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& | |||
| 69 | - VECOUT -> VECIN | 69 | - VECOUT -> VECIN |
| 70 | - VECOUT -> VECCALC | 70 | - VECOUT -> VECCALC |
| 71 | 71 | ||
| 72 | -搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[UB -> UB连续数据搬运(Copy)](../Memory矢量计算/数据搬运/UB与UB数据搬运/Copy_UBToUB_continuous.md)。 | 72 | +搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[Copy(UB -> UB-连续数据搬运)](../Memory矢量计算/数据搬运/Copy_UBToUB_continuous.md)。 |
| 73 | 73 | ||
| 74 | src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。 | 74 | src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。 |
| 75 | 75 | ||
| @@ -78,7 +78,7 @@ template <typename T, bool isSetMask = true> | |||
| 78 | __aicore__ inline void Copy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count) | 78 | __aicore__ inline void Copy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count) |
| 79 | ``` | 79 | ``` |
| 80 | 80 | ||
| 81 | -## UB -> UB掩码式高维数据搬运(Copy)<a name="ZH-CN_TOPIC_0000002575088676"></a> | 81 | +## Copy(UB -> UB-掩码式高维数据搬运)<a name="ZH-CN_TOPIC_0000002575088676"></a> |
| 82 | 82 | ||
| 83 | 支持Unified Buffer和Unified Buffer之间的数据搬运,数据搬运时格式和内容保持不变,支持mask操作和DataBlock间隔操作。 | 83 | 支持Unified Buffer和Unified Buffer之间的数据搬运,数据搬运时格式和内容保持不变,支持mask操作和DataBlock间隔操作。 |
| 84 | 84 | ||
| @@ -92,7 +92,7 @@ __aicore__ inline void Copy(const LocalTensor<T>& dst, const LocalTensor<T>& src | |||
| 92 | - VECOUT -> VECIN | 92 | - VECOUT -> VECIN |
| 93 | - VECOUT -> VECCALC | 93 | - VECOUT -> VECCALC |
| 94 | 94 | ||
| 95 | -搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[UB -> UB掩码式高维数据搬运(Copy)](../Memory矢量计算/数据搬运/UB与UB数据搬运/Copy_UBToUB_mask_highdim_split.md)。 | 95 | +搬运的数据用于[矢量计算](../Memory矢量计算/Memory矢量计算.md),具体的接口请参考:[Copy(UB -> UB-掩码式高维数据搬运)](../Memory矢量计算/数据搬运/Copy_UBToUB_mask_highdim_split.md)。 |
| 96 | 96 | ||
| 97 | src和dst分别为源操作数和目的操作数;mask用于控制每次迭代内参与计算的元素;repeatTime为重复迭代次数;repeatParams为CopyRepeatParams类型的搬运参数。 | 97 | src和dst分别为源操作数和目的操作数;mask用于控制每次迭代内参与计算的元素;repeatTime为重复迭代次数;repeatParams为CopyRepeatParams类型的搬运参数。 |
| 98 | 98 | ||
| @@ -8,7 +8,7 @@ | |||
| 8 | 8 | ||
| 9 | 最简单的搬运模式。将源地址处一段连续内存的数据原封不动地搬运到目的地址。数据在传输过程中格式和内容保持不变,不执行任何转换或计算操作。函数原型中通过uint32\_t count参数指定搬运的元素个数(以sizeof\(T\)为单位),接口会自动将元素个数转换为对应的字节数。 | 9 | 最简单的搬运模式。将源地址处一段连续内存的数据原封不动地搬运到目的地址。数据在传输过程中格式和内容保持不变,不执行任何转换或计算操作。函数原型中通过uint32\_t count参数指定搬运的元素个数(以sizeof\(T\)为单位),接口会自动将元素个数转换为对应的字节数。 |
| 10 | 10 | ||
| 11 | -**适用场景**:已知数据在源和目的地址均连续存放,且地址满足对齐要求时的快速搬运。典型用于矢量计算前的批量数据加载(GM->UB)和计算后的结果回写(UB->GM)。参考[GM与UB连续数据搬运(DataCopy)](../GM与UB数据搬运.md#ZH-CN_TOPIC_0000002382908021)、[GM与L1连续数据搬运(DataCopy)](../GM与L1或L0数据搬运.md#ZH-CN_TOPIC_0000002574022813)等章节。 | 11 | +**适用场景**:已知数据在源和目的地址均连续存放,且地址满足对齐要求时的快速搬运。典型用于矢量计算前的批量数据加载(GM->UB)和计算后的结果回写(UB->GM)。参考[DataCopy(GM与UB-连续数据搬运)](../GM与UB数据搬运.md#ZH-CN_TOPIC_0000002382908021)、[DataCopy(GM与L1-连续数据搬运)](../GM与L1或L0数据搬运.md#ZH-CN_TOPIC_0000002574022813)等章节。 |
| 12 | 12 | ||
| 13 | **图1** 基础连续搬运示意图 | 13 | **图1** 基础连续搬运示意图 |
| 14 | 14 | ||
| @@ -23,7 +23,7 @@ | |||
| 23 | - **srcStride/dstStride(srcGap/dstGap)**:相邻数据块之间的地址间隔(以DataBlock为单位)。当stride = blockLen时,数据在内存中实际是连续的;当stride\>blockLen时,表示每个数据块之间存在跳跃,实现了非连续(跨步)搬运。 | 23 | - **srcStride/dstStride(srcGap/dstGap)**:相邻数据块之间的地址间隔(以DataBlock为单位)。当stride = blockLen时,数据在内存中实际是连续的;当stride\>blockLen时,表示每个数据块之间存在跳跃,实现了非连续(跨步)搬运。 |
| 24 | - **repeat**:重复搬运的轮数。整个搬运过程将在repeat轮中执行,每轮搬运blockCount个数据块,轮与轮之间的地址偏移由srcRepeatStride/dstRepeatStride控制。 | 24 | - **repeat**:重复搬运的轮数。整个搬运过程将在repeat轮中执行,每轮搬运blockCount个数据块,轮与轮之间的地址偏移由srcRepeatStride/dstRepeatStride控制。 |
| 25 | 25 | ||
| 26 | -**适用场景**:Conv、Matmul等算子中常见的分块(Tiling)数据搬运,数据按固定步长在源或目的端非连续分布。参考[GM与UB高维切分数据搬运(DataCopy)](../GM与UB数据搬运.md#ZH-CN_TOPIC_00000023829080211)、[GM与L1高维切分数据搬运(DataCopy)](../GM与L1或L0数据搬运.md#ZH-CN_TOPIC_0000002543262916)等章节。 | 26 | +**适用场景**:Conv、Matmul等算子中常见的分块(Tiling)数据搬运,数据按固定步长在源或目的端非连续分布。参考[DataCopy(GM与UB-高维切分数据搬运)](../GM与UB数据搬运.md#ZH-CN_TOPIC_00000023829080211)、[DataCopy(GM与L1-高维切分数据搬运)](../GM与L1或L0数据搬运.md#ZH-CN_TOPIC_0000002543262916)等章节。 |
| 27 | 27 | ||
| 28 | **图2** 高维切分连续搬运示意图 | 28 | **图2** 高维切分连续搬运示意图 |
| 29 | 29 | ||
| @@ -37,15 +37,15 @@ | |||
| 37 | 37 | ||
| 38 | 切片搬运支持从一个多维Tensor中提取一个矩形子区域(Slice)进行搬运。通过SliceInfo结构体数组描述源端和目的端每个维度上的切片参数(burstLen、beginOffset、endOffset等),可以实现1\~5维的灵活切片。切片搬运本质上是一种特殊的高维非连续搬运,但接口层面提供了更直观的多维配置方式。 | 38 | 切片搬运支持从一个多维Tensor中提取一个矩形子区域(Slice)进行搬运。通过SliceInfo结构体数组描述源端和目的端每个维度上的切片参数(burstLen、beginOffset、endOffset等),可以实现1\~5维的灵活切片。切片搬运本质上是一种特殊的高维非连续搬运,但接口层面提供了更直观的多维配置方式。 |
| 39 | 39 | ||
| 40 | -**适用场景**:从大型特征图中提取ROI(Region of Interest)子区域、Pad模式下提取有效数据区域等。参考[GM与UB切片数据搬运(DataCopy)](../GM与UB数据搬运.md#ZH-CN_TOPIC_0000002568770166)章节。 | 40 | +**适用场景**:从大型特征图中提取ROI(Region of Interest)子区域、Pad模式下提取有效数据区域等。参考[DataCopy(GM与UB-切片数据搬运)](../GM与UB数据搬运.md#ZH-CN_TOPIC_0000002568770166)章节。 |
| 41 | 41 | ||
| 42 | ## 随路格式转换搬运(ND2NZ/NZ2ND/DN2NZ) | 42 | ## 随路格式转换搬运(ND2NZ/NZ2ND/DN2NZ) |
| 43 | 43 | ||
| 44 | 在昇腾的矩阵计算流程中,数据通常需要从ND(Standard Normal Data,标准数据排列,即NHWC/NCHW等常规格式)转换为NZ(Normal Normal Data,分形矩阵排列,即按小矩阵块组织的行列排布)格式,计算完成后再从NZ转回ND。Ascend C提供了“随路转换”能力——在数据搬运的同时完成格式转换,无需额外的转换指令,从而实现“搬运零开销格式转换”。 | 44 | 在昇腾的矩阵计算流程中,数据通常需要从ND(Standard Normal Data,标准数据排列,即NHWC/NCHW等常规格式)转换为NZ(Normal Normal Data,分形矩阵排列,即按小矩阵块组织的行列排布)格式,计算完成后再从NZ转回ND。Ascend C提供了“随路转换”能力——在数据搬运的同时完成格式转换,无需额外的转换指令,从而实现“搬运零开销格式转换”。 |
| 45 | 45 | ||
| 46 | -- **ND2NZ搬运**:数据从Global Memory搬运到Unified Buffer/L1 Buffer的同时,将ND格式转换为NZ格式。通过Nd2NzParams参数配置源矩阵的分形维度信息。参考[GMToUB随路转换ND2NZ搬运(DataCopy)](../GM与UB数据搬运.md#ZH-CN_TOPIC_0000002349187356)、[GMToL1随路转换ND2NZ搬运(DataCopy)](../GM与L1或L0数据搬运.md#ZH-CN_TOPIC_0000002573902841)等章节。 | 46 | +- **ND2NZ搬运**:数据从Global Memory搬运到Unified Buffer/L1 Buffer的同时,将ND格式转换为NZ格式。通过Nd2NzParams参数配置源矩阵的分形维度信息。参考[DataCopy(GM -> UB-随路转换ND2NZ搬运)](../GM与UB数据搬运.md#ZH-CN_TOPIC_0000002349187356)、[DataCopy(GM -> L1-随路转换ND2NZ搬运)](../GM与L1或L0数据搬运.md#ZH-CN_TOPIC_0000002573902841)等章节。 |
| 47 | -- **NZ2ND搬运**:数据从Unified Buffer搬运到Global Memory的同时,将NZ格式转换回ND格式。通过Nz2NdParamsFull参数配置目的矩阵的维度信息。参考[UBToGM随路转换NZ2ND搬运(DataCopy)](../GM与UB数据搬运.md#ZH-CN_TOPIC_0000002391805265)等章节。 | 47 | +- **NZ2ND搬运**:数据从Unified Buffer搬运到Global Memory的同时,将NZ格式转换回ND格式。通过Nz2NdParamsFull参数配置目的矩阵的维度信息。参考[DataCopy(UBToGM-随路转换NZ2ND搬运)](../GM与UB数据搬运.md#ZH-CN_TOPIC_0000002391805265)等章节。 |
| 48 | -- **DN2NZ搬运**:(ISASI产品支持)从深度卷积的DN格式到NZ格式的转换搬运。参考[GMToL1随路转换-DN2NZ搬运(DataCopy)](../GM与L1或L0数据搬运.md#gmtol1随路转换-dn2nz搬运datacopy)章节。 | 48 | +- **DN2NZ搬运**:(ISASI产品支持)从深度卷积的DN格式到NZ格式的转换搬运。参考[DataCopy(GM -> L1-随路转换-DN2NZ搬运)](../GM与L1或L0数据搬运.md#gmtol1随路转换-dn2nz搬运datacopy)章节。 |
| 49 | 49 | ||
| 50 | **图4** ND2NZ格式转换示意图 | 50 | **图4** ND2NZ格式转换示意图 |
| 51 | 51 | ||
| @@ -55,13 +55,13 @@ | |||
| 55 | 55 | ||
| 56 | 矩阵计算(Cube单元)的输出结果存放在L0C Buffer中,通常需要经过量化(Quantize)、反量化(Dequantize)、ReLU激活等后处理才能供后续计算使用。Ascend C的随路量化激活搬运接口(DataCopy或FixPipe)在将L0C Buffer数据搬运到Global Memory或L1 Buffer的同时,可以顺带执行量化类型转换和激活操作,实现“搬运+计算”的融合,大幅减少额外的计算指令开销。 | 56 | 矩阵计算(Cube单元)的输出结果存放在L0C Buffer中,通常需要经过量化(Quantize)、反量化(Dequantize)、ReLU激活等后处理才能供后续计算使用。Ascend C的随路量化激活搬运接口(DataCopy或FixPipe)在将L0C Buffer数据搬运到Global Memory或L1 Buffer的同时,可以顺带执行量化类型转换和激活操作,实现“搬运+计算”的融合,大幅减少额外的计算指令开销。 |
| 57 | 57 | ||
| 58 | -**适用场景**:Matmul/Conv算子中矩阵乘累加结果(float/int32_t)向半精度/int8_t输出的转换与搬出。参考[L0CToGM随路量化激活搬运(DataCopy)](../GM与L1或L0数据搬运.md#l0ctogm随路量化激活搬运datacopy)、[L0CToGM随路量化激活搬运(FixPipe)](../GM与L1或L0数据搬运.md#l0ctogm随路量化激活搬运fixpipe)等章节。 | 58 | +**适用场景**:Matmul/Conv算子中矩阵乘累加结果(float/int32_t)向半精度/int8_t输出的转换与搬出。参考[DataCopy(L0C -> GM-随路量化激活搬运)](../GM与L1或L0数据搬运.md#l0ctogm随路量化激活搬运datacopy)、[Fixpipe(L0C -> GM-随路量化激活搬运)](../GM与L1或L0数据搬运.md#l0ctogm随路量化激活搬运fixpipe)等章节。 |
| 59 | 59 | ||
| 60 | ## 非对齐数据搬运(DataCopyPad) | 60 | ## 非对齐数据搬运(DataCopyPad) |
| 61 | 61 | ||
| 62 | 标准DataCopy接口要求源和目的操作数的起始地址满足对齐约束(如UB要求32Byte对齐)。当实际数据长度不满足对齐要求时(例如搬运17个half元素,共34字节,不是32的整数倍),需要使用DataCopyPad接口。该接口允许搬运的最后一个数据块为非对齐长度,并可通过padParams参数配置填充(Padding)值和填充模式,使搬运后的目的地址仍保持对齐。 | 62 | 标准DataCopy接口要求源和目的操作数的起始地址满足对齐约束(如UB要求32Byte对齐)。当实际数据长度不满足对齐要求时(例如搬运17个half元素,共34字节,不是32的整数倍),需要使用DataCopyPad接口。该接口允许搬运的最后一个数据块为非对齐长度,并可通过padParams参数配置填充(Padding)值和填充模式,使搬运后的目的地址仍保持对齐。 |
| 63 | 63 | ||
| 64 | -**适用场景**:数据总长度不满足32Byte对齐要求时的搬运,以及需要在搬运时对尾部数据补Pad的场景。参考[GMToUB非对齐数据搬运(DataCopyPad)](../GM与UB数据搬运.md#ZH-CN_TOPIC_0000001894460401)、[GMToL1非对齐数据搬运(DataCopyPad)](../GM与L1或L0数据搬运.md#gmtol1非对齐数据搬运datacopypad)等章节。 | 64 | +**适用场景**:数据总长度不满足32Byte对齐要求时的搬运,以及需要在搬运时对尾部数据补Pad的场景。参考[DataCopyPad(GM -> UB-非对齐数据搬运)](../GM与UB数据搬运.md#ZH-CN_TOPIC_0000001894460401)、[DataCopyPad(GM -> L1-非对齐数据搬运)](../GM与L1或L0数据搬运.md#gmtol1非对齐数据搬运datacopypad)等章节。 |
| 65 | 65 | ||
| 66 | ## UB内部搬运(Copy) | 66 | ## UB内部搬运(Copy) |
| 67 | 67 | ||
| @@ -69,7 +69,7 @@ Copy是Unified Buffer内部专用的数据搬运指令,支持VECIN/VECCALC/VEC | |||
| 69 | 69 | ||
| 70 | ## 矩阵分形搬运(Load2D/Load3D) | 70 | ## 矩阵分形搬运(Load2D/Load3D) |
| 71 | 71 | ||
| 72 | -Load2D和Load3D是专用于矩阵计算通路的2D/3D格式分形搬运接口,负责将L1中的矩阵数据按照Cube计算单元所需的特殊分形格式(如NZ排列)搬运到L0A Buffer/L0B Buffer。这类接口可以伴随转置操作(LoadDataWithTranspose),并支持稀疏权重矩阵的加载(LoadDataWithSparse)。参考[L1ToL0A 2D格式分形矩阵搬运(Load2D)](../L1与L0数据搬运.md#l1tol0a-2d格式分形矩阵搬运load2d)、[L1ToL0A 3D格式分形矩阵搬运(Load3D)](../L1与L0数据搬运.md#l1tol0a-3d格式分形矩阵搬运load3d)等章节。 | 72 | +Load2D和Load3D是专用于矩阵计算通路的2D/3D格式分形搬运接口,负责将L1中的矩阵数据按照Cube计算单元所需的特殊分形格式(如NZ排列)搬运到L0A Buffer/L0B Buffer。这类接口可以伴随转置操作(LoadDataWithTranspose),并支持稀疏权重矩阵的加载(LoadDataWithSparse)。参考[LoadData(L1ToL0A-2D格式分形矩阵搬运)](../L1与L0数据搬运.md#l1tol0a-2d格式分形矩阵搬运load2d)、[LoadData(L1ToL0A-3D格式分形矩阵搬运)](../L1与L0数据搬运.md#l1tol0a-3d格式分形矩阵搬运load3d)等章节。 |
| 73 | 73 | ||
| 74 | ## 多维数据搬运NDDMA(DataCopy) | 74 | ## 多维数据搬运NDDMA(DataCopy) |
| 75 | 75 | ||
| @@ -1,4 +1,4 @@ | |||
| 1 | -# 系统缓存概述<a name="ZH-CN_TOPIC_0000002594407823"></a> | 1 | +# 系统缓存概述<a name="ZH-CN_TOPIC_0000002594407823"></a> |
| 2 | 2 | ||
| 3 | ## Cache类型<a name="zh-cn_topic_0000002583420201_section112105011415"></a> | 3 | ## Cache类型<a name="zh-cn_topic_0000002583420201_section112105011415"></a> |
| 4 | 4 | ||
| @@ -26,7 +26,7 @@ Cache(缓存)的主要作用是在搬运单元或Scalar单元与外部存储 | |||
| 26 | | DCache | DCache(Data Cache)用于缓存Scalar单元近期可能被重复访问的数据段。<br>通过Scalar单元读取GM时,优先从DCache中读取数据;当DCache未命中时,再从L2 Cache中读取数据。当L2 Cache也未命中时,再从GM加载数据并更新到L2 Cache和DCache中。 | | 26 | | DCache | DCache(Data Cache)用于缓存Scalar单元近期可能被重复访问的数据段。<br>通过Scalar单元读取GM时,优先从DCache中读取数据;当DCache未命中时,再从L2 Cache中读取数据。当L2 Cache也未命中时,再从GM加载数据并更新到L2 Cache和DCache中。 | |
| 27 | | ICache | ICache(Instruction Cache)用于缓存Scalar单元最近使用或频繁使用的指令。<br>通过Scalar单元读取GM指令时,优先从ICache中读取指令;当ICache未命中时,再从L2 Cache中读取指令。当L2 Cache也未命中时,再从GM加载指令并更新到L2 Cache和ICache中。 | | 27 | | ICache | ICache(Instruction Cache)用于缓存Scalar单元最近使用或频繁使用的指令。<br>通过Scalar单元读取GM指令时,优先从ICache中读取指令;当ICache未命中时,再从L2 Cache中读取指令。当L2 Cache也未命中时,再从GM加载指令并更新到L2 Cache和ICache中。 | |
| 28 | | SIMT DCache | SIMT访问GM需要经过SIMT DCache中转。数据流经由GM到SIMT DCache,再从SIMT DCache到SIMT寄存器,SIMT DCache充当中间缓冲层,减少对GM的直接访问次数。 | | 28 | | SIMT DCache | SIMT访问GM需要经过SIMT DCache中转。数据流经由GM到SIMT DCache,再从SIMT DCache到SIMT寄存器,SIMT DCache充当中间缓冲层,减少对GM的直接访问次数。 | |
| 29 | -| NDDMA Cache | NDDMA Cache用于缓存最近或即将被[多维数据搬运DataCopy](../../基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMToUB_NDDMA.md)接口搬运的数据。 | | 29 | +| NDDMA Cache | NDDMA Cache用于缓存最近或即将被[多维数据搬运DataCopy](../../基础API/Memory矢量计算/数据搬运/DataCopy_GMToUB_NDDMA.md)接口搬运的数据。 | |
| 30 | 30 | ||
| 31 | ## Cache操作及使用场景<a name="zh-cn_topic_0000002583420201_section054554323117"></a> | 31 | ## Cache操作及使用场景<a name="zh-cn_topic_0000002583420201_section054554323117"></a> |
| 32 | 32 | ||
| @@ -100,4 +100,4 @@ Cache一致性是多核中确保数据正确性的核心机制。简单来说, | |||
| 100 | | DCache | [ReadGmByPassDCache](../标量计算/ReadGmByPassDCache_ISASI.md)/[WriteGmByPassDCache](../标量计算/WriteGmByPassDCache_ISASI.md) | 不经过DCache向GM地址上**读**/**写**数据。使用场景:<br>•当多个核写入的数据落在同一条Cache Line内时,经过DCache的读写将以64B为粒度,可能引发多核数据随机覆盖问题。使用该接口不经过DCache直接按操作数大小**读**/**写**GM,可避免此问题。<br>•使用该接口不经过DCache直接向GM**读**/**写**数据,可避免由DCache缓存引发的多核间数据不一致问题。 | | 100 | | DCache | [ReadGmByPassDCache](../标量计算/ReadGmByPassDCache_ISASI.md)/[WriteGmByPassDCache](../标量计算/WriteGmByPassDCache_ISASI.md) | 不经过DCache向GM地址上**读**/**写**数据。使用场景:<br>•当多个核写入的数据落在同一条Cache Line内时,经过DCache的读写将以64B为粒度,可能引发多核数据随机覆盖问题。使用该接口不经过DCache直接按操作数大小**读**/**写**GM,可避免此问题。<br>•使用该接口不经过DCache直接向GM**读**/**写**数据,可避免由DCache缓存引发的多核间数据不一致问题。 | |
| 101 | | ICache | [ICachePreLoad](ICachePreLoad_ISASI.md) | 开发者手动调用ICachePreLoad接口,能够从指令所在GM地址预加载指令到ICache中。 | | 101 | | ICache | [ICachePreLoad](ICachePreLoad_ISASI.md) | 开发者手动调用ICachePreLoad接口,能够从指令所在GM地址预加载指令到ICache中。 | |
| 102 | | ICache | [GetICachePreloadStatus](GetICachePreloadStatus_ISASI.md) | GetICachePreloadStatus为调试接口,在调用ICachePreLoad后调用,用于获取ICache的PreLoad的状态。当返回值为0时,说明ICache的PreLoad已完成;当返回值为1时,说明ICache的PreLoad未完成。 | | 102 | | ICache | [GetICachePreloadStatus](GetICachePreloadStatus_ISASI.md) | GetICachePreloadStatus为调试接口,在调用ICachePreLoad后调用,用于获取ICache的PreLoad的状态。当返回值为0时,说明ICache的PreLoad已完成;当返回值为1时,说明ICache的PreLoad未完成。 | |
| 103 | -| NDDMA Cache | NdDmaDci | 在使用[多维数据搬运DataCopy](../../基础API/Memory矢量计算/数据搬运/GM与UB数据搬运/DataCopy_GMToUB_NDDMA.md)接口进行数据搬运前,需要使用NdDmaDci接口刷新NDDMA Cache缓存保证为最新状态。 | | 103 | +| NDDMA Cache | NdDmaDci | 在使用[多维数据搬运DataCopy](../../基础API/Memory矢量计算/数据搬运/DataCopy_GMToUB_NDDMA.md)接口进行数据搬运前,需要使用NdDmaDci接口刷新NDDMA Cache缓存保证为最新状态。 | |
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/GetTPipePtr.md→docs/api/SIMD-API/基础API/资源管理/GetTPipePtr.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/内存管理/LocalMemAllocator/Alloc.md→docs/api/SIMD-API/基础API/资源管理/LocalMemAllocator/Alloc.md+2-2
| @@ -66,7 +66,7 @@ | |||
| 66 | </thead> | 66 | </thead> |
| 67 | <tbody><tr id="row18835145716587"><td class="cellrowborder" valign="top" width="17.43%" headers="mcps1.2.3.1.1 "><p id="p1383515717581"><a name="p1383515717581"></a><a name="p1383515717581"></a>pos</p> | 67 | <tbody><tr id="row18835145716587"><td class="cellrowborder" valign="top" width="17.43%" headers="mcps1.2.3.1.1 "><p id="p1383515717581"><a name="p1383515717581"></a><a name="p1383515717581"></a>pos</p> |
| 68 | </td> | 68 | </td> |
| 69 | -<td class="cellrowborder" valign="top" width="82.57%" headers="mcps1.2.3.1.2 "><p id="p18689719202918"><a name="p18689719202918"></a><a name="p18689719202918"></a><a href="../../../辅助数据结构/TPosition.md">TPosition</a>位置,需要符合<a href="LocalMemAllocator简介.md">LocalMemAllocator</a>中指定的Hardware物理位置(静态Tensor编程场景下,此参数可以省略)。</p> | 69 | +<td class="cellrowborder" valign="top" width="82.57%" headers="mcps1.2.3.1.2 "><p id="p18689719202918"><a name="p18689719202918"></a><a name="p18689719202918"></a><a href="../../辅助数据结构/TPosition.md">TPosition</a>位置,需要符合<a href="LocalMemAllocator简介.md">LocalMemAllocator</a>中指定的Hardware物理位置(静态Tensor编程场景下,此参数可以省略)。</p> |
| 70 | </td> | 70 | </td> |
| 71 | </tr> | 71 | </tr> |
| 72 | <tr id="row199212475441"><td class="cellrowborder" valign="top" width="17.43%" headers="mcps1.2.3.1.1 "><p id="p352033512453"><a name="p352033512453"></a><a name="p352033512453"></a>DataType</p> | 72 | <tr id="row199212475441"><td class="cellrowborder" valign="top" width="17.43%" headers="mcps1.2.3.1.1 "><p id="p352033512453"><a name="p352033512453"></a><a name="p352033512453"></a>DataType</p> |
| @@ -115,7 +115,7 @@ | |||
| 115 | </thead> | 115 | </thead> |
| 116 | <tbody><tr id="row945854624614"><td class="cellrowborder" valign="top" width="27.839999999999996%" headers="mcps1.2.3.1.1 "><p id="p8458184610468"><a name="p8458184610468"></a><a name="p8458184610468"></a>TensorTraitType</p> | 116 | <tbody><tr id="row945854624614"><td class="cellrowborder" valign="top" width="27.839999999999996%" headers="mcps1.2.3.1.1 "><p id="p8458184610468"><a name="p8458184610468"></a><a name="p8458184610468"></a>TensorTraitType</p> |
| 117 | </td> | 117 | </td> |
| 118 | -<td class="cellrowborder" valign="top" width="72.16%" headers="mcps1.2.3.1.2 "><p id="p10458194684613"><a name="p10458194684613"></a><a name="p10458194684613"></a>只支持传入<a href="../../../辅助数据结构/TensorTrait/TensorTrait.md">TensorTrait</a>类型,TensorTrait的数据类型/逻辑位置/Shape大小需要匹配LocalMemAllocator中指定的物理位置及其剩余空间。</p> | 118 | +<td class="cellrowborder" valign="top" width="72.16%" headers="mcps1.2.3.1.2 "><p id="p10458194684613"><a name="p10458194684613"></a><a name="p10458194684613"></a>只支持传入<a href="../../辅助数据结构/TensorTrait/TensorTrait.md">TensorTrait</a>类型,TensorTrait的数据类型/逻辑位置/Shape大小需要匹配LocalMemAllocator中指定的物理位置及其剩余空间。</p> |
| 119 | </td> | 119 | </td> |
| 120 | </tr> | 120 | </tr> |
| 121 | </tbody> | 121 | </tbody> |
Rdocs/api/SIMD-API/基础API/资源管理/内存管理/LocalMemAllocator/GetCurAddr-72.md→docs/api/SIMD-API/基础API/资源管理/LocalMemAllocator/GetCurAddr-72.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/内存管理/LocalMemAllocator/LocalMemAllocator.md→docs/api/SIMD-API/基础API/资源管理/LocalMemAllocator/LocalMemAllocator.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/内存管理/LocalMemAllocator/LocalMemAllocator构造函数.md→docs/api/SIMD-API/基础API/资源管理/LocalMemAllocator/LocalMemAllocator构造函数.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/内存管理/LocalMemAllocator/LocalMemAllocator简介.md→docs/api/SIMD-API/基础API/资源管理/LocalMemAllocator/LocalMemAllocator简介.md+1-1
| @@ -1,6 +1,6 @@ | |||
| 1 | # LocalMemAllocator简介<a name="ZH-CN_TOPIC_0000002337856509"></a> | 1 | # LocalMemAllocator简介<a name="ZH-CN_TOPIC_0000002337856509"></a> |
| 2 | 2 | ||
| 3 | -LocalMemAllocator是在使用[静态Tensor编程](../../../../../../guide/编程指南/编程模型/AI-Core-SIMD编程/基于Tensor的CPP编程/静态Tensor编程.md)时用于内存管理的类,用户无需构建TPipe/TQue,而是直接创建LocalTensor对象(也可以直接通过[LocalTensor构造函数](../../../数据结构/LocalTensor/LocalTensor构造函数.md)进行构造)并开发算子,从而减少运行时的开销,实现更优的性能。 | 3 | +LocalMemAllocator是在使用[静态Tensor编程](../../../../../guide/编程指南/编程模型/AI-Core-SIMD编程/基于Tensor的CPP编程/静态Tensor编程.md)时用于内存管理的类,用户无需构建TPipe/TQue,而是直接创建LocalTensor对象(也可以直接通过[LocalTensor构造函数](../../数据结构/LocalTensor/LocalTensor构造函数.md)进行构造)并开发算子,从而减少运行时的开销,实现更优的性能。 |
| 4 | 4 | ||
| 5 | LocalMemAllocator仅支持在Ascend C静态Tensor编程方式中使用,不可以与TPipe等接口混用。 | 5 | LocalMemAllocator仅支持在Ascend C静态Tensor编程方式中使用,不可以与TPipe等接口混用。 |
| 6 | 6 | ||
| @@ -1,18 +0,0 @@ | |||
| 1 | -# Pipe和Que框架<a name="ZH-CN_TOPIC_0000002480352776"></a> | ||
| 2 | - | ||
| 3 | -- **[TPipe](TPipe/TPipe.md)** | ||
| 4 | - | ||
| 5 | -- **[GetTPipePtr](GetTPipePtr.md)** | ||
| 6 | - | ||
| 7 | -- **[TBufPool](TBufPool/TBufPool.md)** | ||
| 8 | - | ||
| 9 | -- **[自定义TBufPool](自定义TBufPool/自定义TBufPool.md)** | ||
| 10 | - | ||
| 11 | -- **[TQue](TQue/TQue.md)** | ||
| 12 | - | ||
| 13 | -- **[TSCM](TSCM/TSCM.md)** | ||
| 14 | - | ||
| 15 | -- **[TQueBind](TQueBind/TQueBind.md)** | ||
| 16 | - | ||
| 17 | -- **[TBuf](TBuf/TBuf.md)** | ||
| 18 | - | ||
Rdocs/api/SIMD-API/基础API/资源管理/临时空间管理/PopStackBuffer.md→docs/api/SIMD-API/基础API/资源管理/PopStackBuffer.md+1-1
| @@ -54,7 +54,7 @@ __aicore__ inline bool PopStackBuffer(LocalTensor<T>& popLocal) | |||
| 54 | </tr> | 54 | </tr> |
| 55 | <tr id="row860118831216"><td class="cellrowborder" valign="top" width="20.61%" headers="mcps1.2.3.1.1 "><p id="p1860214819121"><a name="p1860214819121"></a><a name="p1860214819121"></a>pos</p> | 55 | <tr id="row860118831216"><td class="cellrowborder" valign="top" width="20.61%" headers="mcps1.2.3.1.1 "><p id="p1860214819121"><a name="p1860214819121"></a><a name="p1860214819121"></a>pos</p> |
| 56 | </td> | 56 | </td> |
| 57 | -<td class="cellrowborder" valign="top" width="79.39%" headers="mcps1.2.3.1.2 "><p id="p20602138111212"><a name="p20602138111212"></a><a name="p20602138111212"></a>需要申请临时空间的position,数据类型为<a href="../../辅助数据结构/TPosition.md">TPosition</a>。</p> | 57 | +<td class="cellrowborder" valign="top" width="79.39%" headers="mcps1.2.3.1.2 "><p id="p20602138111212"><a name="p20602138111212"></a><a name="p20602138111212"></a>需要申请临时空间的position,数据类型为<a href="../辅助数据结构/TPosition.md">TPosition</a>。</p> |
| 58 | </td> | 58 | </td> |
| 59 | </tr> | 59 | </tr> |
| 60 | </tbody> | 60 | </tbody> |
| @@ -91,7 +91,7 @@ len的数值是Tensor中元素的个数,len\*sizeof\(T\)不能超过TBuf初始 | |||
| 91 | 91 | ||
| 92 | ## 返回值说明<a name="section640mcpsimp"></a> | 92 | ## 返回值说明<a name="section640mcpsimp"></a> |
| 93 | 93 | ||
| 94 | -获取到的[LocalTensor](../../../数据结构/LocalTensor/LocalTensor.md)。 | 94 | +获取到的[LocalTensor](../../数据结构/LocalTensor/LocalTensor.md)。 |
| 95 | 95 | ||
| 96 | ## 调用示例<a name="section5725818154718"></a> | 96 | ## 调用示例<a name="section5725818154718"></a> |
| 97 | 97 | ||
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TBuf/GetWithOffset.md→docs/api/SIMD-API/基础API/资源管理/TBuf/GetWithOffset.md+1-1
| @@ -91,7 +91,7 @@ bufOffset需满足32字节对齐的要求。 | |||
| 91 | 91 | ||
| 92 | ## 返回值说明<a name="section640mcpsimp"></a> | 92 | ## 返回值说明<a name="section640mcpsimp"></a> |
| 93 | 93 | ||
| 94 | -获取到的[LocalTensor](../../../数据结构/LocalTensor/LocalTensor.md)。 | 94 | +获取到的[LocalTensor](../../数据结构/LocalTensor/LocalTensor.md)。 |
| 95 | 95 | ||
| 96 | ## 调用示例<a name="section5725818154718"></a> | 96 | ## 调用示例<a name="section5725818154718"></a> |
| 97 | 97 | ||
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TBuf/TBuf构造函数.md→docs/api/SIMD-API/基础API/资源管理/TBuf/TBuf构造函数.md+1-1
| @@ -49,7 +49,7 @@ __aicore__ inline TBuf(); | |||
| 49 | </thead> | 49 | </thead> |
| 50 | <tbody><tr id="row16731173415179"><td class="cellrowborder" valign="top" width="14.760000000000002%" headers="mcps1.2.3.1.1 "><p id="p185019592913"><a name="p185019592913"></a><a name="p185019592913"></a>pos</p> | 50 | <tbody><tr id="row16731173415179"><td class="cellrowborder" valign="top" width="14.760000000000002%" headers="mcps1.2.3.1.1 "><p id="p185019592913"><a name="p185019592913"></a><a name="p185019592913"></a>pos</p> |
| 51 | </td> | 51 | </td> |
| 52 | -<td class="cellrowborder" valign="top" width="85.24000000000001%" headers="mcps1.2.3.1.2 "><p id="p35011591693"><a name="p35011591693"></a><a name="p35011591693"></a>TBuf所在的逻辑位置,支持的TPosition可以为VECIN、VECOUT、A1、A2、B1、B2、CO1、CO2。<span>关于TPosition的具体介绍请参考</span><a href="../../../辅助数据结构/TPosition.md">TPosition</a>。</p> | 52 | +<td class="cellrowborder" valign="top" width="85.24000000000001%" headers="mcps1.2.3.1.2 "><p id="p35011591693"><a name="p35011591693"></a><a name="p35011591693"></a>TBuf所在的逻辑位置,支持的TPosition可以为VECIN、VECOUT、A1、A2、B1、B2、CO1、CO2。<span>关于TPosition的具体介绍请参考</span><a href="../../辅助数据结构/TPosition.md">TPosition</a>。</p> |
| 53 | </td> | 53 | </td> |
| 54 | </tr> | 54 | </tr> |
| 55 | </tbody> | 55 | </tbody> |
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TBuf/TBuf简介.md→docs/api/SIMD-API/基础API/资源管理/TBuf/TBuf简介.md+2-2
| @@ -1,10 +1,10 @@ | |||
| 1 | # TBuf简介<a name="ZH-CN_TOPIC_0000001645413417"></a> | 1 | # TBuf简介<a name="ZH-CN_TOPIC_0000001645413417"></a> |
| 2 | 2 | ||
| 3 | -使用Ascend C编程的过程中,可能会用到一些临时变量。这些临时变量占用的内存可以使用TBuf数据结构来管理,存储位置通过模板参数来设置,可以设置为不同的[TPosition](../../../辅助数据结构/TPosition.md)逻辑位置。 | 3 | +使用Ascend C编程的过程中,可能会用到一些临时变量。这些临时变量占用的内存可以使用TBuf数据结构来管理,存储位置通过模板参数来设置,可以设置为不同的[TPosition](../../辅助数据结构/TPosition.md)逻辑位置。 |
| 4 | 4 | ||
| 5 | TBuf继承自TQueBind父类,继承关系如下: | 5 | TBuf继承自TQueBind父类,继承关系如下: |
| 6 | 6 | ||
| 7 | - | 7 | + |
| 8 | 8 | ||
| 9 | TBuf占用的存储空间通过TPipe进行管理,您可以通过[InitBuffer](../TPipe/InitBuffer.md)接口为TBuf进行内存初始化操作,之后即可通过[Get](Get.md)获取指定长度的Tensor参与计算。 | 9 | TBuf占用的存储空间通过TPipe进行管理,您可以通过[InitBuffer](../TPipe/InitBuffer.md)接口为TBuf进行内存初始化操作,之后即可通过[Get](Get.md)获取指定长度的Tensor参与计算。 |
| 10 | 10 | ||
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TBufPool/InitBufPool-55.md→docs/api/SIMD-API/基础API/资源管理/TBufPool/InitBufPool-55.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TBufPool/InitBuffer-56.md→docs/api/SIMD-API/基础API/资源管理/TBufPool/InitBuffer-56.md+1-1
| @@ -54,7 +54,7 @@ template <TPosition pos> __aicore__ inline bool InitBuffer(TBuf<pos>& buf, uint3 | |||
| 54 | </tr> | 54 | </tr> |
| 55 | <tr id="row758993611212"><td class="cellrowborder" valign="top" width="12.139999999999999%" headers="mcps1.2.3.1.1 "><p id="p12692424332"><a name="p12692424332"></a><a name="p12692424332"></a>pos</p> | 55 | <tr id="row758993611212"><td class="cellrowborder" valign="top" width="12.139999999999999%" headers="mcps1.2.3.1.1 "><p id="p12692424332"><a name="p12692424332"></a><a name="p12692424332"></a>pos</p> |
| 56 | </td> | 56 | </td> |
| 57 | -<td class="cellrowborder" valign="top" width="87.86%" headers="mcps1.2.3.1.2 "><p id="p35011591693"><a name="p35011591693"></a><a name="p35011591693"></a>Buffer逻辑位置,可以为<span>VECIN、VECOUT、</span>VECCALC、A1<span>、</span>B1、C1。<span>关于TPosition的具体介绍请参考</span><a href="../../../辅助数据结构/TPosition.md">TPosition</a>。</p> | 57 | +<td class="cellrowborder" valign="top" width="87.86%" headers="mcps1.2.3.1.2 "><p id="p35011591693"><a name="p35011591693"></a><a name="p35011591693"></a>Buffer逻辑位置,可以为<span>VECIN、VECOUT、</span>VECCALC、A1<span>、</span>B1、C1。<span>关于TPosition的具体介绍请参考</span><a href="../../辅助数据结构/TPosition.md">TPosition</a>。</p> |
| 58 | </td> | 58 | </td> |
| 59 | </tr> | 59 | </tr> |
| 60 | </tbody> | 60 | </tbody> |
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TBufPool/Reset-57.md→docs/api/SIMD-API/基础API/资源管理/TBufPool/Reset-57.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TBufPool/TBufPool.md→docs/api/SIMD-API/基础API/资源管理/TBufPool/TBufPool.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TBufPool/TBufPool构造函数.md→docs/api/SIMD-API/基础API/资源管理/TBufPool/TBufPool构造函数.md+1-1
| @@ -24,7 +24,7 @@ __aicore__ inline TBufPool(); | |||
| 24 | </thead> | 24 | </thead> |
| 25 | <tbody><tr id="row1550117591914"><td class="cellrowborder" valign="top" width="14.099999999999998%" headers="mcps1.2.3.1.1 "><p id="p185019592913"><a name="p185019592913"></a><a name="p185019592913"></a>pos</p> | 25 | <tbody><tr id="row1550117591914"><td class="cellrowborder" valign="top" width="14.099999999999998%" headers="mcps1.2.3.1.1 "><p id="p185019592913"><a name="p185019592913"></a><a name="p185019592913"></a>pos</p> |
| 26 | </td> | 26 | </td> |
| 27 | -<td class="cellrowborder" valign="top" width="85.9%" headers="mcps1.2.3.1.2 "><p id="p35011591693"><a name="p35011591693"></a><a name="p35011591693"></a>TBufPool逻辑位置,可以为<span>VECIN、VECOUT、</span>VECCALC、A1<span>、</span>B1、C1。<span>关于TPosition的具体介绍请参考</span><a href="../../../辅助数据结构/TPosition.md">TPosition</a>。</p> | 27 | +<td class="cellrowborder" valign="top" width="85.9%" headers="mcps1.2.3.1.2 "><p id="p35011591693"><a name="p35011591693"></a><a name="p35011591693"></a>TBufPool逻辑位置,可以为<span>VECIN、VECOUT、</span>VECCALC、A1<span>、</span>B1、C1。<span>关于TPosition的具体介绍请参考</span><a href="../../辅助数据结构/TPosition.md">TPosition</a>。</p> |
| 28 | </td> | 28 | </td> |
| 29 | </tr> | 29 | </tr> |
| 30 | <tr id="row12501859799"><td class="cellrowborder" valign="top" width="14.099999999999998%" headers="mcps1.2.3.1.1 "><p id="p1650113599915"><a name="p1650113599915"></a><a name="p1650113599915"></a>bufIDSize</p> | 30 | <tr id="row12501859799"><td class="cellrowborder" valign="top" width="14.099999999999998%" headers="mcps1.2.3.1.1 "><p id="p1650113599915"><a name="p1650113599915"></a><a name="p1650113599915"></a>bufIDSize</p> |
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TBufPool/TBufPool简介.md→docs/api/SIMD-API/基础API/资源管理/TBufPool/TBufPool简介.md+1-1
| @@ -12,7 +12,7 @@ TPipe可以管理全局内存资源,而TBufPool可以手动管理或复用Unif | |||
| 12 | 4. 通过TBufPool::[InitBuffer](InitBuffer-56.md)及TBufPool::[InitBufPool](InitBufPool-55.md)接口继续将BufPool1及BufPool3划分成Buffer或TBufPool资源池。 | 12 | 4. 通过TBufPool::[InitBuffer](InitBuffer-56.md)及TBufPool::[InitBufPool](InitBufPool-55.md)接口继续将BufPool1及BufPool3划分成Buffer或TBufPool资源池。 |
| 13 | 13 | ||
| 14 | **图1** BufPool资源池划分<a name="fig14900125316552"></a> | 14 | **图1** BufPool资源池划分<a name="fig14900125316552"></a> |
| 15 | - | 15 | + |
| 16 | 16 | ||
| 17 | 如图示的嵌套关系,最外层TBufPool\(BufPool1与BufPool3\)需要通过TPipe::InitBufPool申请并初始化,内层TBufPool\(BufPool2\)可以通过TBufPool::InitBufPool申请并初始化。 | 17 | 如图示的嵌套关系,最外层TBufPool\(BufPool1与BufPool3\)需要通过TPipe::InitBufPool申请并初始化,内层TBufPool\(BufPool2\)可以通过TBufPool::InitBufPool申请并初始化。 |
| 18 | 18 | ||
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/AllocEventID.md→docs/api/SIMD-API/基础API/资源管理/TPipe/AllocEventID.md+1-1
| @@ -49,7 +49,7 @@ __aicore__ inline TEventID AllocEventID() | |||
| 49 | </thead> | 49 | </thead> |
| 50 | <tbody><tr id="row11660173845017"><td class="cellrowborder" valign="top" width="16.29%" headers="mcps1.2.3.1.1 "><p id="p4571114971214"><a name="p4571114971214"></a><a name="p4571114971214"></a>evt</p> | 50 | <tbody><tr id="row11660173845017"><td class="cellrowborder" valign="top" width="16.29%" headers="mcps1.2.3.1.1 "><p id="p4571114971214"><a name="p4571114971214"></a><a name="p4571114971214"></a>evt</p> |
| 51 | </td> | 51 | </td> |
| 52 | -<td class="cellrowborder" valign="top" width="83.71%" headers="mcps1.2.3.1.2 "><p id="p15571184910124"><a name="p15571184910124"></a><a name="p15571184910124"></a>HardEvent硬件同步类型。该类型的具体说明请参考<a href="../../../同步控制/核内同步/SetFlag_WaitFlag_ISASI.md">SetFlag/WaitFlag(ISASI)</a>中同步类型的说明。</p> | 52 | +<td class="cellrowborder" valign="top" width="83.71%" headers="mcps1.2.3.1.2 "><p id="p15571184910124"><a name="p15571184910124"></a><a name="p15571184910124"></a>HardEvent硬件同步类型。该类型的具体说明请参考<a href="../../同步控制/核内同步/SetFlag_WaitFlag_ISASI.md">SetFlag/WaitFlag(ISASI)</a>中同步类型的说明。</p> |
| 53 | </td> | 53 | </td> |
| 54 | </tr> | 54 | </tr> |
| 55 | </tbody> | 55 | </tbody> |
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/Destroy.md→docs/api/SIMD-API/基础API/资源管理/TPipe/Destroy.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/DestroyWithoutPipeAll.md→docs/api/SIMD-API/基础API/资源管理/TPipe/DestroyWithoutPipeAll.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/FetchEventID.md→docs/api/SIMD-API/基础API/资源管理/TPipe/FetchEventID.md+1-1
| @@ -53,7 +53,7 @@ __aicore__ inline TEventID FetchEventID(HardEvent evt) | |||
| 53 | <td class="cellrowborder" valign="top" width="12.379999999999999%" headers="mcps1.1.4.1.2 "><p id="p9331531865"><a name="p9331531865"></a><a name="p9331531865"></a>输入</p> | 53 | <td class="cellrowborder" valign="top" width="12.379999999999999%" headers="mcps1.1.4.1.2 "><p id="p9331531865"><a name="p9331531865"></a><a name="p9331531865"></a>输入</p> |
| 54 | </td> | 54 | </td> |
| 55 | <td class="cellrowborder" valign="top" width="75.26%" headers="mcps1.1.4.1.3 "><p id="p143308311967"><a name="p143308311967"></a><a name="p143308311967"></a>HardEvent类型,硬件同步类型。</p> | 55 | <td class="cellrowborder" valign="top" width="75.26%" headers="mcps1.1.4.1.3 "><p id="p143308311967"><a name="p143308311967"></a><a name="p143308311967"></a>HardEvent类型,硬件同步类型。</p> |
| 56 | -<p id="p15571184910124"><a name="p15571184910124"></a><a name="p15571184910124"></a>该类型的具体说明请参考<a href="../../../同步控制/核内同步/SetFlag_WaitFlag_ISASI.md">SetFlag/WaitFlag(ISASI)</a>中同步类型的说明。</p> | 56 | +<p id="p15571184910124"><a name="p15571184910124"></a><a name="p15571184910124"></a>该类型的具体说明请参考<a href="../../同步控制/核内同步/SetFlag_WaitFlag_ISASI.md">SetFlag/WaitFlag(ISASI)</a>中同步类型的说明。</p> |
| 57 | </td> | 57 | </td> |
| 58 | </tr> | 58 | </tr> |
| 59 | </tbody> | 59 | </tbody> |
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/GetBaseAddr.md→docs/api/SIMD-API/基础API/资源管理/TPipe/GetBaseAddr.md+1-1
| @@ -50,7 +50,7 @@ inline uint8_t* GetBaseAddr(int8_t logicPos) | |||
| 50 | </td> | 50 | </td> |
| 51 | <td class="cellrowborder" valign="top" width="12.379999999999999%" headers="mcps1.1.4.1.2 "><p id="p9331531865"><a name="p9331531865"></a><a name="p9331531865"></a>输入</p> | 51 | <td class="cellrowborder" valign="top" width="12.379999999999999%" headers="mcps1.1.4.1.2 "><p id="p9331531865"><a name="p9331531865"></a><a name="p9331531865"></a>输入</p> |
| 52 | </td> | 52 | </td> |
| 53 | -<td class="cellrowborder" valign="top" width="75.26%" headers="mcps1.1.4.1.3 "><p id="p143308311967"><a name="p143308311967"></a><a name="p143308311967"></a>逻辑位置类型。该类型具体说明请参考<a href="../../../辅助数据结构/TPosition.md">TPosition</a>。</p> | 53 | +<td class="cellrowborder" valign="top" width="75.26%" headers="mcps1.1.4.1.3 "><p id="p143308311967"><a name="p143308311967"></a><a name="p143308311967"></a>逻辑位置类型。该类型具体说明请参考<a href="../../辅助数据结构/TPosition.md">TPosition</a>。</p> |
| 54 | </td> | 54 | </td> |
| 55 | </tr> | 55 | </tr> |
| 56 | </tbody> | 56 | </tbody> |
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/Init.md→docs/api/SIMD-API/基础API/资源管理/TPipe/Init.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/InitBufPool.md→docs/api/SIMD-API/基础API/资源管理/TPipe/InitBufPool.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/InitBuffer.md→docs/api/SIMD-API/基础API/资源管理/TPipe/InitBuffer.md+1-1
| @@ -181,7 +181,7 @@ | |||
| 181 | </thead> | 181 | </thead> |
| 182 | <tbody><tr id="row167376215416"><td class="cellrowborder" valign="top" width="12.34%" headers="mcps1.2.3.1.1 "><p id="p14568152324113"><a name="p14568152324113"></a><a name="p14568152324113"></a>bufPos</p> | 182 | <tbody><tr id="row167376215416"><td class="cellrowborder" valign="top" width="12.34%" headers="mcps1.2.3.1.1 "><p id="p14568152324113"><a name="p14568152324113"></a><a name="p14568152324113"></a>bufPos</p> |
| 183 | </td> | 183 | </td> |
| 184 | -<td class="cellrowborder" valign="top" width="87.66000000000001%" headers="mcps1.2.3.1.2 "><p id="p188271137124113"><a name="p188271137124113"></a><a name="p188271137124113"></a>TBuf所在的逻辑位置,<a href="../../../辅助数据结构/TPosition.md">TPosition</a>类型。</p> | 184 | +<td class="cellrowborder" valign="top" width="87.66000000000001%" headers="mcps1.2.3.1.2 "><p id="p188271137124113"><a name="p188271137124113"></a><a name="p188271137124113"></a>TBuf所在的逻辑位置,<a href="../../辅助数据结构/TPosition.md">TPosition</a>类型。</p> |
| 185 | </td> | 185 | </td> |
| 186 | </tr> | 186 | </tr> |
| 187 | </tbody> | 187 | </tbody> |
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/InitSpmBuffer.md→docs/api/SIMD-API/基础API/资源管理/TPipe/InitSpmBuffer.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/ReadSpmBuffer.md→docs/api/SIMD-API/基础API/资源管理/TPipe/ReadSpmBuffer.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/ReleaseEventID.md→docs/api/SIMD-API/基础API/资源管理/TPipe/ReleaseEventID.md+1-1
| @@ -49,7 +49,7 @@ __aicore__ inline void ReleaseEventID(TEventID id) | |||
| 49 | </thead> | 49 | </thead> |
| 50 | <tbody><tr id="row18991634144619"><td class="cellrowborder" valign="top" width="12.23%" headers="mcps1.2.3.1.1 "><p id="p118996346463"><a name="p118996346463"></a><a name="p118996346463"></a>evt</p> | 50 | <tbody><tr id="row18991634144619"><td class="cellrowborder" valign="top" width="12.23%" headers="mcps1.2.3.1.1 "><p id="p118996346463"><a name="p118996346463"></a><a name="p118996346463"></a>evt</p> |
| 51 | </td> | 51 | </td> |
| 52 | -<td class="cellrowborder" valign="top" width="87.77000000000001%" headers="mcps1.2.3.1.2 "><p id="p1389943411468"><a name="p1389943411468"></a><a name="p1389943411468"></a>HardEvent硬件同步类型。该类型的具体说明请参考<a href="../../../同步控制/核内同步/SetFlag_WaitFlag_ISASI.md">SetFlag/WaitFlag(ISASI)</a>中同步类型的说明。</p> | 52 | +<td class="cellrowborder" valign="top" width="87.77000000000001%" headers="mcps1.2.3.1.2 "><p id="p1389943411468"><a name="p1389943411468"></a><a name="p1389943411468"></a>HardEvent硬件同步类型。该类型的具体说明请参考<a href="../../同步控制/核内同步/SetFlag_WaitFlag_ISASI.md">SetFlag/WaitFlag(ISASI)</a>中同步类型的说明。</p> |
| 53 | </td> | 53 | </td> |
| 54 | </tr> | 54 | </tr> |
| 55 | </tbody> | 55 | </tbody> |
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/Reset.md→docs/api/SIMD-API/基础API/资源管理/TPipe/Reset.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/TPipe.md→docs/api/SIMD-API/基础API/资源管理/TPipe/TPipe.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/TPipe构造函数.md→docs/api/SIMD-API/基础API/资源管理/TPipe/TPipe构造函数.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/TPipe简介.md→docs/api/SIMD-API/基础API/资源管理/TPipe/TPipe简介.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TPipe/WriteSpmBuffer.md→docs/api/SIMD-API/基础API/资源管理/TPipe/WriteSpmBuffer.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/AllocTensor.md→docs/api/SIMD-API/基础API/资源管理/TQue/AllocTensor.md+1-1
| @@ -79,7 +79,7 @@ | |||
| 79 | </td> | 79 | </td> |
| 80 | <td class="cellrowborder" valign="top" width="12.591259125912593%" headers="mcps1.2.4.1.2 "><p id="p1653714592515"><a name="p1653714592515"></a><a name="p1653714592515"></a>输入</p> | 80 | <td class="cellrowborder" valign="top" width="12.591259125912593%" headers="mcps1.2.4.1.2 "><p id="p1653714592515"><a name="p1653714592515"></a><a name="p1653714592515"></a>输入</p> |
| 81 | </td> | 81 | </td> |
| 82 | -<td class="cellrowborder" valign="top" width="74.93749374937492%" headers="mcps1.2.4.1.3 "><p id="p165371945142512"><a name="p165371945142512"></a><a name="p165371945142512"></a>inplace接口需要传入<a href="../../../数据结构/LocalTensor/LocalTensor.md">LocalTensor</a>作为内存管理的对象。</p> | 82 | +<td class="cellrowborder" valign="top" width="74.93749374937492%" headers="mcps1.2.4.1.3 "><p id="p165371945142512"><a name="p165371945142512"></a><a name="p165371945142512"></a>inplace接口需要传入<a href="../../数据结构/LocalTensor/LocalTensor.md">LocalTensor</a>作为内存管理的对象。</p> |
| 83 | </td> | 83 | </td> |
| 84 | </tr> | 84 | </tr> |
| 85 | </tbody> | 85 | </tbody> |
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/DeQue.md→docs/api/SIMD-API/基础API/资源管理/TQue/DeQue.md+1-1
| @@ -112,7 +112,7 @@ | |||
| 112 | 112 | ||
| 113 | ## 返回值说明<a name="section640mcpsimp"></a> | 113 | ## 返回值说明<a name="section640mcpsimp"></a> |
| 114 | 114 | ||
| 115 | -non-inplace接口和指定源和目的位置的接口返回值为从队列中取出的[LocalTensor](../../../数据结构/LocalTensor/LocalTensor.md);inplace接口没有返回值。 | 115 | +non-inplace接口和指定源和目的位置的接口返回值为从队列中取出的[LocalTensor](../../数据结构/LocalTensor/LocalTensor.md);inplace接口没有返回值。 |
| 116 | 116 | ||
| 117 | ## 调用示例<a name="section642mcpsimp"></a> | 117 | ## 调用示例<a name="section642mcpsimp"></a> |
| 118 | 118 | ||
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/EnQue.md→docs/api/SIMD-API/基础API/资源管理/TQue/EnQue.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/FreeTensor.md→docs/api/SIMD-API/基础API/资源管理/TQue/FreeTensor.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/GetTensorCountInQue.md→docs/api/SIMD-API/基础API/资源管理/TQue/GetTensorCountInQue.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/HasIdleBuffer.md→docs/api/SIMD-API/基础API/资源管理/TQue/HasIdleBuffer.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/HasTensorInQue.md→docs/api/SIMD-API/基础API/资源管理/TQue/HasTensorInQue.md+0-0
File renamed without changes.
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/TQue简介.md→docs/api/SIMD-API/基础API/资源管理/TQue/TQue简介.md+1-1
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQue/VacantInQue.md→docs/api/SIMD-API/基础API/资源管理/TQue/VacantInQue.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/AllocTensor-64.md→docs/api/SIMD-API/基础API/资源管理/TQueBind/AllocTensor-64.md+1-1
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/DeQue-67.md→docs/api/SIMD-API/基础API/资源管理/TQueBind/DeQue-67.md+1-1
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/EnQue-66.md→docs/api/SIMD-API/基础API/资源管理/TQueBind/EnQue-66.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/FreeAllEvent.md→docs/api/SIMD-API/基础API/资源管理/TQueBind/FreeAllEvent.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/FreeTensor-65.md→docs/api/SIMD-API/基础API/资源管理/TQueBind/FreeTensor-65.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/GetTensorCountInQue-70.md→docs/api/SIMD-API/基础API/资源管理/TQueBind/GetTensorCountInQue-70.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/HasIdleBuffer-71.md→docs/api/SIMD-API/基础API/资源管理/TQueBind/HasIdleBuffer-71.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/HasTensorInQue-69.md→docs/api/SIMD-API/基础API/资源管理/TQueBind/HasTensorInQue-69.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/InitBufHandle.md→docs/api/SIMD-API/基础API/资源管理/TQueBind/InitBufHandle.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/InitStartBufHandle.md→docs/api/SIMD-API/基础API/资源管理/TQueBind/InitStartBufHandle.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/TQueBind.md→docs/api/SIMD-API/基础API/资源管理/TQueBind/TQueBind.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/TQueBind构造函数.md→docs/api/SIMD-API/基础API/资源管理/TQueBind/TQueBind构造函数.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/TQueBind简介.md→docs/api/SIMD-API/基础API/资源管理/TQueBind/TQueBind简介.md+1-1
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TQueBind/VacantInQue-68.md→docs/api/SIMD-API/基础API/资源管理/TQueBind/VacantInQue-68.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TSCM/AllocTensor-60.md→docs/api/SIMD-API/基础API/资源管理/TSCM/AllocTensor-60.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TSCM/DeQue-63.md→docs/api/SIMD-API/基础API/资源管理/TSCM/DeQue-63.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TSCM/EnQue-62.md→docs/api/SIMD-API/基础API/资源管理/TSCM/EnQue-62.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TSCM/FreeTensor-61.md→docs/api/SIMD-API/基础API/资源管理/TSCM/FreeTensor-61.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/TSCM/TSCM简介.md→docs/api/SIMD-API/基础API/资源管理/TSCM/TSCM简介.md+1-1
Rdocs/api/SIMD-API/基础API/资源管理/临时空间管理/workspace/GetSysWorkSpacePtr.md→docs/api/SIMD-API/基础API/资源管理/workspace/GetSysWorkSpacePtr.md+1-1
Rdocs/api/SIMD-API/基础API/资源管理/临时空间管理/workspace/GetUserWorkspace.md→docs/api/SIMD-API/基础API/资源管理/workspace/GetUserWorkspace.md+1-1
Rdocs/api/SIMD-API/基础API/资源管理/临时空间管理/workspace/SetSysWorkSpace.md→docs/api/SIMD-API/基础API/资源管理/workspace/SetSysWorkSpace.md+1-1
Rdocs/api/SIMD-API/基础API/资源管理/临时空间管理/workspace/workspace1.md→docs/api/SIMD-API/基础API/资源管理/workspace/workspace1.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/EXTERN_IMPL_BUFPOOL宏.md→docs/api/SIMD-API/基础API/资源管理/自定义TBufPool/EXTERN_IMPL_BUFPOOL宏.md+1-1
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/GetBufHandle.md→docs/api/SIMD-API/基础API/资源管理/自定义TBufPool/GetBufHandle.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/GetCurAddr.md→docs/api/SIMD-API/基础API/资源管理/自定义TBufPool/GetCurAddr.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/GetCurBufSize.md→docs/api/SIMD-API/基础API/资源管理/自定义TBufPool/GetCurBufSize.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/Init-59.md→docs/api/SIMD-API/基础API/资源管理/自定义TBufPool/Init-59.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/Reset-58.md→docs/api/SIMD-API/基础API/资源管理/自定义TBufPool/Reset-58.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/SetCurAddr.md→docs/api/SIMD-API/基础API/资源管理/自定义TBufPool/SetCurAddr.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/SetCurBufSize.md→docs/api/SIMD-API/基础API/资源管理/自定义TBufPool/SetCurBufSize.md+0-0
Rdocs/api/SIMD-API/基础API/资源管理/Pipe和Que框架/自定义TBufPool/自定义TBufPool.md→docs/api/SIMD-API/基础API/资源管理/自定义TBufPool/自定义TBufPool.md+0-0
This file has too many line changes or character changes, you can directly View source code
🟡 Medium Priority
TQueSync/子目录在本 diff 中被移除,TQueSync/SetFlag-WaitFlag.md被重命名为SetFlag-WaitFlag.md。但第 33 行的引用[TQueSync SetFlag/WaitFlag](TQueSync/SetFlag-WaitFlag.md)未随路径变更而更新,导致该链接指向不存在的文件,用户点击后将遇到 404。注意:虽然本文件在本 diff 中被修改(第 69 行的 AllocEventID 路径已更新),但第 33 行的
TQueSync/引用被遗漏了。建议:将
TQueSync/SetFlag-WaitFlag.md更新为SetFlag-WaitFlag.md,因为该文件已从TQueSync/子目录移至父目录。