1 #define SMPI_DEFAULT_SPEED 100
2 #define SMPI_REQUEST_MALLOCATOR_SIZE 100
3 #define SMPI_MESSAGE_MALLOCATOR_SIZE 100
5 #define SMPI_RAND_SEED 5
7 #define MPI_ANY_SOURCE -1
11 #define MPI_ERR_COMM 1
13 #define MPI_ERR_TYPE 3
14 #define MPI_ERR_REQUEST 4
15 #define MPI_ERR_INTERN 5
16 #define MPI_ERR_COUNT 6
17 #define MPI_ERR_RANK 7
20 #include <xbt/function_types.h>
21 #include <simix/simix.h>
24 struct smpi_mpi_communicator_t {
27 smx_mutex_t barrier_mutex;
28 smx_cond_t barrier_cond;
30 smx_process_t *processes;
32 typedef struct smpi_mpi_communicator_t smpi_mpi_communicator_t;
33 typedef smpi_mpi_communicator_t *MPI_Comm;
34 extern smpi_mpi_communicator_t smpi_mpi_comm_world;
35 #define MPI_COMM_WORLD (&smpi_mpi_comm_world)
38 struct smpi_mpi_status_t {
41 typedef struct smpi_mpi_status_t smpi_mpi_status_t;
42 typedef smpi_mpi_status_t MPI_Status;
43 extern smpi_mpi_status_t smpi_mpi_status_ignore;
44 #define MPI_STATUS_IGNORE (&smpi_mpi_status_ignore)
47 struct smpi_mpi_datatype_t {
50 typedef struct smpi_mpi_datatype_t smpi_mpi_datatype_t;
51 typedef smpi_mpi_datatype_t *MPI_Datatype;
52 // FIXME: add missing datatypes
53 extern smpi_mpi_datatype_t smpi_mpi_byte;
54 #define MPI_BYTE (&smpi_mpi_byte)
55 extern smpi_mpi_datatype_t smpi_mpi_int;
56 #define MPI_INT (&smpi_mpi_int)
57 extern smpi_mpi_datatype_t smpi_mpi_double;
58 #define MPI_DOUBLE (&smpi_mpi_double)
61 struct smpi_mpi_request_t {
62 smpi_mpi_communicator_t *comm;
68 smpi_mpi_datatype_t *datatype;
71 short int completed :1;
74 typedef struct smpi_mpi_request_t smpi_mpi_request_t;
75 typedef smpi_mpi_request_t *MPI_Request;
77 // smpi_received_message_t
78 struct smpi_received_message_t {
79 smpi_mpi_communicator_t *comm;
85 typedef struct smpi_received_message_t smpi_received_message_t;
88 struct smpi_mpi_op_t {
89 void (*func)(void *x, void *y, void *z);
91 typedef struct smpi_mpi_op_t smpi_mpi_op_t;
92 typedef smpi_mpi_op_t *MPI_Op;
93 extern smpi_mpi_op_t smpi_mpi_land;
94 #define MPI_LAND (&smpi_mpi_land)
95 extern smpi_mpi_op_t smpi_mpi_sum;
96 #define MPI_SUM (&smpi_mpi_sum)
100 extern int smpi_simulated_main(int argc, char **argv);
101 unsigned int smpi_sleep(unsigned int);