SetPadValue(ISASI)
产品支持情况
产品 |
是否支持 |
|---|---|
Atlas 350 加速卡 |
√ |
√ |
|
√ |
|
x |
|
x |
|
x |
|
x |
功能说明
设置DataCopyPad需要填充的数值。支持的通路如下:
- GM->VECIN/GM->VECOUT
函数原型
1 2 | template <typename T, TPosition pos = TPosition::MAX> __aicore__ inline void SetPadValue(T paddingValue) |
参数说明
参数名 |
输入/输出 |
描述 |
|---|---|---|
T |
输入 |
填充值的数据类型,与DataCopyPad接口搬运的数据类型一致。 |
pos |
输入 |
用于指定DataCopyPad接口搬运过程中从GM搬运数据到哪一个目的地址,目的地址通过逻辑位置来表达。默认值为TPosition::MAX,等效于TPosition::VECIN或TPosition::VECOUT。 支持的取值为:
|
参数名 |
输入/输出 |
描述 |
|---|---|---|
paddingValue |
输入 |
DataCopyPad接口填充的数值,数据与DataCopyPad接口搬运的数据类型一致。 |
返回值说明
无
约束说明
无
调用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | uint32_t m_n1 = 32; uint32_t m_n2 = 31; uint32_t m_n2Align = n2 % 32 == 0 ? n2 : (n2 / 32 + 1) * 32; AscendC::LocalTensor<float> srcLocal = m_queInSrc.AllocTensor<float>(); AscendC::DataCopyExtParams dataCopyExtParams; AscendC::DataCopyPadExtParams<float> padParams; dataCopyExtParams.blockCount = m_n1; // Block个数,拷贝的的次数 dataCopyExtParams.blockLen = m_n2 * sizeof(float); // 一次拷贝多少个32B dataCopyExtParams.srcStride = 0; dataCopyExtParams.dstStride = 0; padParams.isPad = true; padParams.leftPadding = 0; padParams.rightPadding = 1; AscendC::SetPadValue((float)37); // 设置Pad的值为37 AscendC::DataCopyPad(srcLocal, m_srcGlobal, dataCopyExtParams, padParams); |
输入数据(srcGm, shape = [32, 31]):[[1, 1, 1, ..., 1], [1, 1, 1, ..., 1], ... , [1, 1, 1, ..., 1]] 输出数据(dstGm, shape = [32, 32]):[[1, 1, 1, ..., 1, 37], [1, 1, 1, ..., 1, 37], ... , [1, 1, 1, ..., 1, 37]]
1 2 3 4 5 6 | // 对于不支持使用立即数进行赋值和初始化的数据类型,如下是一个输入类型bfloat16_t的示例: AscendC::SetPadValue(m_srcGlobal.GetValue(0)); AscendC::DataCopyPad(srcLocal, m_srcGlobal, dataCopyExtParams, padParams); 输入数据(srcGm, shape = [32, 31]):[[1, 2, 3, ..., 31], [1, 2, 3, ..., 31], ... , [1, 2, 3, ..., 31]] 输出数据(dstGm, shape = [32, 32]):[[1, 2, 3, ..., 31, 1], [1, 2, 3, ..., 31, 1], ... , [1, 2, 3, ..., 31, 1]] |
父主题: Memory数据搬运