1 | |
---|
2 | ###################################################################### |
---|
3 | |
---|
4 | mpi-serial |
---|
5 | |
---|
6 | Ray Loy (rloy@mcs.anl.gov) |
---|
7 | |
---|
8 | ###################################################################### |
---|
9 | |
---|
10 | |
---|
11 | This library provides a one-processor version of MPI. Most common MPI |
---|
12 | calls, including all that are necessary for MCT, are supported. This |
---|
13 | includes sends and receives (which cannot be simply stubbed out). See |
---|
14 | below for a complete list. |
---|
15 | |
---|
16 | |
---|
17 | --------------- |
---|
18 | Configuration |
---|
19 | --------------- |
---|
20 | |
---|
21 | During the MCT configure, specify the option: |
---|
22 | |
---|
23 | --enable-mpiserial |
---|
24 | |
---|
25 | |
---|
26 | This will cause the main MCT 'make' to compile mpi-serial and use it. |
---|
27 | |
---|
28 | IMPORTANT: |
---|
29 | |
---|
30 | By default, it is assumed that Fortran programs linked with mpi-serial |
---|
31 | (e.g. MCT) will be using REAL variables of size 4 bytes, and DOUBLE |
---|
32 | PRECISION variables of size 8 bytes. If this is not the case |
---|
33 | (e.g. due to hardware sizes or Fortran compiler options), you must |
---|
34 | specify a value for FORT_SIZE, e.g.: |
---|
35 | |
---|
36 | --enable-mpiserial FORT_SIZE=real8double8 |
---|
37 | |
---|
38 | |
---|
39 | The built-in choices for FORT_SIZE are: |
---|
40 | |
---|
41 | real4double8 (default) |
---|
42 | real8double8 (use when only REALs are auto-promoted) |
---|
43 | real8double16 (use when REALs and DOUBLEs are auto-promoted) |
---|
44 | |
---|
45 | |
---|
46 | How to configure for other Fortran data sizes: |
---|
47 | ---------------------------------------------- |
---|
48 | |
---|
49 | The setting for FORT_SIZE is actually just a name used to choose a |
---|
50 | pre-made mpif.h file, mpif.$(FORT_SIZE).h, whose contents set the |
---|
51 | sizes of Fortran data types. If you need a different set of sizes, |
---|
52 | you can copy one of these files and edit it to reflect the desired |
---|
53 | sizes. E.g. Copy mpif.real4double8.h to mpif.mysize.h and edit these |
---|
54 | lines: |
---|
55 | |
---|
56 | PARAMETER (MPI_REAL=4) ! 4 is number of bytes |
---|
57 | |
---|
58 | PARAMETER (MPI_DOUBLE_PRECISION=8) ! 8 is number of bytes |
---|
59 | |
---|
60 | then configure MCT using: |
---|
61 | |
---|
62 | --enable-mpiserial FORT_SIZE=mysize |
---|
63 | |
---|
64 | |
---|
65 | |
---|
66 | At runtime (within MPI_Init), there is a consistancy check of Fortran |
---|
67 | data type sizes. If any sizes conflict with the config, there will be |
---|
68 | an error message. |
---|
69 | |
---|
70 | |
---|
71 | Advanced: The sizes of other types can be set in the same manner. |
---|
72 | However, note that the size of a Fortran "INTEGER" must be the same as |
---|
73 | C type specified for MPI_Status_int in mpi.h. Consult the author for |
---|
74 | further advice. |
---|
75 | |
---|
76 | |
---|
77 | |
---|
78 | -------------------------------- |
---|
79 | Manual make targets |
---|
80 | -------------------------------- |
---|
81 | |
---|
82 | Note: Normally this is handled by the main MCT 'make'. |
---|
83 | See "Configuration" above. |
---|
84 | |
---|
85 | |
---|
86 | 'make' - compile the mpi-serial library |
---|
87 | |
---|
88 | 'make examples' - compile mpi-serial and its example programs |
---|
89 | |
---|
90 | 'make clean' - get rid of all objects and executables |
---|
91 | |
---|
92 | |
---|
93 | |
---|
94 | ---------------------------------- |
---|
95 | List of MPI calls supported |
---|
96 | ---------------------------------- |
---|
97 | |
---|
98 | general ops |
---|
99 | mpi_init |
---|
100 | mpi_finalize |
---|
101 | mpi_abort |
---|
102 | mpi_error_string |
---|
103 | mpi_initialized |
---|
104 | |
---|
105 | comm and group ops |
---|
106 | mpi_comm_free |
---|
107 | mpi_comm_size |
---|
108 | mpi_comm_rank |
---|
109 | mpi_comm_dup |
---|
110 | mpi_comm_create |
---|
111 | mpi_comm_split |
---|
112 | mpi_comm_group |
---|
113 | mpi_group_incl |
---|
114 | mpi_group_free |
---|
115 | |
---|
116 | send/receive ops |
---|
117 | mpi_irecv |
---|
118 | mpi_recv |
---|
119 | mpi_test |
---|
120 | mpi_wait |
---|
121 | mpi_waitany |
---|
122 | mpi_waitall |
---|
123 | mpi_isend |
---|
124 | mpi_send |
---|
125 | |
---|
126 | collective operations |
---|
127 | mpi_barrier |
---|
128 | mpi_bcast |
---|
129 | mpi_gather |
---|
130 | mpi_gatherv |
---|
131 | mpi_allgather |
---|
132 | mpi_scatterv |
---|
133 | mpi_reduce |
---|
134 | mpi_allreduce |
---|
135 | |
---|
136 | |
---|
137 | |
---|
138 | ----- |
---|
139 | EOF |
---|