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 9.1 kB

4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. mindspore.communication
  2. ========================
  3. 集合通信接口的类。
  4. .. py:class:: mindspore.communication.GlobalComm
  5. 全局通信信息。GlobalComm 是一个全局类。 成员包含:BACKEND、WORLD_COMM_GROUP。
  6. - BACKEND:使用的通信库,HCCL或者NCCL。
  7. - WORLD_COMM_GROUP:全局通信域。
  8. .. py:method:: mindspore.communication.init(backend_name=None)
  9. 初始化通信服务需要的分布式后端,例如‘HCCL’或‘NCCL’服务。
  10. .. note::HCCL的全称是华为集合通信库(Huawei Collective Communication Library),NCCL的全称是英伟达集合通信库(NVIDIA Collective Communication Library)。`init` 方法应该在 `set_context` 方法之后使用。
  11. **参数:**
  12. - **backend_name** (str) – 后台服务的名称,可选HCCL或NCCL。如果未设置则根据硬件平台类型(device_target)进行推断,默认值为None。
  13. **异常:**
  14. - **TypeError** – 在参数 `backend_name` 不是字符串时抛出。
  15. - **RuntimeError** – 在以下情况将抛出:1)硬件设备类型无效;2)后台服务无效;3)分布式计算初始化失败;4)未设置环境变量 `RANK_ID` 或 `MINDSPORE_HCCL_CONFIG_PATH` 的情况下初始化HCCL服务。
  16. - **ValueError** – 在环境变量 `RANK_ID` 设置成非数字时抛出。
  17. **样例:**
  18. >>> from mindspore.context import set_context
  19. >>> set_context(device_target="Ascend")
  20. >>> init()
  21. .. py:class:: mindspore.communication.release()
  22. 释放分布式资源,例如‘HCCL’或‘NCCL’服务。
  23. .. note:: `release` 方法应该在 `init` 方法之后使用。
  24. **异常:**
  25. - **RuntimeError** - 在释放分布式资源失败时抛出。
  26. .. py:class:: mindspore.communication.get_rank(group=GlobalComm.WORLD_COMM_GROUP)
  27. 在指定通信组中获取当前的设备序号。
  28. .. note::`get_rank` 方法应该在 `init` 方法之后使用。
  29. **参数:**
  30. - **group** (str) - 通信组名称,通常由 `create_group` 方法创建,否则将使用默认组。默认值:‘GlobalComm.WORLD_COMM_GROUP’。
  31. **返回:**
  32. int, 调用该方法的进程对应的组内序号。
  33. **异常:**
  34. - **TypeError** – 在参数 `group` 不是字符串时抛出。
  35. - **ValueError** – 在后台不可用时抛出。
  36. - **RuntimeError** – 在‘HCCL’或‘NCCL’服务不可用时抛出。
  37. .. py:class:: mindspore.communication.get_group_size(group=GlobalComm.WORLD_COMM_GROUP)
  38. 获取指定通信组的设备总数。
  39. .. note:: `get_group_size` 方法应该在 `init` 方法之后使用。
  40. **参数:**
  41. - **group** (str) - 通信组名称,通常由 `create_group` 方法创建,否则将使用默认组。默认值:‘WORLD_COMM_GROUP’。
  42. **返回:**
  43. int, 指定通信组的设备总数。
  44. **异常:**
  45. - **TypeError** – 在参数 `group` 不是字符串时抛出。
  46. - **ValueError** – 在后台不可用时抛出。
  47. - **RuntimeError** – 在‘HCCL’或‘NCCL’服务不可用时抛出。
  48. .. py:class:: mindspore.communication.get_world_rank_from_group_rank(group, group_rank_id)
  49. 由指定通信组中的设备序号获取通信集群中的全局设备序号。
  50. .. note::
  51. - GPU 版本的MindSpore不支持此方法;
  52. - 参数 `group` 不能是 `hccl_world_group`;
  53. - `get_world_rank_from_group_rank` 方法应该在 `init` 方法之后使用。
  54. **参数:**
  55. - **group** (str) - 传入的通信组名称,通常由 `create_group` 方法创建。
  56. - **group_rank_id** (int) - 通信组内的设备序号。
  57. **返回:**
  58. int, 通信集群中的全局设备序号。
  59. **异常:**
  60. - **TypeError** – 在参数 `group_rank_id` 不是数字或参数 `group` 不是字符串时抛出。
  61. - **ValueError** – 在参数 `group` 是 `hccl_world_group` 或后台不可用时抛出。
  62. - **RuntimeError** – 在‘HCCL’或‘NCCL’服务不可用,以及使用GPU版本的MindSpore时抛出。
  63. **样例:**
  64. >>> from mindspore.context import set_context
  65. >>> set_context(device_target="Ascend")
  66. >>> init()
  67. >>> group = "0-4"
  68. >>> rank_ids = [0,4]
  69. >>> create_group(group, rank_ids)
  70. >>> world_rank_id = get_world_rank_from_group_rank(group, 1)
  71. >>> print("world_rank_id is: ", world_rank_id) # 全局设备序号为4
  72. .. py:class:: mindspore.communication.get_group_rank_from_world_rank(world_rank_id, group)
  73. 由通信集群中的全局设备序号获取指定用户通信组中的设备序号。
  74. .. note::
  75. - GPU 版本的MindSpore不支持此方法;
  76. - 参数 `group` 不能是 `hccl_world_group`;
  77. - `get_group_rank_from_world_rank` 方法应该在 `init` 方法之后使用。
  78. **参数:**
  79. - **world_rank_id** (`int`) - 通信集群内的全局设备序号。
  80. - **group** (`str`) - 传入的通信组名称,通常由 `create_group` 方法创建。
  81. **返回:**
  82. int, 当前用户通信组中的设备序号。
  83. **异常:**
  84. - **TypeError** – 在参数 `group_rank_id` 不是数字或参数 `group` 不是字符串时抛出。
  85. - **ValueError** – 在参数 `group` 是 `hccl_world_group` 或后台不可用时抛出。
  86. - **RuntimeError** – 在‘HCCL’或‘NCCL’服务不可用,以及使用GPU版本的MindSpore时抛出。
  87. **样例:**
  88. >>> from mindspore.context import set_context
  89. >>> set_context(device_target="Ascend")
  90. >>> init()
  91. >>> group = "0-4"
  92. >>> rank_ids = [0,4]
  93. >>> create_group(group, rank_ids)
  94. >>> group_rank_id = get_group_rank_from_world_rank(4, group)
  95. >>> print("group_rank_id is: ", group_rank_id) # 组内设备序号是1
  96. .. py:class:: mindspore.communication.create_group(group, rank_ids)
  97. 创建用户通信组。
  98. .. note::
  99. - GPU 版本的MindSpore不支持此方法;
  100. - 列表rank_ids的长度应大于1;
  101. - 列表rank_ids内不能有重复数据;
  102. - `create_group` 方法应该在 `init` 方法之后使用。
  103. **参数:**
  104. - **group** (str) - 将被创建的通信组名称。
  105. - **rank_ids** (list) - 设备编号列表。
  106. **异常:**
  107. - **TypeError** – 在参数 `group_rank_id` 不是数字或参数 `group` 不是字符串时抛出。
  108. - **ValueError** – 在列表rank_ids的长度小于1,或列表rank_ids内有重复数据,以及后台无效时抛出。
  109. - **RuntimeError** – 在‘HCCL’或‘NCCL’ 服务不可用,以及使用GPU版本的MindSpore时抛出。
  110. **样例:**
  111. >>> from mindspore.context import set_context
  112. >>> set_context(device_target="Ascend")
  113. >>> init()
  114. >>> group = "0-8"
  115. >>> rank_ids = [0,8]
  116. >>> create_group(group, rank_ids)
  117. .. py:class:: mindspore.communication.get_local_rank(group=GlobalComm.WORLD_COMM_GROUP)
  118. 获取指定通信组中当前设备的本地设备序号。
  119. .. note::
  120. - GPU 版本的MindSpore不支持此方法;
  121. - `get_local_rank` 方法应该在 `init` 方法之后使用。
  122. **参数:**
  123. - **group** (`str`) - 通信组名称,通常由 `create_group` 方法创建,否则将使用默认组名称。默认值:‘WORLD_COMM_GROUP’。
  124. **返回:**
  125. int, 调用该方法的进程对应的通信组内本地设备序号。
  126. **异常:**
  127. - **TypeError** – 在参数 `group` 不是字符串时抛出。
  128. - **ValueError** – 在后台不可用时抛出。
  129. - **RuntimeError** – 在‘HCCL’或‘NCCL’服务不可用时抛出。
  130. .. py:class:: mindspore.communication.get_local_rank_size(group=GlobalComm.WORLD_COMM_GROUP)
  131. 获取指定通信组的本地设备总数。
  132. .. note::
  133. - GPU 版本的MindSpore不支持此方法;
  134. - `get_local_rank_size` 方法应该在 `init` 方法之后使用。
  135. **参数:**
  136. - **group** (str) - 传入的通信组名称,通常由 `create_group` 方法创建,或默认使用‘WORLD_COMM_GROUP’。
  137. **返回:**
  138. int, 调用该方法的进程对应的通信组设备总数。
  139. **异常:**
  140. - **TypeError** – 在参数 `group` 不是字符串时抛出。
  141. - **ValueError** – 在后台不可用时抛出。
  142. - **RuntimeError** – 在‘HCCL’或‘NCCL’服务不可用时抛出。
  143. .. py:class:: mindspore.communication.destroy_group(group)
  144. 销毁用户通信组。
  145. .. note::
  146. - GPU 版本的MindSpore不支持此方法;
  147. - 参数 `group` 不能是 `hccl_world_group`;
  148. - `destroy_group` 方法应该在 `init` 方法之后使用。
  149. **参数:**
  150. - **group** (str) - 将被销毁的通信组,通常由 `create_group` 方法创建。
  151. **异常:**
  152. - **TypeError** – 在参数 `group` 不是字符串时抛出。
  153. - **ValueError** – 在参数 `group` 是 `hccl_world_group` 或后台不可用时抛出。
  154. - **RuntimeError** – 在‘HCCL’或‘NCCL’服务不可用时抛出。