You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

mindspore.communication.rst 8.6 kB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. mindspore.communication
  2. ========================
  3. 集合通信接口。
  4. 注意,集合通信接口需要预先设置环境变量。对于Ascend,用户需要配置rank_table,设置rank_id和device_id,相关教程可参考:
  5. `<https://www.mindspore.cn/tutorials/zh-CN/master/intermediate/distributed_training/distributed_training_ascend.html>`_。
  6. 对于GPU,用户需要预先配置host_file以及mpi,相关教程参考:
  7. `<https://www.mindspore.cn/tutorials/zh-CN/master/intermediate/distributed_training/distributed_training_gpu.html>`_。
  8. 目前尚不支持CPU。
  9. .. py:class:: mindspore.communication.GlobalComm
  10. GlobalComm 是一个储存通信信息的全局类。 成员包含:BACKEND、WORLD_COMM_GROUP。
  11. - BACKEND:使用的通信库,HCCL或者NCCL。
  12. - WORLD_COMM_GROUP:全局通信域。
  13. .. py:function:: mindspore.communication.init(backend_name=None)
  14. 初始化通信服务需要的分布式后端,例如 `HCCL` 或 `NCCL` 服务。
  15. .. note::
  16. HCCL的全称是华为集合通信库(Huawei Collective Communication Library),NCCL的全称是英伟达集合通信库(NVIDIA Collective Communication Library)。 `init` 方法应该在 `set_context` 方法之后使用。
  17. **参数:**
  18. - **backend_name** (str) – 分布式后端的名称,可选HCCL或NCCL。如果未设置则根据硬件平台类型(device_target)进行推断,默认值为None。
  19. **异常:**
  20. - **TypeError** – 参数 `backend_name` 不是字符串。
  21. - **RuntimeError** – 1)硬件设备类型无效;2)后台服务无效;3)分布式计算初始化失败;4)未设置环境变量 `RANK_ID` 或 `MINDSPORE_HCCL_CONFIG_PATH` 的情况下初始化HCCL服务。
  22. - **ValueError** – 环境变量 `RANK_ID` 设置成非数字。
  23. .. py:class:: mindspore.communication.release()
  24. 释放分布式资源,例如 `HCCL` 或 `NCCL` 服务。
  25. .. note:: `release` 方法应该在 `init` 方法之后使用。
  26. **异常:**
  27. - **RuntimeError** - 在释放分布式资源失败时抛出。
  28. .. py:class:: mindspore.communication.get_rank(group=GlobalComm.WORLD_COMM_GROUP)
  29. 在指定通信组中获取当前的设备序号。
  30. .. note::`get_rank` 方法应该在 `init` 方法之后使用。
  31. **参数:**
  32. - **group** (str) - 通信组名称,通常由 `create_group` 方法创建,否则将使用默认组。默认值: `GlobalComm.WORLD_COMM_GROUP` 。
  33. **返回:**
  34. int, 调用该方法的进程对应的组内序号。
  35. **异常:**
  36. - **TypeError** – 在参数 `group` 不是字符串时抛出。
  37. - **ValueError** – 在后台不可用时抛出。
  38. - **RuntimeError** – 在 `HCCL` 或 `NCCL` 服务不可用时抛出。
  39. .. py:class:: mindspore.communication.get_group_size(group=GlobalComm.WORLD_COMM_GROUP)
  40. 获取指定通信组实例的rank_size。
  41. .. note:: `get_group_size` 方法应该在 `init` 方法之后使用。在跑用例之前用户需要预先配置通信相关的环境变量。
  42. **参数:**
  43. - **group** (str) - 指定工作组实例(由 create_group 方法创建)的名称,支持数据类型为str,默认值为 `WORLD_COMM_GROUP` 。
  44. **返回:**
  45. 指定通信组实例的rank_size,数据类型为int。
  46. **异常:**
  47. - **TypeError** – 在参数 `group` 不是字符串时抛出。
  48. - **ValueError** – 在后台不可用时抛出。
  49. - **RuntimeError** – 在 `HCCL` 或 `NCCL` 服务不可用时抛出。
  50. .. py:class:: mindspore.communication.get_world_rank_from_group_rank(group, group_rank_id)
  51. 由指定通信组中的设备序号获取通信集群中的全局设备序号。
  52. .. note::
  53. - GPU 版本的MindSpore不支持此方法;
  54. - 参数 `group` 不能是 `hccl_world_group`;
  55. - `get_world_rank_from_group_rank` 方法应该在 `init` 方法之后使用。
  56. **参数:**
  57. - **group** (str) - 传入的通信组名称,通常由 `create_group` 方法创建。
  58. - **group_rank_id** (int) - 通信组内的设备序号。
  59. **返回:**
  60. int, 通信集群中的全局设备序号。
  61. **异常:**
  62. - **TypeError** – 参数 `group` 不是字符串或参数 `group_rank_id` 不是数字。
  63. - **ValueError** – 参数 `group` 是 `hccl_world_group` 或后台不可用。
  64. - **RuntimeError** – `HCCL` 或 `NCCL` 服务不可用,以及使用CPU版本的MindSpore。
  65. .. py:class:: mindspore.communication.get_group_rank_from_world_rank(world_rank_id, group)
  66. 由通信集群中的全局设备序号获取指定用户通信组中的rank ID。
  67. .. note::
  68. - GPU 版本的MindSpore不支持此方法;
  69. - 参数 `group` 不能是 `hccl_world_group`;
  70. - `get_group_rank_from_world_rank` 方法应该在 `init` 方法之后使用。
  71. **参数:**
  72. - **world_rank_id** (`int`) - 通信集群内的全局rank ID。
  73. - **group** (`str`) - 指定通信组实例(由 create_group 方法创建)的名称。
  74. **返回:**
  75. 当前通信组内的rank_ID,数据类型为int。
  76. **异常:**
  77. - **TypeError** – 在参数 `group_rank_id` 不是数字或参数 `group` 不是字符串时抛出。
  78. - **ValueError** – 在参数 `group` 是 `hccl_world_group` 或后台不可用时抛出。
  79. - **RuntimeError** – 在 `HCCL` 或 `NCCL` 服务不可用,以及使用GPU版本的MindSpore时抛出。
  80. .. py:class:: mindspore.communication.create_group(group, rank_ids)
  81. 创建用户自定义的通信组实例。
  82. .. note::
  83. - GPU 版本的MindSpore不支持此方法;
  84. - 列表rank_ids的长度应大于1;
  85. - 列表rank_ids内不能有重复数据;
  86. - `create_group` 方法应该在 `init` 方法之后使用。
  87. **参数:**
  88. - **group** (str) - 输入用户自定义的通信组实例名称,支持数据类型为str。
  89. - **rank_ids** (list) - 设备编号列表。
  90. **异常:**
  91. - **TypeError** – 参数 `group_rank_id` 不是数字或参数 `group` 不是字符串。
  92. - **ValueError** – 列表rank_ids的长度小于1,或列表rank_ids内有重复数据,以及后台无效。
  93. - **RuntimeError** – 在 `HCCL` 或 `NCCL` 服务不可用,以及使用CPU版本的MindSpore。
  94. .. py:class:: mindspore.communication.get_local_rank(group=GlobalComm.WORLD_COMM_GROUP)
  95. 获取指定通信组中当前设备的本地设备序号。
  96. .. note::
  97. - GPU 版本的MindSpore不支持此方法;
  98. - `get_local_rank` 方法应该在 `init` 方法之后使用。
  99. **参数:**
  100. - **group** (`str`) - 通信组名称,通常由 `create_group` 方法创建,否则将使用默认组名称。默认值: `WORLD_COMM_GROUP` 。
  101. **返回:**
  102. int, 调用该方法的进程对应的通信组内本地设备序号。
  103. **异常:**
  104. - **TypeError** – 在参数 `group` 不是字符串时抛出。
  105. - **ValueError** – 在后台不可用时抛出。
  106. - **RuntimeError** – 在 `HCCL` 或 `NCCL` 服务不可用时抛出。
  107. .. py:class:: mindspore.communication.get_local_rank_size(group=GlobalComm.WORLD_COMM_GROUP)
  108. 获取指定通信组的本地设备总数。
  109. .. note::
  110. - GPU 版本的MindSpore不支持此方法;
  111. - `get_local_rank_size` 方法应该在 `init` 方法之后使用。
  112. **参数:**
  113. - **group** (str) - 传入的通信组名称,通常由 `create_group` 方法创建,或默认使用 `WORLD_COMM_GROUP` 。
  114. **返回:**
  115. int, 调用该方法的进程对应的通信组设备总数。
  116. **异常:**
  117. - **TypeError** – 在参数 `group` 不是字符串时抛出。
  118. - **ValueError** – 在后台不可用时抛出。
  119. - **RuntimeError** – 在 `HCCL` 或 `NCCL` 服务不可用时抛出。
  120. .. py:class:: mindspore.communication.destroy_group(group)
  121. 注销用户通信组。
  122. .. note::
  123. - GPU 版本的MindSpore不支持此方法;
  124. - 参数 `group` 不能是 `hccl_world_group`;
  125. - `destroy_group` 方法应该在 `init` 方法之后使用。
  126. **参数:**
  127. - **group** (str) - 被注销通信组实例(通常由 create_group 方法创建)的名称。
  128. **异常:**
  129. - **TypeError** – 在参数 `group` 不是字符串时抛出。
  130. - **ValueError** – 在参数 `group` 是 `hccl_world_group` 或后台不可用时抛出。
  131. - **RuntimeError** – 在 `HCCL` 或 `NCCL` 服务不可用时抛出。