diff --git a/mindspore/ccsrc/runtime/hccl_adapter/hccl_adapter.cc b/mindspore/ccsrc/runtime/hccl_adapter/hccl_adapter.cc index b0b5885ca5..a1783dea85 100644 --- a/mindspore/ccsrc/runtime/hccl_adapter/hccl_adapter.cc +++ b/mindspore/ccsrc/runtime/hccl_adapter/hccl_adapter.cc @@ -28,6 +28,7 @@ static constexpr const char *kHcclOpsKernelInfoStore = "ops_kernel_info_hccl"; static constexpr const char *kHcclDeployModeEnv = "DEPLOY_MODE"; +static constexpr const char *kHcclAlgoEnv = "HCCL_ALGO"; // following global var, thread safety is not guaranteed static std::shared_ptr ops_kernel_info_store = nullptr; static ge::OpsKernelBuilderPtr ops_kernel_builder = nullptr; @@ -41,16 +42,24 @@ static std::map GenHcclOptions(uint32_t device_id, std env_deploy_mode = "0"; } - return std::map({{ge::OPTION_EXEC_IS_USEHCOM, "1"}, - {ge::OPTION_EXEC_IS_USEHVD, "0"}, - {ge::OPTION_EXEC_HCCL_FLAG, "1"}, - {ge::OPTION_EXEC_DEVICE_ID, std::to_string(device_id)}, - {ge::OPTION_EXEC_RANK_ID, rank_id.data()}, - {ge::OPTION_EXEC_POD_NAME, rank_id.data()}, - {ge::OPTION_EXEC_RANK_TABLE_FILE, rank_file.data()}, - {ge::OPTION_GRAPH_RUN_MODE, "1"}, - {ge::OPTION_EXEC_HCCL_FLAG, "1"}, - {ge::OPTION_EXEC_DEPLOY_MODE, env_deploy_mode}}); + std::map default_options_map = {{ge::OPTION_EXEC_IS_USEHCOM, "1"}, + {ge::OPTION_EXEC_IS_USEHVD, "0"}, + {ge::OPTION_EXEC_HCCL_FLAG, "1"}, + {ge::OPTION_EXEC_DEVICE_ID, std::to_string(device_id)}, + {ge::OPTION_EXEC_RANK_ID, rank_id.data()}, + {ge::OPTION_EXEC_POD_NAME, rank_id.data()}, + {ge::OPTION_EXEC_RANK_TABLE_FILE, rank_file.data()}, + {ge::OPTION_GRAPH_RUN_MODE, "1"}, + {ge::OPTION_EXEC_HCCL_FLAG, "1"}, + {ge::OPTION_EXEC_DEPLOY_MODE, env_deploy_mode}}; + + auto env_hccl_algo = common::GetEnv(kHcclAlgoEnv); + if (!env_hccl_algo.empty()) { + std::string ge_hccl_algo = "HCCL_algorithm"; + default_options_map.emplace(ge_hccl_algo, env_hccl_algo); + } + + return default_options_map; } bool InitHccl(uint32_t device_id, std::string_view rank_id, std::string_view rank_file) {