HcommLocalCopyOnThread
产品支持情况
产品 |
是否支持 |
|---|---|
√ |
|
√ |
|
☓ |
|
☓ |
|
☓ |
针对
功能说明
提供本地内存拷贝功能,将src指向的长度为len的内存数据,拷贝到dst所指向的相同长度的内存中。
函数原型
1 | int32_t HcommLocalCopyOnThread(ThreadHandle thread, void *dst, const void *src, uint64_t len) |
参数说明
参数名 |
输入/输出 |
描述 |
|---|---|---|
thread |
输入 |
通信线程句柄,为通过HcclThreadAcquire接口获取到的threads。 ThreadHandle的类型的定义请参见ThreadHandle。 |
dst |
输出 |
目的内存地址,Device内存。 |
src |
输入 |
源内存地址,Device内存。 |
len |
输入 |
数据长度(字节)。 |
返回值
int32_t:接口成功返回0,其他失败。
约束说明
源内存地址、目的内存地址要能被执行引擎直接访问。
调用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | HcclComm comm; CommEngine engine = COMM_ENGINE_CPU_TS; aclrtStream stream; aclrtCreateStream(&stream); ThreadHandle thread; HcclResult result = HcclThreadAcquireWithStream(comm, engine, stream, 2, &thread); // 申请device内存 uint64_t memSize = 256; s32 policy = static_cast<int>(ACL_MEM_TYPE_HIGH_BAND_WIDTH) | static_cast<int>(ACL_MEM_MALLOC_HUGE_FIRST); aclrtMallocAttrValue moduleIdValue; moduleIdValue.moduleId = HCCL; aclrtMallocAttribute attrs{.attr = ACL_RT_MEM_ATTR_MODULE_ID, .value = moduleIdValue}; aclrtMallocConfig cfg{.attrs = &attrs, .numAttrs = 1}; void* inputMem; void* outputMem; aclrtMallocWithCfg(&inputMem, memSize, static_cast<aclrtMemMallocPolicy>(policy), &cfg); aclrtMallocWithCfg(&outputMem, memSize, static_cast<aclrtMemMallocPolicy>(policy), &cfg); // 执行 D2D 拷贝 HcommLocalCopyOnThread(thread, outputMem, inputMem, memSize); |
父主题: 本地操作