CANN/hcomm写归约操作API
HcommWriteReduceOnThread【免费下载链接】hcommHCOMMHuawei Communication是HCCL的通信基础库提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持[!NOTE]说明 针对Atlas A2 训练系列产品/Atlas A2 推理系列产品仅支持Atlas 800T A2 训练服务器、Atlas 900 A2 PoD 集群基础单元、Atlas 200T A2 Box16 异构子框。功能说明向channel上的指定内存写数据将src中长度为count*sizeof(dataType)的内存数据与dst所指向的相同长度的内存数据进行reduceOp操作并将结果输出到dst中。接口调用方为src所在节点。函数原型int32_t HcommWriteReduceOnThread(ThreadHandle thread, ChannelHandle channel, void *dst, const void *src, uint64_t count, HcommDataType dataType, HcommReduceOp reduceOp)参数说明参数名输入/输出描述thread输入通信线程句柄为通过HcclThreadAcquire接口获取到的threads。ThreadHandle类型的定义可参见ThreadHandle。channel输入通信通道句柄为通过HcclChannelAcquire接口获取到的channels。ChannelHandle类型的定义可参见ChannelHandle。dst输出目的内存地址使用HcclGetHcclBuffer、HcclChannelGetHcclBuffer获取到的内存。src输入源内存地址使用HcclGetHcclBuffer、HcclChannelGetHcclBuffer获取到的内存。count输入元素个数。dataType输入数据类型。HcommDataType类型的定义请参见HcommDataType。针对Ascend 950PR/Ascend 950DT支持的数据类型int8、int16、int32、uint8、uint16、uint32、fp16、fp32、bfp16。针对Atlas A3 训练系列产品/Atlas A3 推理系列产品支持数据类型int8、int16、int32、float16、float32、bfp16。针对Atlas A2 训练系列产品/Atlas A2 推理系列产品支持数据类型int8、int16、int32、float16、float32、bfp16。reduceOp输入归约操作类型支持sum、max、min。HcommReduceOp类型的定义请参见HcommReduceOp。返回值int32_t接口成功返回0其他失败。约束说明无调用示例// 申请通信线程资源 CommEngine engine CommEngine::COMM_ENGINE_CPU_TS; // Atlas A3 训练系列产品/Atlas A3 推理系列产品使用 CommEngine engine CommEngine::COMM_ENGINE_AICPU_TS; // Ascend 950PR/Ascend 950DT使用 uint32_t threadNum 1; uint32_t notifyNumPerThread 1; ThreadHandle thread; HcclThreadAcquire(engine, threadNum, notifyNumPerThread, thread); // 申请通信通道资源 uint32_t channelNum 1; HcclChannelDesc channelDesc; HcclChannelDescInit(channelDesc, channelNum); HcclComm comm; ChannelHandle channel; HcclChannelAcquire(comm, engine, channelDesc, channelNum, channel); // 获取本端通信内存信息 void * localBuffer; uint64_t localBufferSize; HcclGetHcclBuffer(comm, localBuffer, localBufferSize); // 获取对端通信内存信息 void * remoteBuffer; uint64_t remoteBufferSize; HcclChannelGetHcclBuffer(comm, channel, remoteBuffer, remoteBufferSize); uint64_t count std::min(localBufferSize/sizeof(uint64_t), remoteBufferSize/sizeof(uint64_t)); // 将本端内存和对端内存数据进行reduce输出到对端内存上 HcommWriteReduceOnThread(thread, channel, remoteBuffer, localBuffer, count, HCOMM_DATA_TYPE_INT32, HCOMM_REDUCE_SUM);【免费下载链接】hcommHCOMMHuawei Communication是HCCL的通信基础库提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考