mindspore.ops.AlltoAllV
=======================

.. image:: https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source.svg
    :target: https://gitee.com/mindspore/mindspore/blob/master/docs/api/api_python/ops/mindspore.ops.AlltoAllV.rst
    :alt: 查看源文件


.. py:class:: mindspore.ops.AlltoAllV(group=GlobalComm.WORLD_COMM_GROUP, block_size=1)

    相对AlltoAll来说,AlltoAllV算子支持不等分的切分和聚合。

    .. note::
        只支持一维的输入,使用该接口前需要将输入数据展开成一维。

    参数:
        - **group** (str,可选) - AlltoAll的通信域。默认值: ``GlobalComm.WORLD_COMM_GROUP`` ,Ascend平台表示为 ``"hccl_world_group"`` 。
        - **block_size** (int,可选) - 通过 `send_numel_list` 和 `recv_numel_list` 切分和聚合数据量的基本单位。默认值: ``1`` 。

    输入:
        - **input_x** (Tensor) - 一维待分发的张量, shape为 :math:`(x_1)`。
        - **send_numel_list** (Union[tuple[int], list[int], Tensor]) - 分发给每张卡的数据量。实际分发数据量为 :math:`(send\_numel\_list * block\_size * input\_x.dtype)` 。
        - **recv_numel_list** (Union[tuple[int], list[int], Tensor]) - 从每张卡聚合的数据量。实际聚合数据量为 :math:`(send\_numel\_list * block\_size * input\_x.dtype)` 。

    输出:
        Tensor,从每张卡上聚合的一维数据结果。如果结果为空,则返回空张量,且张量数值无意义。

    样例:

    .. note::
        .. include:: mindspore.ops.comm_note.txt

        该样例需要在2卡环境下运行。
    
    教程样例:
        - `分布式集合通信原语 - AlltoAllV
          <https://www.mindspore.cn/docs/zh-CN/master/api_python/samples/ops/communicate_ops.html#alltoallv>`_