This source file includes following definitions.
- my_consensus
- ADIO_Init
1
2
3
4
5
6
7
8 #include "adio.h"
9
10 ADIOI_Flatlist_node *ADIOI_Flatlist = NULL;
11 ADIOI_Datarep *ADIOI_Datarep_head = NULL;
12
13
14
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
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 }