Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
memleaks --
[simgrid.git] / src / smpi / README
1
2 Quick Notes : getting started with the examples
3 ===============================================
4
5 ..:: What you need ::..
6
7 - a platform file describing the environment. You can go to 
8   the Platform Description Archive (http://pda.gforge.inria.fr/) to
9   get an existing one or generate your own platform with the
10   SIMULACRUM tool (see 'Download' section there).
11
12 - a hostfile. Like in almost all MPI distributions, the hostfile
13   list the hosts which the processes will be mapped on. At present,
14   the format is one hostname per line. The hostnames must be present
15   in the platform file. 
16
17   Note: the mapping of MPI processes (ranks) follows the order of the
18         hostfile. Rank 0 is mapped to first hostname in hostfile, Rank 1
19         on second hostname, etc. If n (where -np n) is greater than the
20         number l of lines in hostfile, the mapping is done round-robin. 
21
22
23 ..:: Try the examples ::..
24
25 Go to :
26 # cd simgrid/examples/smpi
27
28 To compile an example : 
29 # ../../src/smpi/smpicc bcast.c -o bcast
30
31 Use 'smpirun' to use it then:
32
33 To run it : 
34 # ../../src/smpi/smpirun -np 3 ./bcast 
35 node 0 has value 17
36 node 2 has value 3
37 node 1 has value 3
38 node 1 has value 17
39 node 0 has value 17
40 node 2 has value 17
41 [0.000000] [smpi_kernel/INFO] simulation time 4.32934e-05
42
43
44 To run it with a specific platform:
45 # ../../src/smpi/smpirun -np 3 -platform platform.xml -hostfile hostfile ./bcast
46
47 Note that by default, the examples use the installed version of
48 simgrid. So please install it before playing with the examples, or set
49 a LD_LIBRARY_PATH variable pointing to src/.libs
50
51
52
53
54
55 Network Model
56 =============
57
58 SMPI runs with a cluster-specific network model. This model is piece-wise
59 linear: each segment is described by a latency correction factor and a
60 bandwidth correction factor (both are multiplicative and apply to the values
61 given in the platform file).
62
63 To compute the values for a specific cluster, we provide the script
64 contrib/network_model/calibrate_piecewise.py. This script takes four mandatory
65 command line parameters:
66
67 1) a SKaMPI data file for a Pingpong_Send_Recv experiment
68 2) the number of links between the nodes involved in the SKaMPI measurments
69 3) the latency value of the links, as given in the platform file
70 4) the bandwidth value of the links, as given in the platform file
71
72 It also takes an arbitrary number of optional parameters, each being a segment
73 limit on which to compute the correction factors.
74
75 The script then outputs the latency and bandwidth factor for each segment that
76 best fit the experimental values. You can then apply these factors in the
77 network model by modifying the values in src/surf/network.c (after the "SMPI
78 callbacks" comment, lines 44 to 77).
79
80
81
82
83
84 What's implemented
85 ==================
86
87 As a proof of concept, and due to lack of time, the implementation is far from complete
88 with respect to a MPI-1.2 specification. Here is what is implemented so far. Please update
89 if you can.
90
91
92 * MPI_Datatypes:
93   MPI_BYTE
94   MPI_CHAR / MPI_SIGNED_CHAR / MPI_UNSIGNED_CHAR
95   MPI_SHORT / MPI_UNSIGNED_SHORT
96   MPI_INT / MPI_UNSIGNED
97   MPI_LONG / MPI_UNSIGNED_LONG
98   MPI_LONG_LONG / MPI_LONG_LONG_INT / MPI_UNSIGNED_LONG_LONG
99   MPI_FLOAT
100   MPI_DOUBLE
101   MPI_LONG_DOUBLE
102   MPI_WCHAR
103   MPI_C_BOOL
104   MPI_INT8_T / MPI_UINT8_T
105   MPI_INT16_T / MPI_UINT16_T
106   MPI_INT32_T / MPI_UINT32_T
107   MPI_INT64_T / MPI_UINT64_T
108   MPI_C_FLOAT_COMPLEX / MPI_C_COMPLEX
109   MPI_C_DOUBLE_COMPLEX
110   MPI_C_LONG_DOUBLE_COMPLEX
111   MPI_AINT
112   MPI_OFFSET
113   MPI_FLOAT_INT
114   MPI_LONG_INT
115   MPI_DOUBLE_INT
116   MPI_SHORT_INT
117   MPI_2INT
118   MPI_LONG_DOUBLE_INT
119    
120 * Type management:
121   MPI_Type_size
122   MPI_Type_get_extent
123   MPI_Type_extent
124   MPI_Type_lb
125   MPI_Type_ub
126    
127 * MPI_Op:
128   MPI_LAND
129   MPI_LOR
130   MPI_LXOR
131   MPI_SUM
132   MPI_PROD
133   MPI_MIN
134   MPI_MAX
135   MPI_MAXLOC
136   MPI_MINLOC
137   MPI_BAND
138   MPI_BOR
139   MPI_BXOR
140   User defined operations: MPI_Op_create / MPI_Op_free
141    
142 * Group management:
143   MPI_Group_free
144   MPI_Group_rank
145   MPI_Group_size
146   MPI_Group_translate_ranks
147   MPI_Group_compare
148   MPI_Group_union
149   MPI_Group_intersection
150   MPI_Group_difference
151   MPI_Group_incl
152   MPI_Group_excl
153   MPI_Group_range_incl
154    
155 * Communicator management:
156   MPI_Comm_rank
157   MPI_Comm_size
158   MPI_Comm_group
159   MPI_Comm_compare
160   MPI_Comm_dup
161   MPI_Comm_create
162   MPI_Comm_free
163    
164 * primitives:
165   MPI_Init / MPI_Init_thread
166   MPI_Query_thread / MPI_Is_thread_main
167   MPI_Finalize
168   MPI_Abort
169   MPI_Address
170   MPI_Wtime
171   MPI_Irecv
172   MPI_Recv
173   MPI_Recv_init
174   MPI_Isend
175   MPI_Send
176   MPI_Send_init
177   MPI_Sendrecv
178   MPI_Sendrecv_replace
179   MPI_Start
180   MPI_Startall
181   MPI_Request_free
182   MPI_Test
183   MPI_Testany
184   MPI_Wait
185   MPI_Waitall
186   MPI_Waitany
187   MPI_Waitsome
188   MPI_Barrier
189   MPI_Bcast
190   MPI_Gather
191   MPI_Gatherv
192   MPI_Scatter
193   MPI_Scatterv
194   MPI_Reduce
195   MPI_Scan
196   MPI_Reduce_Scatter
197   MPI_Allgather
198   MPI_Allgatherv
199   MPI_Allreduce
200   MPI_Alltoall
201   MPI_Alltoallv