[2/n] [torch/elastic] Introduce C10dRendezvousBackend. (#55636)

Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/55636

This diff introduces:

- The `C10dRendezvousBackend` type to support C10d stores as rendezvous backends.
- A fix to the `TCPStore.compare_set()` function to support non-existent keys.
- A placeholder `c10d-experimental` registry to instantiate C10d-baked rendezvous backends via `get_rendezvous_handler()`.
ghstack-source-id: 126312162

Test Plan: Run the existing and newly-introduced unit/integration tests.

Reviewed By: tierex

Differential Revision: D27654492

fbshipit-source-id: 09f498138b35186de4b0e174adb33fb5b5aa4b52
This commit is contained in:
Can Balioglu
2021-04-12 22:17:12 -07:00
committed by Facebook GitHub Bot
parent b3dd8cde61
commit 339d3bf394
7 changed files with 451 additions and 6 deletions

View File

@ -6,6 +6,7 @@
from .api import RendezvousHandler, RendezvousParameters
from .api import rendezvous_handler_registry as handler_registry
from .dynamic_rendezvous import create_handler
def _create_etcd_handler(params: RendezvousParameters) -> RendezvousHandler:
@ -14,8 +15,17 @@ def _create_etcd_handler(params: RendezvousParameters) -> RendezvousHandler:
return etcd_rendezvous.create_rdzv_handler(params)
def _create_c10d_handler(params: RendezvousParameters) -> RendezvousHandler:
from .c10d_rendezvous_backend import create_backend
backend = create_backend(params)
return create_handler(backend.store, backend, params)
def _register_default_handlers() -> None:
handler_registry.register("etcd", _create_etcd_handler)
handler_registry.register("c10d-experimental", _create_c10d_handler)
# The legacy function kept for backwards compatibility.