【Atlas200】mindx接口MemoryHelper类使用(C++),对应版本3.0.0

67 篇文章 1 订阅
12 篇文章 0 订阅
MemoryHelper是华为昇腾AI处理器提供的内存管理类,用于简化内存操作,包括内存分配、释放、清零和拷贝。MxbsMalloc分配内存,MxbsFree释放内存,MxbsMemset用于清零内存,MxbsMemcpy则实现内存间的数据复制。MemoryHelper支持主机内存、设备内存等多种类型的操作。
摘要由CSDN通过智能技术生成

MemoryHelper类介绍

MemoryHelper是华为昇腾AI处理器提供的内存管理类。它封装了内存分配、内存释放、内存拷贝等操作,提供了一系列简单易用的接口,方便用户在昇腾AI处理器上管理内存。MemoryHelper支持昇腾处理器内存、主机内存、共享内存等多种类型的内存,并提供了相应的内存分配和释放接口。此外,MemoryHelper还提供了多种内存拷贝接口,支持主机内存与昇腾处理器内存之间的数据传输。在使用昇腾AI处理器进行深度学习加速时,MemoryHelper类可以帮助用户简化内存管理操作,提高开发效率。

MxbsMalloc及MxbsFree

//0表示设备ID
// 分配1000个字节的主机内存
MemoryData memoryData(1000, MemoryData::MEMORY_HOST, -1);
int ret = MemoryHelper::MxbsMalloc(memoryData);
if (ret != APP_ERR_OK) {
    // 主机内存分配失败
    return;
}
// 主机内存分配成功,可以使用memoryData.ptrData指向主机内存中的数据
// 使用完memoryData.ptrData后,需要释放内存
MemoryHelper::MxbsFree(memoryData);

MemoryHelper::MxbsMemset

MemoryData memoryData(1000, MemoryData::MEMORY_HOST, -1);
int ret = MemoryHelper::MxbsMalloc(memoryData);
if (ret != APP_ERR_OK) {
    // 主机内存分配失败
    return;
}
// 主机内存分配成功,可以使用memoryData.ptrData指向主机内存中的数据
// 将内存清零
ret = MemoryHelper::MxbsMemset(memoryData, 0, memoryData.size);
if (ret != APP_ERR_OK) {
    // 内存清零失败
    return;
}
// 内存清零成功
// 使用完memoryData.ptrData后,需要释放内存
MemoryHelper::MxbsFree(memoryData);

MemoryHelper::MxbsMemcpy

MemoryData srcMemoryData(1000, MemoryData::MEMORY_DEVICE, 0);
// TODO: 将数据写入srcMemoryData.ptrData中
//定义host时,device取-1
MemoryData dstMemoryData(1000, MemoryData::MEMORY_HOST, -1);
int ret = MemoryHelper::MxbsMalloc(dstMemoryData);
if (ret != APP_ERR_OK) {
    // 主机内存分配失败
    return;
}
// 将数据从昇腾处理器内存复制到主机内存,复制1000字节
ret = MemoryHelper::MxbsMemcpy(dstMemoryData, srcMemoryData,1000);
if (ret != APP_ERR_OK) {
    // 数据复制失败
    return;
}

MemoryHelper::MxbsMallocAndCopy

MemoryType::MEMORY_DVPP其实在device上。

MemoryData srcData(resizeImage.GetData().get(), resizeImage.GetDataSize(), MemoryData::MemoryType::MEMORY_DVPP,
            deviceId);
MemoryData resHostData(nullptr, resizeImage.GetDataSize(), MemoryData::MemoryType::MEMORY_HOST, -1);
//将内存赋值到host上
if (MemoryHelper::MxbsMallocAndCopy(resHostData, srcData) != APP_ERR_OK) {
            LogError << "Failed to mallloc and copy dvpp memory.";
            return APP_ERR_ACL_BAD_COPY;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颢师傅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值