alltoallvc【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflow功能说明集合通信alltoallvc操作接口。向通信域内所有rank发送数据数据量可以定制并从所有rank接收数据。alltoallvc通过输入参数send_count_matrix传入所有rank的收发参数与alltoallv相比性能更优。函数原型def all_to_all_v_c(send_data, send_count_matrix, rank, fusion0, fusion_id-1, grouphccl_world_group)参数说明参数名输入/输出描述send_data输入待发送的数据TensorFlow的tensor类型。针对Ascend 950PR/Ascend 950DT支持数据类型int8、uint8、int16、uint16、int32、uint32、int64、uint64、float16、float32、float64、bfp16。针对Atlas A3 训练系列产品/Atlas A3 推理系列产品支持数据类型int8、uint8、int16、uint16、int32、uint32、int64、uint64、float16、float32、float64、bfp16。针对Atlas A2 训练系列产品/Atlas A2 推理系列产品支持数据类型int8、uint8、int16、uint16、int32、uint32、int64、uint64、float16、float32、float64、bfp16。针对Atlas 训练系列产品支持数据类型int8、uint8、int16、uint16、int32、uint32、int64、uint64、float16、float32、float64 。send_count_matrix输入所有rank的收发参数send_count_matrix[i][j]表示rank i发给rank j的数据量基本单位是send_data_type的字节数。例send_data_type为int32send_count_matrix[0][1]1表示rank0给rank1发送1个int32。TensorFlow的tensor类型。tensor支持的数据类型为int64。rank输入本节点的rank id该id是group内的rank idint类型。fusion输入alltoallvc算子融合标识int类型支持以下取值- 0标识网络编译时不会对该算子进行融合即该alltoallvc算子不和其他alltoallvc算子融合。- 2网络编译时会对alltoallvc算子按照相同的fusion_id进行融合即“fusion_id”相同的alltoallvc算子之间会进行融合。说明“fusion_id”相同的alltoallvc算子之间融合有一定的前提算子需要在相同的通信域内并且算子发送数据的数据类型需要相同。fusion_id输入标识alltoallvc算子的融合idint类型。开启alltoallvc算子融合功能的场景下需要配置该参数取值范围[0, 0x7fffffff]。group输入group名称可以为用户自定义group或者hccl_world_group。String类型最大长度为128字节含结束符。返回值对输入tensor执行完all_to_all_v_c操作之后的结果tensor。约束说明调用该接口的rank必须在当前接口入参group定义的范围内输入的rank id有效且不重复否则调用该接口会失败。针对Atlas 训练系列产品alltoallvc的通信域需要满足如下约束单Server 1p、2p通信域要在同一个cluster内Server内0-3卡和4-7卡各为一个cluster单Server 4p、8p和多Server通信域中rank要以cluster为基本单位并且Server间cluster选取要一致。各节点输入的send_count_matrix要保持一致。alltoallvc操作的性能与NPU之间共享数据的缓存区大小有关当通信数据量超过缓存区大小时性能将出现明显下降。若业务中alltoallvc通信数据量较大建议通过配置环境变量HCCL_BUFFSIZE适当增大缓存区大小以提升通信性能关于环境变量HCCL_BUFFSIZE的介绍可参见《环境变量参考》。针对Atlas 训练系列产品如果是单Server场景要求网卡的状态是“up”否则此接口会执行失败。调用示例from npu_bridge.hccl import hccl_ops send_data_tensor tf.random_uniform((1, 3), minval1, maxval10, dtypetf.float32) send_counts_matrix_tensor tf.Variable( [[3,3],[3,3]], dtypetf.int64) all_to_all_v_c hccl_ops.all_to_all_v_c(send_data_tensor, send_counts_matrix_tensor, 0)【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考