Ejemplo n.º 1
0
def start_empty():
    
    channel.MpiChannel.ensure_mpi_initialized()
    
    world = MPI.COMM_WORLD
    rank = world.rank
    
    color = 0 if world.rank == 0 else 1
    key = 0 if world.rank == 0 else world.rank -1 
    newcomm = world.Split(color, key)
    
    localdup = world.Dup()
    if world.rank == 0:
        result = []
        remote_leader = 1
        tag = 1
        
        new_intercomm = newcomm.Create_intercomm(0, localdup, remote_leader, tag)
        
        instance = core.CodeInterface(check_mpi = False, must_start_worker = False)
        instance.channel = channel.MpiChannel('_',None)
        instance.channel.intercomm = new_intercomm
        instance.world = localdup  
        instance.remote_leader = 1
        world.Barrier()
        
        return instance    
    else:
        
        new_intercomm = newcomm.Create_intercomm(0, localdup, 0, color)
        
        
        instance = CythonImplementation(None, core.CodeInterface)
        instance.intercomm = new_intercomm
        instance.world = localdup
        instance.freeworld = newcomm
        instance.localworld = newcomm
        instance.must_disconnect = False
        world.Barrier()
        instance.start()
        print "STOP...", world.rank
        return None
Ejemplo n.º 2
0
def start_empty():

    channel.MpiChannel.ensure_mpi_initialized()

    world = MPI.COMM_WORLD
    rank = world.rank

    color = 0 if world.rank == 0 else 1
    key = 0 if world.rank == 0 else world.rank - 1
    newcomm = world.Split(color, key)

    localdup = world.Dup()
    if world.rank == 0:
        result = []
        remote_leader = 1
        tag = 1

        new_intercomm = newcomm.Create_intercomm(0, localdup, remote_leader,
                                                 tag)

        instance = core.CodeInterface(check_mpi=False, must_start_worker=False)
        instance.channel = channel.MpiChannel('_', None)
        instance.channel.intercomm = new_intercomm
        instance.world = localdup
        instance.remote_leader = 1
        world.Barrier()

        return instance
    else:

        new_intercomm = newcomm.Create_intercomm(0, localdup, 0, color)

        instance = CythonImplementation(None, core.CodeInterface)
        instance.intercomm = new_intercomm
        instance.world = localdup
        instance.freeworld = newcomm
        instance.localworld = newcomm
        instance.must_disconnect = False
        world.Barrier()
        instance.start()
        print("STOP...", world.rank)
        return None