GetValue
产品支持情况
产品 |
是否支持 |
|---|---|
Atlas 350 加速卡 |
√ |
√ |
|
√ |
|
√ |
|
√ |
|
√ |
|
√ |
功能说明
获取GlobalTensor的相应偏移位置的值。
函数原型
1 | __aicore__ inline __inout_pipe__(S) PrimType GetValue(const uint64_t offset) const |
参数说明
参数名 |
输入/输出 |
描述 |
|---|---|---|
offset |
输入 |
偏移offset个元素。 |
返回值说明
返回PrimType类型的立即数。
约束说明
- 如果GetValue的Global Memory地址内容存在被外部改写的可能,需要先调用DataCacheCleanAndInvalid,确保Data Cache与Global Memory的Cache一致性,之后再调用此接口。
- 标量单元连续读取相同GM地址时,会造成Bus被长期占用,此时会影响其它核向GM该地址上写入,进而引发卡死现象。在此场景下,建议在标量读指令后插入若干空操作指令(Nop)来释放Bus,指令数量建议为800条,通常按“需同步的核数 × 200。具体示例参考ReadGmByPassDCache。
调用示例
1 2 3 4 5 6 7 8 | // 数据(GlobalTensor): [0 100 200 ... ] AscendC::GlobalTensor<uint32_t> tiling_global; tiling_global.SetGlobalBuffer(reinterpret_cast<__gm__ uint32_t *>(tiling), 16); const uint16_t C1 = (uint16_t)tiling_global.GetValue(0); const uint16_t H = (uint16_t)tiling_global(1); // 示例结果如下: // C1 = 0,H = 100 |
父主题: GlobalTensor