Changeset 4075

Show
Ignore:
Timestamp:
03/14/09 22:35:41 (12 months ago)
Author:
balaji
Message:

First cut of the runtime selection of bootstrap server (ticket #456).

Location:
mpich2/trunk/src/pm/hydra
Files:
13 added
6 removed
14 modified

Legend:

Unmodified
Added
Removed
  • mpich2/trunk/src/pm/hydra/bootstrap/Makefile.sm

    r4052 r4075  
    66 
    77SUBDIRS_hydra_bss_names = ssh fork 
    8 SUBDIRS = utils @hydra_bss_names@ . 
     8SUBDIRS = utils src @hydra_bss_names@ . 
  • mpich2/trunk/src/pm/hydra/bootstrap/fork/Makefile.sm

    r4024 r4075  
    88 
    99libhydra_a_DIR = ${HYDRA_LIB_PATH} 
    10 libhydra_a_SOURCES = fork_launch.c fork_wait.c fork_finalize.c fork_usize.c 
     10libhydra_a_SOURCES = fork_init.c fork_launch.c 
    1111INCLUDES = -I${abs_srcdir}/../../include \ 
    1212        -I${abs_srcdir}/../../../../include \ 
  • mpich2/trunk/src/pm/hydra/bootstrap/fork/fork_launch.c

    r4024 r4075  
    1212HYD_Handle handle; 
    1313 
    14 HYD_Status HYD_BSCI_Launch_procs(void) 
     14HYD_Status HYD_BSCD_fork_launch_procs(void) 
    1515{ 
    1616    struct HYD_Proc_params *proc_params; 
  • mpich2/trunk/src/pm/hydra/bootstrap/include/bsci.h

    r4019 r4075  
    1010#include "hydra.h" 
    1111 
    12 HYD_Status HYD_BSCI_Launch_procs(void); 
    13 HYD_Status HYD_BSCI_Get_universe_size(int *size); 
    14 HYD_Status HYD_BSCI_Wait_for_completion(void); 
    15 HYD_Status HYD_BSCI_Finalize(void); 
     12struct HYD_BSCI_fns { 
     13    HYD_Status(*launch_procs) (void); 
     14    HYD_Status(*get_usize) (int *); 
     15    HYD_Status(*wait_for_completion) (void); 
     16    HYD_Status(*finalize) (void); 
     17}; 
     18 
     19extern struct HYD_BSCI_fns HYD_BSCI_fns; 
     20 
     21HYD_Status HYD_BSCI_init(char * bootstrap); 
     22HYD_Status HYD_BSCI_finalize(void); 
     23HYD_Status HYD_BSCI_get_usize(int *size); 
     24HYD_Status HYD_BSCI_wait_for_completion(void); 
     25 
     26/* Each bootstrap server has to expose an initialization function */ 
     27HYD_Status HYD_BSCI_ssh_init(void); 
     28HYD_Status HYD_BSCI_fork_init(void); 
    1629 
    1730#endif /* BSCI_H_INCLUDED */ 
  • mpich2/trunk/src/pm/hydra/bootstrap/ssh/Makefile.sm

    r3971 r4075  
    88 
    99libhydra_a_DIR = ${HYDRA_LIB_PATH} 
    10 libhydra_a_SOURCES = ssh_launch.c ssh_wait.c ssh_finalize.c ssh_usize.c 
     10libhydra_a_SOURCES = ssh_launch.c ssh_init.c 
    1111INCLUDES = -I${abs_srcdir}/../../include \ 
    1212        -I${abs_srcdir}/../../../../include \ 
  • mpich2/trunk/src/pm/hydra/bootstrap/ssh/ssh_launch.c

    r4023 r4075  
    1313 
    1414/* 
    15  * HYD_BSCI_Launch_procs: For each process, we create an executable 
    16  * which reads like "ssh exec args" and the list of environment 
    17  * variables. We fork a worker process that sets the environment and 
    18  * execvp's this executable. 
     15 * HYD_BSCD_ssh_launch_procs: For each process, we create an 
     16 * executable which reads like "ssh exec args" and the list of 
     17 * environment variables. We fork a worker process that sets the 
     18 * environment and execvp's this executable. 
    1919 */ 
    20 HYD_Status HYD_BSCI_Launch_procs(void) 
     20HYD_Status HYD_BSCD_ssh_launch_procs(void) 
    2121{ 
    2222    struct HYD_Proc_params *proc_params; 
  • mpich2/trunk/src/pm/hydra/bootstrap/utils/Makefile.sm

    r4019 r4075  
    88 
    99libhydra_a_DIR = ${HYDRA_LIB_PATH} 
    10 libhydra_a_SOURCES = bscu_wait.c 
     10libhydra_a_SOURCES = bscu_wait.c bscu_usize.c bscu_finalize.c 
    1111INCLUDES = -I${abs_srcdir}/../../include \ 
    1212        -I${abs_srcdir}/../../../../include \ 
  • mpich2/trunk/src/pm/hydra/bootstrap/utils/bscu.h

    r4019 r4075  
    88#define BSCU_H_INCLUDED 
    99 
    10 #include "hydra.h" 
    11 #include "hydra_utils.h" 
    12 #include "bsci.h" 
     10#include "hydra_base.h" 
    1311 
    14 HYD_Status HYD_BSCU_Wait_for_completion(void); 
     12HYD_Status HYD_BSCU_finalize(void); 
     13HYD_Status HYD_BSCU_get_usize(int *size); 
     14HYD_Status HYD_BSCU_wait_for_completion(void); 
    1515 
    16 #endif /* BSCI_H_INCLUDED */ 
     16#endif /* BSCU_H_INCLUDED */ 
  • mpich2/trunk/src/pm/hydra/bootstrap/utils/bscu_wait.c

    r4063 r4075  
    77#include "hydra.h" 
    88#include "hydra_utils.h" 
    9 #include "bsci.h" 
    109#include "bscu.h" 
    1110 
     
    1312 
    1413/* 
    15  * HYD_BSCU_Wait_for_completion: We first wait for communication 
     14 * HYD_BSCU_wait_for_completion: We first wait for communication 
    1615 * events from the available processes till all connections have 
    1716 * closed. In the meanwhile, the SIGCHLD handler keeps track of all 
    1817 * the terminated processes. 
    1918 */ 
    20 HYD_Status HYD_BSCU_Wait_for_completion(void) 
     19HYD_Status HYD_BSCU_wait_for_completion(void) 
    2120{ 
    2221    int pid, ret_status, not_completed; 
  • mpich2/trunk/src/pm/hydra/configure.in

    r4073 r4075  
    6666AC_ARG_WITH(hydra-bss, [  --with-hydra-bss           Boot-strap Server], 
    6767                    [ hydra_bss=$withval ], 
    68                     [ hydra_bss=ssh ]) 
     68                    [ hydra_bss="ssh,fork" ]) 
    6969AC_MSG_CHECKING(boot-strap server) 
    7070AC_MSG_RESULT($hydra_bss) 
     
    267267 
    268268for hydra_bss_name in ${hydra_bss_names}; do 
     269    if test -z "${hydra_default_bss}" ; then 
     270       hydra_default_bss=$hydra_bss_name 
     271    fi 
    269272    hydra_bss_makefiles="$hydra_bss_makefiles bootstrap/${hydra_bss_name}/Makefile" 
    270273done 
     274AC_DEFINE_UNQUOTED(HYDRA_DEFAULT_BSS,"$hydra_default_bss",[Default bootstrap server]) 
    271275 
    272276dnl Final output 
     
    293297        bootstrap/Makefile \ 
    294298        bootstrap/utils/Makefile \ 
     299        bootstrap/src/Makefile \ 
    295300        ${hydra_bss_makefiles} 
    296301) 
  • mpich2/trunk/src/pm/hydra/launcher/mpiexec/utils.c

    r4074 r4075  
    163163            status = HYD_GRACEFUL_ABORT; 
    164164            goto fn_fail; 
     165        } 
     166 
     167        /* Bootstrap server */ 
     168        if (!strcmp(*argv, "--bootstrap")) { 
     169            CHECK_LOCAL_PARAM_START(local_params_started, status); 
     170            CHECK_NEXT_ARG_VALID(status); 
     171 
     172            if (handle.bootstrap != NULL) { 
     173                HYDU_Error_printf("Duplicate bootstrap setting; previously set to %s\n", 
     174                                  handle.bootstrap); 
     175                status = HYD_INTERNAL_ERROR; 
     176                goto fn_fail; 
     177            } 
     178 
     179            handle.bootstrap = MPIU_Strdup(*argv); 
     180            continue; 
    165181        } 
    166182 
     
    419435        } 
    420436    } 
     437 
     438    if (handle.bootstrap == NULL) 
     439        handle.bootstrap = MPIU_Strdup(HYDRA_DEFAULT_BSS); 
    421440 
    422441    /* 
  • mpich2/trunk/src/pm/hydra/pm/central/central_finalize.c

    r4019 r4075  
    3737    } 
    3838 
    39     status = HYD_BSCI_Finalize(); 
     39    status = HYD_BSCI_finalize(); 
    4040    if (status != HYD_SUCCESS) { 
    4141        HYDU_Error_printf("unable to finalize the bootstrap server\n"); 
  • mpich2/trunk/src/pm/hydra/pm/central/central_launch.c

    r4072 r4075  
    220220    /* Initialize the bootstrap server and ask it to launch the 
    221221     * processes. */ 
    222     status = HYD_BSCI_Launch_procs(); 
     222    status = HYD_BSCI_init(handle.bootstrap); 
     223    if (status != HYD_SUCCESS) { 
     224        HYDU_Error_printf("bootstrap server initialization failed\n"); 
     225        goto fn_fail; 
     226    } 
     227 
     228    status = HYD_BSCI_launch_procs(); 
    223229    if (status != HYD_SUCCESS) { 
    224230        HYDU_Error_printf("bootstrap server returned error launching processes\n"); 
     
    241247    HYDU_FUNC_ENTER(); 
    242248 
    243     status = HYD_BSCI_Wait_for_completion(); 
     249    status = HYD_BSCI_wait_for_completion(); 
    244250    if (status != HYD_SUCCESS) { 
    245251        status = HYD_PMCD_Central_cleanup(); 
  • mpich2/trunk/src/pm/hydra/pm/utils/pmi.c

    r4005 r4075  
    671671    HYDU_FUNC_ENTER(); 
    672672 
    673     status = HYD_BSCI_Get_universe_size(&usize); 
     673    status = HYD_BSCI_get_usize(&usize); 
    674674    if (status != HYD_SUCCESS) { 
    675675        HYDU_Error_printf("Unable to get universe size from the bootstrap server\n");