【2023 · CANN训练营第一季】AscendCL内存管理&数据传输
【摘要】 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)