LocalTensor上如何获取这一矢量片段中元素的最大值
收藏回复举报
LocalTensor上如何获取这一矢量片段中元素的最大值
t('forum.solved') 已解决
发表于2023-11-03 00:09:27
0 查看

1、如何求LocalTensor<half> zLocal这一片段中元素的最大值?

我需要计算LocalTensor矢量中元素的最大值。现在我有Local memory上面的三个变量,xLocal、yLocal、zLocal。其中xLocal和yLocal都从队列中获取数据。Ascend c文档中有3级接口可以直接使用zLocal=xLocal+yLocal,但是没有求LocalTensor片段的最大值,只有矢量双目运行指令Max(Local1, Local2)可以对两个Local Tensor片段按照对应位置的元素求最大值,和标量双目运算Maxs(Local0, scalar0):源操作数矢量Local0内每个element与标量scalar相比,如果比标量大则取源操作数值,比标量的值小则取标量值。

我的需求代码如下:

// 假设前面做好了初始化与数据搬运工作,从这一步开始做z=x+y的运算步骤,如下

LocalTensor<half> xLocal = inQueueX.DeQue<half>();  

LocalTensor<half> yLocal = inQueueY.DeQue<half>();  

LocalTensor<half> zLocal = outQueueZ.AllocTensor<half>(); 

zLocal=xLocal+yLocal; 

// 这里我需要对zLocal进行处理,计算zLocal这个片段中元素的最大值 

// 然后对zLocal中每一个元素减去这个最大值

// 最后输出zLocal,如下 

outQueueZ.EnQue<half>(zLocal);  

inQueueX.FreeTensor(xLocal);  

inQueueY.FreeTensor(yLocal); 

我要发帖子