跳到主要内容

函数:memset

函数:malloc_host

C函数原型aclError aclrtMallocHost(void **hostPtr, size_t size)
Python函数host_ptr, ret= acl.rt.malloc_host(size)
函数功能应用在Host上运行时,调用该接口申请的是Host内存,由系统保证内存首地址64字节对齐。 应用在Device上运行时,调用该接口申请的是Device内存,且Device上的内存按普通页申请,如需首地址64字节对齐,需要用户自行处理对齐。同步接口。
输入说明size:int,申请内存的大小,单位Byte。size不能为0。
返回值说明host_ptr:int,指向Host上已分配内存的指针的指针地址。 ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明- 使用acl.rt.malloc_host接口申请的内存,需要通过acl.rt.free_host接口释放内存。
- 频繁调用acl.rt.malloc_host接口申请内存、调用acl.rt.free_host接口释放内存,会损耗性能,建议用户提前做内存预先分配或二次管理,避免频繁申请/释放内存。
- 若用户使用本接口申请大块内存并自行划分、管理内存时,每段内存需同时满足以下需求:
- 内存大小向上对齐成32整数倍加32字节(m = ALIGN_UP[len, 32] + 32字节)。
- 内存起始地址需满足64字节对齐(ALIGN_UP[m, 64])。(说明:len表示某段内存的大小,ALIGN_UP[len, k]表示向上按k字节对齐:((len - 1) / k + 1) * k。)
参考资源接口调用示例,参见数据传输

父主题: 内存管理

函数:free_host

C函数原型aclError aclrtFreeHost(void *hostPtr)
Python函数ret= acl.rt.free_host(host_ptr)
函数功能释放Host上的内存,同步接口。 acl.rt.free_host接口只能释放通过acl.rt.malloc_host接口申请的内存。
输入说明host_ptr:int,待释放内存的对象的指针地址。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明
参考资源接口调用示例,参见数据传输

父主题: 内存管理

函数:memset

C函数原型aclError aclrtMemset(void *devPtr, size_t maxCount, int32_t value, size_t count)
Python函数ret = acl.rt.memset(dev_ptr, max_count, value, count)
函数功能初始化内存,将内存中的内容设置为指定的值,同步接口。 要初始化的内存支持在Host侧或Device侧,系统根据地址判定是Host还是Device。
输入说明dev_ptr:int,内存的起始地址。 max_count:int,内存的最大长度,单位Byte。 value:int,设置的值。 count:int,需要设置为指定值的内存长度,单位Byte。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明

父主题: 内存管理

函数:memset_async

C函数原型aclError aclrtMemsetAsync(void *devPtr, size_t maxCount, int32_t value, size_t count, aclrtStream stream)
Python函数ret = acl.rt.memset_async(dev_ptr, max_count, value, count, stream)
函数功能初始化内存,将内存中的内容设置为指定的值,异步接口。 要初始化的内存支持在Host侧或Device侧,系统根据地址判定是Host还是Device。
输入说明dev_ptr:int,内存的起始地址。 max_count:int,内存的最大长度,单位Byte。 value:int,设置的值。 count:int,需要设置为指定值的内存长度,单位Byte。 stream:int,指定Stream的指针地址。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明该接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功。调用该接口后,必须调用acl.rt.synchronize_stream接口确保内存初始化的任务已执行完成。

父主题: 内存管理

函数:memcpy

C函数原型aclError aclrtMemcpy(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind)
Python函数ret = acl.rt.memcpy(dst, dest_max, src, count, kind)
函数功能实现Host内、Host与Device之间、Device内的同步内存复制。
输入说明dst:int,目的内存地址指针地址。 dest_max:int,目的内存地址的最大内存长度,单位Byte。 src:int,源内存地址指针地址。 count:int,内存复制的长度,单位Byte。 kind:int,内存复制的类型,配置枚举值中的值无效,系统内部会根据源内存地址的指针地址、目的内存地址的指针地址判断是否可以将源地址的数据复制到目的地址,如果不可以,则系统会返回报错。
- 0:ACL_MEMCPY_HOST_TO_HOST,Host内的内存复制
- 1:ACL_MEMCPY_HOST_TO_DEVICE,Host到Device的内存复制
- 2:ACL_MEMCPY_DEVICE_TO_HOST,Device到Host的内存复制
- 3:ACL_MEMCPY_DEVICE_TO_DEVICE,Device内的内存复制
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明
参考资源接口调用示例,参见数据传输

父主题: 内存管理

函数:memcpy_async

C函数原型aclError aclrtMemcpyAsync(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind, aclrtStream stream)
Python函数ret = acl.rt.memcpy_async(dst, dest_max, src, count, kind, stream)
函数功能实现异步内存复制。
输入说明dst:int,目的内存地址的指针地址。 dest_max:int,目的内存地址的最大内存长度,单位Byte。 src:int,源内存地址的指针地址。 count:int,内存复制的长度,单位Byte。 kind:int,内存复制的类型。
- 0:ACL_MEMCPY_HOST_TO_HOST,Host内的内存复制
- 1:ACL_MEMCPY_HOST_TO_DEVICE, Host到Device的内存复制
- 2:ACL_MEMCPY_DEVICE_TO_HOST,Device到Host的内存复制
- 3:ACL_MEMCPY_DEVICE_TO_DEVICE,Device内的内存复制 stream:int,stream ID。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明- 调用本接口进行内存复制时,源地址和目的地址都必须64字节对齐。
- 本接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功。调用该接口后,一定要调用acl.rt.synchronize_stream接口确保内存复制的任务已执行完成。
- 本接口不支持异步Host内的内存复制功能,因此调用本接口选择“ACL_MEMCPY_HOST_TO_HOST”类型进行内存复制时,任务下发成功,但系统内部处理该任务时会返回失败。
参考资源接口调用示例,参见数据传输

父主题: 内存管理

在线提单