add random port (#18504)

* add random port
sum_op
guru4elephant 6 years ago committed by GitHub
parent fe32879d2a
commit 1f1cc2221f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -234,6 +234,7 @@ class MPISymetricRoleMaker(MPIRoleMaker):
super(MPISymetricRoleMaker, self).__init__()
self._node_type = None
self._proc_per_node = 2
self._pserver_rand_port = 0
def _check_role_generation(self):
if not self._role_is_generated:
@ -248,6 +249,20 @@ class MPISymetricRoleMaker(MPIRoleMaker):
return self.is_worker() and 0 == self.worker_index()
return False
def get_pserver_endpoints(self):
if self._pserver_rand_port <= 0:
import random
random.seed(self._server_num())
# port will be randomly generated from 60001 to 63999
# random seed is server num so that all nodes will get
# the same port
self._pserver_rand_port = random.randint(60001, 64000)
endpoints = [
x + ":" + str(self._pserver_rand_port)
for x in self._server_endpoints
]
return endpoints
def worker_num(self):
return self._worker_num()
@ -273,7 +288,7 @@ class MPISymetricRoleMaker(MPIRoleMaker):
"""
if self._check_role_generation():
if self.is_worker():
return self._get_size() / 2
return self._get_size() / self._proc_per_node
return 0
def _server_num(self):
@ -281,9 +296,10 @@ class MPISymetricRoleMaker(MPIRoleMaker):
return the current number of server
"""
if self._check_role_generation():
if self.is_server():
return self._get_size() / 2
return 0
return self._get_size() / self._proc_per_node
else:
self.generate_role()
return self._get_size() / self._proc_per_node
def worker_index(self):
"""
@ -291,7 +307,9 @@ class MPISymetricRoleMaker(MPIRoleMaker):
"""
if self._check_role_generation():
return self._rank / self._proc_per_node
return 0
else:
self.generate_role()
return self._get_size() / 2
def server_index(self):
"""
@ -299,7 +317,9 @@ class MPISymetricRoleMaker(MPIRoleMaker):
"""
if self._check_role_generation():
return self._rank / self._proc_per_node
return 0
else:
self.generate_role()
return self._get_size() / self._proc_per_node
def _barrier_worker(self):
"""
@ -308,6 +328,8 @@ class MPISymetricRoleMaker(MPIRoleMaker):
if self._check_role_generation():
if self.is_worker():
self._node_type_comm.barrier()
else:
raise Exception("You should check role generation first")
def _barrier_server(self):
"""
@ -316,6 +338,8 @@ class MPISymetricRoleMaker(MPIRoleMaker):
if self._check_role_generation():
if self.is_server():
self._node_type_comm.barrier()
else:
raise Exception("You should check role generation first")
def generate_role(self):
"""
@ -332,6 +356,8 @@ class MPISymetricRoleMaker(MPIRoleMaker):
self._node_type = 1
self._node_type_comm = self._comm.Split(self._node_type)
self._role_is_generated = True
else:
raise Exception("You should check role generation first")
class PaddleCloudRoleMaker(RoleMakerBase):

Loading…
Cancel
Save