This source file includes following definitions.
- mca_pml_crcpw_component_register
- mca_pml_crcpw_component_open
- mca_pml_crcpw_component_close
- mca_pml_crcpw_component_init
- mca_pml_crcpw_component_finalize
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 
  21 
  22 
  23 #include "ompi_config.h"
  24 #include "opal/runtime/opal.h"
  25 #include "opal/util/output.h"
  26 #include "opal/mca/event/event.h"
  27 #include "opal/mca/btl/base/base.h"
  28 
  29 #include "mpi.h"
  30 #include "ompi/mca/pml/pml.h"
  31 #include "ompi/mca/pml/base/pml_base_bsend.h"
  32 #include "ompi/mca/pml/crcpw/pml_crcpw.h"
  33 #include "ompi/mca/bml/base/base.h"
  34 
  35 static int mca_pml_crcpw_component_register(void);
  36 
  37 mca_pml_crcpw_component_t mca_pml_crcpw_component = {
  38     {
  39         
  40 
  41 
  42         .pmlm_version = {
  43             MCA_PML_BASE_VERSION_2_0_0,
  44 
  45             .mca_component_name = "crcpw",
  46             MCA_BASE_MAKE_VERSION(component, OMPI_MAJOR_VERSION, OMPI_MINOR_VERSION,
  47                                   OMPI_RELEASE_VERSION),
  48             .mca_open_component = mca_pml_crcpw_component_open,
  49             .mca_close_component = mca_pml_crcpw_component_close,
  50             .mca_register_component_params = mca_pml_crcpw_component_register,
  51         },
  52         .pmlm_data = {
  53             
  54             MCA_BASE_METADATA_PARAM_CHECKPOINT
  55         },
  56 
  57         .pmlm_init = mca_pml_crcpw_component_init,
  58         .pmlm_finalize = mca_pml_crcpw_component_finalize,
  59     },
  60     
  61     0,
  62     
  63     PML_SELECT_WRAPPER_PRIORITY,
  64     
  65     false
  66 };
  67 
  68 opal_free_list_t pml_state_list;
  69 bool pml_crcpw_is_finalized = false;
  70 
  71 static int mca_pml_crcpw_component_register(void)
  72 {
  73     
  74 
  75 
  76     mca_pml_crcpw_component.priority = PML_SELECT_WRAPPER_PRIORITY;
  77     (void) mca_base_component_var_register(&mca_pml_crcpw_component.super.pmlm_version, "priority",
  78                                            "Priority of the PML crcpw component",
  79                                            MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
  80                                            OPAL_INFO_LVL_9,
  81                                            MCA_BASE_VAR_SCOPE_READONLY,
  82                                            &mca_pml_crcpw_component.priority);
  83 
  84     mca_pml_crcpw_component.verbose = 0;
  85     (void) mca_base_component_var_register(&mca_pml_crcpw_component.super.pmlm_version, "verbose",
  86                                            "Verbose level for the PML crcpw component",
  87                                            MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
  88                                            OPAL_INFO_LVL_9,
  89                                            MCA_BASE_VAR_SCOPE_READONLY,
  90                                            &mca_pml_crcpw_component.verbose);
  91 
  92     return OMPI_SUCCESS;
  93 }
  94 
  95 int mca_pml_crcpw_component_open(void)
  96 {
  97     opal_output_verbose( 10, mca_pml_crcpw_component.output_handle,
  98                          "pml:crcpw: component_open: Open");
  99 
 100     mca_pml_crcpw_component.output_handle = opal_output_open(NULL);
 101     if ( 0 != mca_pml_crcpw_component.verbose) {
 102         opal_output_set_verbosity(mca_pml_crcpw_component.output_handle,
 103                                   mca_pml_crcpw_component.verbose);
 104     }
 105 
 106     
 107 
 108 
 109     opal_output_verbose(10, mca_pml_crcpw_component.output_handle,
 110                         "pml:crcpw: open()");
 111     opal_output_verbose(20, mca_pml_crcpw_component.output_handle,
 112                         "pml:crcpw: open: priority   = %d",
 113                         mca_pml_crcpw_component.priority);
 114     opal_output_verbose(20, mca_pml_crcpw_component.output_handle,
 115                         "pml:crcpw: open: verbosity  = %d",
 116                         mca_pml_crcpw_component.verbose);
 117 
 118     return OMPI_SUCCESS;
 119 }
 120 
 121 
 122 int mca_pml_crcpw_component_close(void)
 123 {
 124     opal_output_verbose( 20, mca_pml_crcpw_component.output_handle,
 125                          "pml:crcpw: component_close: Close");
 126 
 127     return OMPI_SUCCESS;
 128 }
 129 
 130 
 131 mca_pml_base_module_t* mca_pml_crcpw_component_init(int* priority,
 132                                                      bool enable_progress_threads,
 133                                                      bool enable_mpi_threads)
 134 {
 135     
 136 
 137 
 138 
 139 
 140     if(*priority == PML_SELECT_WRAPPER_PRIORITY ) {
 141         opal_output_verbose( 20, mca_pml_crcpw_component.output_handle,
 142                              "pml:crcpw: component_init: Wrap the selected component %s",
 143                              mca_pml_base_selected_component.pmlm_version.mca_component_name);
 144 
 145         mca_pml_crcpw_module.wrapped_pml_component = mca_pml_base_selected_component;
 146         mca_pml_crcpw_module.wrapped_pml_module    = mca_pml;
 147         mca_pml_crcpw_component.pml_crcp_wrapped = true;
 148 
 149         opal_output_verbose( 20, mca_pml_crcpw_component.output_handle,
 150                              "pml:crcpw: component_init: Initalize Wrapper");
 151 
 152         OBJ_CONSTRUCT(&pml_state_list, opal_free_list_t);
 153         opal_free_list_init (&pml_state_list,
 154                              sizeof(ompi_crcp_base_pml_state_t),
 155                              opal_cache_line_size,
 156                              OBJ_CLASS(ompi_crcp_base_pml_state_t),
 157                              0,opal_cache_line_size,
 158                              5,  
 159                              -1, 
 160                              64, 
 161                              NULL, 0, NULL, NULL, NULL);
 162     }
 163     else {
 164         opal_output_verbose( 20, mca_pml_crcpw_component.output_handle,
 165                              "pml:crcpw: component_init: Priority %d",
 166                              mca_pml_crcpw_component.priority);
 167     }
 168 
 169 
 170     *priority = mca_pml_crcpw_component.priority;
 171 
 172     pml_crcpw_is_finalized = false;
 173 
 174     return &mca_pml_crcpw_module.super;
 175 }
 176 
 177 int mca_pml_crcpw_component_finalize(void)
 178 {
 179     opal_output_verbose( 20, mca_pml_crcpw_component.output_handle,
 180                          "pml:crcpw: component_finalize: Finalize");
 181 
 182     OBJ_DESTRUCT(&pml_state_list);
 183 
 184     pml_crcpw_is_finalized = true;
 185 
 186     if(mca_pml_crcpw_component.pml_crcp_wrapped) {
 187         return mca_pml_crcpw_module.wrapped_pml_component.pmlm_finalize();
 188     }
 189 
 190     return OMPI_SUCCESS;
 191 }
 192