1 /*****************************************************************************
2  *                                                                           *
3  * Copyright (c) 2003-2006 Intel Corporation.                                *
4  * All rights reserved.                                                      *
5  *                                                                           *
6  *****************************************************************************
7 
8 This code is covered by the Community Source License (CPL), version
9 1.0 as published by IBM and reproduced in the file "license.txt" in the
10 "license" subdirectory. Redistribution in source and binary form, with
11 or without modification, is permitted ONLY within the regulations
12 contained in above mentioned license.
13 
14 Use of the name and trademark "Intel(R) MPI Benchmarks" is allowed ONLY
15 within the regulations of the "License for Use of "Intel(R) MPI
16 Benchmarks" Name and Trademark" as reproduced in the file
17 "use-of-trademark-license.txt" in the "license" subdirectory.
18 
19 THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
20 CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT
21 LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
22 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
23 solely responsible for determining the appropriateness of using and
24 distributing the Program and assumes all risks associated with its
25 exercise of rights under this Agreement, including but not limited to
26 the risks and costs of program errors, compliance with applicable
27 laws, damage to or loss of data, programs or equipment, and
28 unavailability or interruption of operations.
29 
30 EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
31 ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
32 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
33 WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
34 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
36 DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
37 HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
38 
39 EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
40 YOUR JURISDICTION. It is licensee's responsibility to comply with any
41 export regulations applicable in licensee's jurisdiction. Under
42 CURRENT U.S. export regulations this software is eligible for export
43 from the U.S. and can be downloaded by or otherwise exported or
44 reexported worldwide EXCEPT to U.S.  embargoed destinations which
45 include Cuba, Iraq, Libya, North Korea, Iran, Syria, Sudan,
46 Afghanistan and any other country to which the U.S. has embargoed
47 goods and services.
48 
49  ***************************************************************************
50 
51 For more documentation than found here, see
52 
53 [1] doc/ReadMe_IMB.txt
54 
55 [2] Intel (R) MPI Benchmarks
56     Users Guide and Methodology Description
57     In
58     doc/IMB_ug.pdf
59 
60  ***************************************************************************/
61 
62 
63 
64 
65 
66 #ifndef _COMM_INFO_H
67 #define _COMM_INFO_H
68 
69 #include "IMB_declare.h"
70 
71 
72 #ifdef MPIIO
73 typedef struct { int Locsize; MPI_Offset Offset; int Totalsize;} SPLITTING;
74 #endif
75 
76 struct comm_info
77 {
78 /* Communication information as for MPI-1/2 parts */
79 
80 int w_num_procs;          /* number of procs in COMM_WORLD            */
81 int w_rank;               /* rank of actual process in COMM_WORLD     */
82 
83 int NP;                   /* #processes participating in benchmarks   */
84 int px,py;                /* processes are part of px x py topology   */
85 
86 MPI_Comm communicator;    /* underlying communicator for benchmark(s) */
87 
88 int num_procs;            /* number of processes in communicator      */
89 int rank;                 /* rank of actual process in communicator   */
90 
91 MPI_Datatype s_data_type; /* data type of sent data                   */
92 MPI_Datatype r_data_type; /* data type of received data               */
93 
94 MPI_Datatype red_data_type;/* data type of reduced data               */
95 MPI_Op op_type;            /* operation type                          */
96 
97 int pair0, pair1;          /* process pair                            */
98 int select_tag;            /* 0/1 for tag selection off/on            */
99 int select_source;         /* 0/1 for sender selection off/on         */
100 
101 void* s_buffer;            /* send    buffer                          */
102 assign_type* s_data;       /* assign_type equivalent of s_buffer      */
103 int   s_alloc;             /* #bytes allocated in s_buffer            */
104 void* r_buffer;            /* receive buffer                          */
105 assign_type* r_data;       /* assign_type equivalent of r_buffer      */
106 int   r_alloc;             /* #bytes allocated in r_buffer            */
107 
108 int n_lens;                /* # of selected lengths by -msglen option */
109 int* msglen;               /* list of  "       "                  "   */
110 
111 int group_mode;            /* Mode of running groups (<0,0,>0)        */
112 int n_groups;              /* No. of independent groups               */
113 int group_no;              /* own group index                         */
114 int* g_sizes;              /* array of group sizes                    */
115 int* g_ranks;              /* w_ranks constituting the groups         */
116 
117 int* sndcnt;               /* send count argument for global ops.     */
118 int* sdispl;               /* displacement argument for global ops.   */
119 int* reccnt;               /* recv count argument for global ops.     */
120 int* rdispl;               /* displacement argument for global ops.   */
121 
122 MPI_Errhandler ERR;
123 
124 #ifdef MPIIO
125 /*   FILE INFORMATION     */
126 
127 char* filename;
128 MPI_Comm File_comm;
129 int      File_num_procs;
130 int      all_io_procs;
131 int      File_rank;
132 
133 MPI_File fh;
134 MPI_Datatype etype;
135 Type_Size e_size;
136 MPI_Datatype filetype;
137 
138 SPLITTING split;
139 
140 int amode;
141 MPI_Info info;
142 
143 /* View: */
144 MPI_Offset disp;
145 char* datarep;
146 MPI_Datatype view;
147 MPI_Errhandler ERRF;
148 #endif
149 
150 #ifdef EXT
151 MPI_Win WIN;
152 MPI_Info info;
153 MPI_Errhandler ERRW;
154 #endif
155 
156 
157 };
158 
159 #endif
160