【2023 · CANN训练营第一季】AscendCL内存管理&数据传输

举报
yaowuerqierer 发表于 2023/05/09 15:16:45 2023/05/09
【摘要】 AscendCL内存管理&数据传输数据传输的关键接口调用流程如下:1. 申请内存。Host上的内存,可以用C++标准库中的new、malloc接口申请内存,也可以使用AscendCL提供的aclrtMallocHost 接口申请内存。Device上的内存,使用AscendCL提供的aclrtMalloc 或aclrtMallocHost 接口申请内存。如果涉及媒体数据处理(例如,图片解码、缩...

AscendCL内存管理&数据传输

数据传输的关键接口调用流程如下:

1. 申请内存。

Host上的内存,可以用C++标准库中的new、malloc接口申请内存,也可以使用AscendCL提供的aclrtMallocHost 接口申请内存。

Device上的内存,使用AscendCL提供的aclrtMalloc aclrtMallocHost 接口申请内存。如果涉及媒体数据处理(例如,图片解码、缩放等)时,需使用acldvppMalloc hi_mpi_dvpp_malloc 接口申请内存。

2. 将数据读入内存。

由用户自行管理数据读入内存的实现逻辑。

3.

通过内存复制实现数据传输。

数据传输可以通过内存复制的方式实现,分为同步内存复制、异步内存复制:

同步内存复制:调用aclrtMemcpy 接口。

异步内存复制:调用aclrtMemcpyAsync 接口,再调用aclrtSynchronizeStream 接口实现Stream内任务的同步等待。

对于Host内的数据传输、Device内的数据传输、Host与Device之间的数据传输,可以调用内存复制的接口实现,也可以直接通过指针传递数据。



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。