pipe.InitBuffer初始化顺序导致结果不同
收藏回复举报
pipe.InitBuffer初始化顺序导致结果不同
t('forum.solved') 已解决
发表于2024-05-11 07:02:46
0 查看
  • pipe.InitBuffer初始化顺序导致结果不同
  • 只是稍微移动了顺序,导致compute结果不同,一个是可以通过,一个却不通过
  • 这个是为什么??

  • compute代码皆为
__aicore__ inline void Compute(int32_t progress) {

    LocalTensor<DTYPE_X> inLocal = inQueueIN.DeQue<DTYPE_X>();
    LocalTensor<DTYPE_X> xLocal = inLocal;

   
    LocalTensor<DTYPE_X> tempTensor1 = calcBuf1.Get<DTYPE_X>(this->tileLength);//tileLength
    LocalTensor<DTYPE_X> tempTensor2 = calcBuf2.Get<DTYPE_X>();//finalWorkLocalNeedSize
    
    LocalTensor<DTYPE_Y> calcLocal = calcQueue.AllocTensor<DTYPE_Y>();//tilenum*BUFFER_NUM
    if(this->p == 2)
    {   
        Abs(tempTensor1, xLocal, this->tileLength);

  • 第一种初始化方式如下,不能成功运行
pipe.InitBuffer(inQueueIN, BUFFER_NUM, this->tileLength * sizeof(DTYPE_X));
    pipe.InitBuffer(outQueueOUT, BUFFER_NUM, this->tileLength * sizeof(DTYPE_Y));
    

    pipe.InitBuffer(calcQueue,BUFFER_NUM, this->tileNum * BUFFER_NUM* sizeof(DTYPE_Y));
    
    pipe.InitBuffer(calcBuf1,BUFFER_NUM, this->tileLength * sizeof(DTYPE_X));//this->totalLength
    pipe.InitBuffer(calcBuf2,BUFFER_NUM, this->finalWorkLocalNeedSize * sizeof(DTYPE_X));
  • 第二种初始化如下,能够成功运行
  • 这是为什么?是因为初始化空间不足,导致有部分能够初始化,部分初始化出错吗?
pipe.InitBuffer(inQueueIN, BUFFER_NUM, this->tileLength * sizeof(DTYPE_X));
    pipe.InitBuffer(outQueueOUT, BUFFER_NUM, this->tileLength * sizeof(DTYPE_Y));
    
    pipe.InitBuffer(calcBuf1,BUFFER_NUM, this->tileLength * sizeof(DTYPE_X));//this->totalLength
    pipe.InitBuffer(calcQueue,BUFFER_NUM, this->tileNum * BUFFER_NUM* sizeof(DTYPE_Y));
    pipe.InitBuffer(calcBuf2,BUFFER_NUM, this->finalWorkLocalNeedSize * sizeof(DTYPE_X));

我要发帖子