DVPP问题汇总

1. aclrtSetDevice 使用不当导致内存泄露问题

对于Atlas 推理系列产品(Ascend 310P处理器),调用本接口会隐式创建默认Context,在标准形态下,该默认Context中包含2个Stream,1个默认Stream和1个执行内部同步的Stream。

参考网页:API参考-aclrtSetDevice

aclrtSetDevice

此接口需与aclrtResetDevice接口配套使用,以避免出现泄露。

实际使用中更建议用 Context,Context使用起来更灵活方便。

2.  acldvppChannelDesc 释放方式不当导致内存泄露问题

实际测试中发现,acldvppChannelDesc 的释放需要先切换到对应的设备,如以下:

void VpcUtils::release() {
    
    if(context_){
        aclrtSetCurrentContext(context_);
    
        if (dvppChannelDesc_) {
            (void)acldvppDestroyChannel(dvppChannelDesc_);
            (void)acldvppDestroyChannelDesc(dvppChannelDesc_);
            dvppChannelDesc_ = nullptr;
        }

        aclrtDestroyContext(context_);
    }
}

需要先做   aclrtSetCurrentContext(context_);  操作,否则会有内存泄露。

 

 

 

 

 


 

posted @ 2024-09-05 21:05  yeren2046  阅读(16)  评论(0编辑  收藏  举报