下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

alltoallv

函数原型

def all_to_all_v(send_data, send_counts, send_displacements, recv_counts, recv_displacements, group="hccl_world_group")

功能说明

集合通信域alltoallv操作接口。向通信域内所有rank发送数据(数据量可以定制),并从所有rank接收数据。

两个NPU之间共享数据的缓存区大小默认为200M,可通过环境变量HCCL_BUFFIZE进行调整,单位为M,取值需要大于等于1,默认值是200M。集合通信网络中,每一个集合通信域都会占用HCCL_BUFFSIZE大小的缓冲区,用户可以根据通信数据量与业务模型数据量的大小,适当调整HCCL_BUFFSIZE的大小,提升网络执行性能,例如:
export HCCL_BUFFSIZE=2048

参数说明

参数名

输入/输出

描述

send_data

输入

待发送的数据。

TensorFlow的tensor类型。

针对Atlas 训练系列产品,tensor支持的数据类型为:int8、uint8、int16、uint16、int32、uint32、int64、uint64、float16、float32、float64 。

针对Atlas A2 训练系列产品,tensor支持的数据类型为:int8、uint8、int16、uint16、int32、uint32、int64、uint64、float16、float32、float64、bfp16。

send_counts

输入

发送的数据量,send_counts[i]表示本rank发给rank i的数据个数,基本单位是send_data数据类型对应的字节数。

例:send_data的数据类型为int32,send_counts[0]=1,send_count[1]=2,表示本rank给rank0发送1个int32类型的数据,给rank1发送2个int32类型的数据。

TensorFlow的tensor类型,tensor支持的数据类型为int64。

send_displacements

输入

发送数据的偏移量,send_displacements[i] 表示本rank发送给rank i的数据块相对于send_data的偏移量,基本单位是send_data数据类型对应字节数。

例:

  • send_data的数据类型为int32。
  • send_counts[0]=1,send_counts[1]=2
  • send_displacements[0]=0,send_displacements[1]=1

则表示本rank给rank0发送send_data上的第1个int32类型的数据,给rank1发送send_data上第2个与第3个int32类型的数据。

TensorFlow的tensor类型,tensor支持的数据类型为int64。

recv_counts

输入

接收的数据量,recv_counts[i]表示本rank从rank i收到的数据量。使用方法与send_counts类似。

TensorFlow的tensor类型。tensor支持的数据类型为int64。

recv_displacements

输入

接收数据的偏移量,recv_displacements[i] 表示本rank发送给rank i数据块相对于recv_data的偏移量,基本单位是recv_data_type的字节数。使用方法与send_displacements类似。

TensorFlow的tensor类型。tensor支持的数据类型为int64。

group

输入

group名称,可以为用户自定义group或者"hccl_world_group"。

String类型,最大长度为128字节,含结束符。

返回值

recv_data:对输入tensor执行完all_to_all_v操作之后的结果tensor。

约束说明

  1. 调用该接口的rank必须在当前接口入参group定义的范围内,不在此范围内的rank调用该接口会失败。
  2. 针对Atlas 训练系列产品,alltoallv的通信域需要满足如下约束:

    集群组网下,单server 1p、2p通信域要在同一个cluster内(server内0-3卡和4-7卡各为一个cluster),单server4p、8p和多server通信域中rank要以cluster为基本单位,并且server间cluster选取要一致。

  3. alltoallv操作的性能与NPU之间共享数据的缓存区大小有关,当通信数据量超过缓存区大小时性能将出现明显下降。若业务中alltoallv通信数据量较大,建议通过配置环境变量HCCL_BUFFSIZE适当增大缓存区大小以提升通信性能。
  4. 该接口不支持非集群场景下使用。

支持的型号

Atlas 训练系列产品

Atlas A2 训练系列产品

调用示例

1
2
from npu_bridge.npu_init import *
result = hccl_ops.all_to_all_v(send_data_tensor, send_counts_tensor, send_displacements_tensor, recv_counts_tensor, recv_displacements_tensor)
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词