mindspore.communication.create_group

View Source On Gitee
mindspore.communication.create_group(group, rank_ids, options=None)[source]

Create a user collective communication group.

Note

This method isn't supported in GPU and CPU versions of MindSpore. The size of rank_ids should be larger than 1, rank_ids should not have duplicate data. This method should be used after init(). Only support global single communication group in PyNative mode if you do not start with mpirun.

Parameters
  • group (str) – The name of the communication group to be created.

  • rank_ids (list) – A list of device IDs.

  • options (GroupOptions, optional) –

    Additional communication group configuration parameters. The backend will automatically select supported parameters and apply them during group initialization. i.e. for the HCCL backend, hccl_config can be specified so that group initialization configurations can be applied. Default is None.

    GroupOptions is defined as a class that can be instantiated as a python object.

    GroupOptions {
        hccl_config(dict)
    }
    

Raises
  • TypeError – If group is not a string or rank_ids is not a list.

  • ValueError – If rank_ids size is not larger than 1, or rank_ids has duplicate data, or backend is invalid.

  • RuntimeError – If HCCL is not available or MindSpore is GPU/CPU version.

Supported Platforms:

Ascend GPU CPU

Examples

Note

Before running the following examples, you need to configure the communication environment variables.

For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method without any third-party or configuration file dependencies. Please see the msrun start up for more details.

>>> import mindspore as ms
>>> from mindspore import set_context, ops
>>> from mindspore._c_expression import GroupOptions
>>> from mindspore.communication import init, create_group, get_rank
>>> set_context(mode=ms.GRAPH_MODE)
>>> ms.set_device(device_target="Ascend")
>>> init()
>>> group = "0-7"
>>> rank_ids = [0,7]
>>> options = GroupOptions()
>>> options.hccl_config = {"hccl_buffer_size": 400}
>>> if get_rank() in rank_ids:
...     create_group(group, rank_ids, options)
...     allreduce = ops.AllReduce(group)