2 Quick Notes : getting started with the examples
3 ===============================================
5 ..:: What you need ::..
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).
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
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.
23 ..:: Try the examples ::..
26 # cd simgrid/examples/smpi
28 To compile an example :
29 # ../../src/smpi/smpicc bcast.c -o bcast
31 Use 'smpirun' to use it then:
34 # ../../src/smpi/smpirun -np 3 ./bcast
41 [0.000000] [smpi_kernel/INFO] simulation time 4.32934e-05
44 To run it with a specific platform:
45 # ../../src/smpi/smpirun -np 3 -platform platform.xml -hostfile hostfile ./bcast
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
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).
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:
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
72 It also takes an arbitrary number of optional parameters, each being a segment
73 limit on which to compute the correction factors.
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).
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
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
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
110 MPI_C_LONG_DOUBLE_COMPLEX
140 User defined operations: MPI_Op_create / MPI_Op_free
146 MPI_Group_translate_ranks
149 MPI_Group_intersection
155 * Communicator management:
165 MPI_Init / MPI_Init_thread
166 MPI_Query_thread / MPI_Is_thread_main