root/ompi/mca/io/romio321/romio/adio/common/ad_init.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. my_consensus
  2. ADIO_Init

   1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
   2 /* 
   3  *
   4  *   Copyright (C) 1997 University of Chicago. 
   5  *   See COPYRIGHT notice in top-level directory.
   6  */
   7 
   8 #include "adio.h"
   9 
  10 ADIOI_Flatlist_node *ADIOI_Flatlist = NULL;
  11 ADIOI_Datarep *ADIOI_Datarep_head = NULL;
  12     /* list of datareps registered by the user */
  13 
  14 /* for f2c and c2f conversion */
  15 ADIO_File *ADIOI_Ftable = NULL;
  16 int ADIOI_Ftable_ptr = 0, ADIOI_Ftable_max = 0;
  17 ADIO_Request *ADIOI_Reqtable = NULL;
  18 int ADIOI_Reqtable_ptr = 0, ADIOI_Reqtable_max = 0;
  19 #ifndef HAVE_MPI_INFO
  20 MPI_Info *MPIR_Infotable = NULL;
  21 int MPIR_Infotable_ptr = 0, MPIR_Infotable_max = 0;
  22 #endif
  23 
  24 MPI_Info ADIOI_syshints = MPI_INFO_NULL;
  25 
  26 MPI_Op ADIO_same_amode=MPI_OP_NULL;
  27 
  28 #if defined(ROMIO_XFS) || defined(ROMIO_LUSTRE)
  29 int ADIOI_Direct_read = 0, ADIOI_Direct_write = 0;
  30 #endif
  31 
  32 int ADIO_Init_keyval=MPI_KEYVAL_INVALID;
  33 
  34 MPI_Errhandler ADIOI_DFLT_ERR_HANDLER = MPI_ERRORS_RETURN;
  35 
  36 
  37 static void my_consensus(void *invec, void *inoutvec, int *len, MPI_Datatype *datatype)
  38 {
  39     int i, *in, *inout;
  40     in = (int*)invec;
  41     inout = (int*)inoutvec;
  42 
  43     for (i=0; i< *len; i++) {
  44         if (in[i] != inout[i])
  45             inout[i] = ADIO_AMODE_NOMATCH;
  46     }
  47     return;
  48 }
  49 
  50 void ADIO_Init(int *argc, char ***argv, int *error_code)
  51 {
  52 #if defined(ROMIO_XFS) || defined(ROMIO_LUSTRE)
  53     char *c;
  54 #endif
  55 
  56     ADIOI_UNREFERENCED_ARG(argc);
  57     ADIOI_UNREFERENCED_ARG(argv);
  58     
  59 #ifdef ROMIO_INSIDE_MPICH
  60     MPIR_Ext_init();
  61 #endif
  62 
  63 /* initialize the linked list containing flattened datatypes */
  64     ADIOI_Flatlist = (ADIOI_Flatlist_node *) ADIOI_Malloc(sizeof(ADIOI_Flatlist_node));
  65     ADIOI_Flatlist->type = MPI_DATATYPE_NULL;
  66     ADIOI_Flatlist->next = NULL;
  67     ADIOI_Flatlist->blocklens = NULL;
  68     ADIOI_Flatlist->indices = NULL;
  69 
  70 #if defined(ROMIO_XFS) || defined(ROMIO_LUSTRE)
  71     c = getenv("MPIO_DIRECT_READ");
  72     if (c && (!strcmp(c, "true") || !strcmp(c, "TRUE"))) 
  73         ADIOI_Direct_read = 1;
  74     else ADIOI_Direct_read = 0;
  75     c = getenv("MPIO_DIRECT_WRITE");
  76     if (c && (!strcmp(c, "true") || !strcmp(c, "TRUE"))) 
  77         ADIOI_Direct_write = 1;
  78     else ADIOI_Direct_write = 0;
  79 #endif
  80 
  81 
  82 #ifdef ADIOI_MPE_LOGGING
  83     {
  84         MPE_Log_get_state_eventIDs( &ADIOI_MPE_open_a, &ADIOI_MPE_open_b );
  85         MPE_Log_get_state_eventIDs( &ADIOI_MPE_read_a, &ADIOI_MPE_read_b );
  86         MPE_Log_get_state_eventIDs( &ADIOI_MPE_write_a, &ADIOI_MPE_write_b );
  87         MPE_Log_get_state_eventIDs( &ADIOI_MPE_lseek_a, &ADIOI_MPE_lseek_b );
  88         MPE_Log_get_state_eventIDs( &ADIOI_MPE_close_a, &ADIOI_MPE_close_b );
  89         MPE_Log_get_state_eventIDs( &ADIOI_MPE_writelock_a,
  90                                     &ADIOI_MPE_writelock_b );
  91         MPE_Log_get_state_eventIDs( &ADIOI_MPE_readlock_a,
  92                                     &ADIOI_MPE_readlock_b );
  93         MPE_Log_get_state_eventIDs( &ADIOI_MPE_unlock_a, &ADIOI_MPE_unlock_b );
  94         MPE_Log_get_state_eventIDs( &ADIOI_MPE_postwrite_a,
  95                                     &ADIOI_MPE_postwrite_b );
  96         MPE_Log_get_state_eventIDs( &ADIOI_MPE_openinternal_a, 
  97                         &ADIOI_MPE_openinternal_b);
  98         MPE_Log_get_state_eventIDs( &ADIOI_MPE_stat_a, &ADIOI_MPE_stat_b);
  99         MPE_Log_get_state_eventIDs( &ADIOI_MPE_iread_a, &ADIOI_MPE_iread_b);
 100         MPE_Log_get_state_eventIDs( &ADIOI_MPE_iwrite_a, &ADIOI_MPE_iwrite_b);
 101 
 102         int  comm_world_rank;
 103         MPI_Comm_rank( MPI_COMM_WORLD, &comm_world_rank );
 104 
 105         if ( comm_world_rank == 0 ) {
 106             MPE_Describe_state( ADIOI_MPE_open_a, ADIOI_MPE_open_b,
 107                                 "open", "orange" );
 108             MPE_Describe_state( ADIOI_MPE_read_a, ADIOI_MPE_read_b,
 109                                 "read", "green" );
 110             MPE_Describe_state( ADIOI_MPE_write_a, ADIOI_MPE_write_b,
 111                                 "write", "blue" );
 112             MPE_Describe_state( ADIOI_MPE_lseek_a, ADIOI_MPE_lseek_b,
 113                                 "lseek", "red" );
 114             MPE_Describe_state( ADIOI_MPE_close_a, ADIOI_MPE_close_b,
 115                                 "close", "grey" );
 116             MPE_Describe_state( ADIOI_MPE_writelock_a, ADIOI_MPE_writelock_b,
 117                                 "writelock", "plum" );
 118             MPE_Describe_state( ADIOI_MPE_readlock_a, ADIOI_MPE_readlock_b,
 119                                 "readlock", "magenta" );
 120             MPE_Describe_state( ADIOI_MPE_unlock_a, ADIOI_MPE_unlock_b,
 121                                 "unlock", "purple" );
 122             MPE_Describe_state( ADIOI_MPE_postwrite_a, ADIOI_MPE_postwrite_b,
 123                                 "postwrite", "ivory" );
 124             MPE_Describe_state( ADIOI_MPE_openinternal_a, ADIOI_MPE_openinternal_b, "open system", "blue");
 125             MPE_Describe_state( ADIOI_MPE_stat_a, ADIOI_MPE_stat_b, "stat", "purple");
 126             MPE_Describe_state( ADIOI_MPE_iread_a, ADIOI_MPE_iread_b, "iread", "purple");
 127             MPE_Describe_state( ADIOI_MPE_iwrite_a, ADIOI_MPE_iwrite_b, "iwrite", "purple");
 128         }
 129     }
 130 #endif
 131 
 132     *error_code = MPI_SUCCESS;
 133     MPI_Op_create(my_consensus, 1, &ADIO_same_amode);
 134 }

/* [<][>][^][v][top][bottom][index][help] */