next up previous contents
Next: MPH_components - main MPH Up: Routine/Function Prologues Previous: Routine/Function Prologues

Module MPH_module - Multi Program-Components Handshaking (Source File: mph.F)

This module multiple executables with multiple components in each executable. This module multiple executables with multiple components in.

REVISION HISTORY:

       2001-Nov-15 -- add PROTEX convention
       2001-May-20 -- first prototype
INTERFACE:
       module MPH_module
USES:
       implicit none
       include 'mpif.h'
       private    ! except
PUBLIC MEMBER FUNCTIONS:
       public :: MPH_components
       public :: PE_in_component
       public :: PE_in_num_comps
       public :: MPH_global_id
       public :: MPH_comm_join
       public :: MPH_redirect_output
       public :: MPH_help
       public :: MPH_debug
       public :: MPH_timer
       public :: MPH_total_components
       public :: MPH_comp_name
       public :: MPH_comp_id
       public :: MPH_local_world
       public :: MPH_exe_id
       public :: MPH_total_num_exe
       public :: MPH_num_comps
       public :: MPH_local_proc_id
       public :: MPH_local_totProcs
       public :: MPH_global_proc_id
       public :: MPH_global_totProcs
       public :: MPH_exe_world
       public :: MPH_exe_low_proc_limit
       public :: MPH_exe_up_proc_limit
PUBLIC DATA MEMBERS:
       integer, public :: istatus(MPI_STATUS_SIZE), ierr  
       integer, public :: MPH_Global_World  ! total processor for the whole world
DEFINED PARAMETERS:
       integer, parameter :: max_num_comps=10     ! maximum number of components
       integer, parameter :: maxProcs_comp=128    ! maximum number of procs per comp
       integer, parameter :: max_num_exes=10      ! maximum number of executables    
       integer, parameter :: N_CHANNELS=10        ! number of channels for timing
LOCAL VARIABLES:
       type Acomponent
          character (len=32) :: name         ! component name
          integer :: num_process             ! number of processors 
          integer :: process_list (maxProcs_comp) 
                                     ! global processor_id, increasing order
       end type Acomponent    
   
       type (Acomponent) :: components (max_num_comps) ! allocate components
       integer :: MPI_Acomponent
   
       integer :: local_world (max_num_comps)    ! communicator for each component
       integer :: local_proc_id (max_num_comps)  ! proc id in each component
       integer :: local_totProcs (max_num_comps) 
                               ! total number of processors in each component
       integer :: global_proc_id     ! proc id in the whole world
       integer :: global_totProcs    ! total number of processors
 
       integer :: COMM_master    ! communicator for submaster of each component
       integer :: total_components  ! total number of components
       character (len=32) :: component_names (max_num_comps)  ! component names
       character (len=32) :: name (max_num_comps)  ! name array used in setup
       integer comp_id (max_num_comps)        ! component id of each component
 
       integer :: num_comps (max_num_comps)  
                                   ! number of components in each executable
       integer :: exe_low_proc_limit (max_num_comps)
                                   ! lower processor limit of each component
                                   ! in each executable world
       integer :: exe_up_proc_limit (max_num_comps)
                                   ! upper processor limit of each component
                                   ! in each executable world
       integer :: exe_world_proc_id (max_num_exes)
                                   ! processor id in the executable world
       integer :: exe_world_totProcs (max_num_exes) 
                                   ! number of processors in each executable
       integer :: exe_world (max_num_exes)  
                                   ! communicator for each executable 
       integer :: exe_ids (max_num_comps)  ! executable ids
       integer :: total_num_exe    ! total number of executables
       integer :: exe_id           ! executable id
 
       integer :: debug_level = 0  ! level of debug
       .. for timer ..
       real (kind=8) :: init_time = -1.0
       real (kind=8) :: last_time, tot_time (0:N_CHANNELS)

\





Yun (Helen) He
Mon Mar 3 10:31:17 PST 2003