1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 #ifndef __INCLUDE_VPROTOCOL_PESSIMIST_H__
  17 #define __INCLUDE_VPROTOCOL_PESSIMIST_H__
  18 
  19 #include "ompi_config.h"
  20 #include "../vprotocol.h"
  21 #include "ompi/communicator/communicator.h"
  22 #include "ompi/datatype/ompi_datatype.h"
  23 
  24 #include "vprotocol_pessimist_event.h"
  25 #include "vprotocol_pessimist_sender_based_types.h"
  26 
  27 BEGIN_C_DECLS
  28 
  29 typedef struct mca_vprotocol_pessimist_module_t {
  30     mca_vprotocol_base_module_t super;
  31 
  32     
  33     vprotocol_pessimist_clock_t clock;
  34 
  35     
  36     opal_list_t pending_events;
  37 
  38     
  39     ompi_communicator_t *el_comm;
  40     vprotocol_pessimist_mem_event_t *event_buffer;
  41     size_t event_buffer_length;
  42     size_t event_buffer_max_length;
  43 
  44     
  45     opal_free_list_t events_pool;
  46 
  47     
  48     vprotocol_pessimist_sender_based_t sender_based;
  49 
  50     
  51     bool replay;
  52     opal_list_t replay_events;
  53 } mca_vprotocol_pessimist_module_t;
  54 
  55 OMPI_DECLSPEC extern mca_vprotocol_pessimist_module_t mca_vprotocol_pessimist;
  56 OMPI_DECLSPEC extern mca_vprotocol_base_component_t mca_vprotocol_pessimist_component;
  57 
  58 int mca_vprotocol_pessimist_enable(bool enable);
  59 int mca_vprotocol_pessimist_dump(struct ompi_communicator_t* comm, int verbose);
  60 
  61 int mca_vprotocol_pessimist_add_procs(struct ompi_proc_t **procs, size_t nprocs);
  62 int mca_vprotocol_pessimist_del_procs(struct ompi_proc_t **procs, size_t nprocs);
  63 int mca_vprotocol_pessimist_progress(void);
  64 int mca_vprotocol_pessimist_add_comm(struct ompi_communicator_t* comm);
  65 int mca_vprotocol_pessimist_del_comm(struct ompi_communicator_t* comm);
  66 
  67 int mca_vprotocol_pessimist_irecv(void *addr,
  68                                   size_t count,
  69                                   ompi_datatype_t * datatype,
  70                                   int src,
  71                                   int tag,
  72                                   struct ompi_communicator_t *comm,
  73                                   struct ompi_request_t **request );
  74 int mca_vprotocol_pessimist_recv(void *addr,
  75                                  size_t count,
  76                                  ompi_datatype_t * datatype,
  77                                  int src,
  78                                  int tag,
  79                                  struct ompi_communicator_t *comm,
  80                                  ompi_status_public_t * status );
  81 
  82 int mca_vprotocol_pessimist_isend(const void *buf,
  83                                   size_t count,
  84                                   ompi_datatype_t* datatype,
  85                                   int dst,
  86                                   int tag,
  87                                   mca_pml_base_send_mode_t sendmode,
  88                                   ompi_communicator_t* comm,
  89                                   ompi_request_t** request );
  90 int mca_vprotocol_pessimist_send(const void *buf,
  91                                  size_t count,
  92                                  ompi_datatype_t* datatype,
  93                                  int dst,
  94                                  int tag,
  95                                  mca_pml_base_send_mode_t sendmode,
  96                                  ompi_communicator_t* comm );
  97 
  98 int mca_vprotocol_pessimist_iprobe(int src, int tag,
  99                                    struct ompi_communicator_t *comm,
 100                                    int *matched, ompi_status_public_t * status );
 101 int mca_vprotocol_pessimist_probe(int src, int tag,
 102                                   struct ompi_communicator_t *comm,
 103                                   ompi_status_public_t * status );
 104 
 105 END_C_DECLS
 106 
 107 #include "vprotocol_pessimist_wait.h"
 108 #include "vprotocol_pessimist_start.h"
 109 
 110 #include "vprotocol_pessimist_request.h"
 111 #include "vprotocol_pessimist_sender_based.h"
 112 #include "vprotocol_pessimist_eventlog.h"
 113 
 114 #endif