// for each such structure these function should be implemented (vector
// index hvector hindex struct)
typedef struct s_smpi_subtype{
- void (*serialize)(const void * input, void *output, int count, void* subtype);
- void (*unserialize)(const void * input, void *output, int count, void* subtype, MPI_Op op);
+ void (*serialize)(void * input, void *output, int count, void* subtype);
+ void (*unserialize)(void * input, void *output, int count, void* subtype, MPI_Op op);
void (*subtype_free)(MPI_Datatype* type);
void (*subtype_use)(MPI_Datatype* type);
} s_smpi_subtype_t;
#define COLL_TAG_GATHERV -2223
#define COLL_TAG_BCAST -3334
#define COLL_TAG_ALLREDUCE -4445
+#define SMPI_RMA_TAG -1234
#define MPI_COMM_UNINITIALIZED ((MPI_Comm)-1)
XBT_PRIVATE MPI_Op smpi_op_new(MPI_User_function * function, bool commute);
XBT_PRIVATE bool smpi_op_is_commute(MPI_Op op);
XBT_PRIVATE void smpi_op_destroy(MPI_Op op);
-XBT_PRIVATE void smpi_op_apply(MPI_Op op, const void *invec, void *inoutvec, int *len, MPI_Datatype * datatype);
+XBT_PRIVATE void smpi_op_set_fortran(MPI_Op op);
+XBT_PRIVATE void smpi_op_apply(MPI_Op op, void *invec, void *inoutvec, int *len, MPI_Datatype * datatype);
XBT_PRIVATE MPI_Group smpi_group_new(int size);
XBT_PRIVATE MPI_Group smpi_group_copy(MPI_Group origin);
XBT_PRIVATE void smpi_comm_init_smp(MPI_Comm comm);
XBT_PRIVATE int smpi_comm_c2f(MPI_Comm comm);
+XBT_PRIVATE int smpi_comm_add_f(MPI_Comm comm);
XBT_PRIVATE MPI_Comm smpi_comm_f2c(int comm);
XBT_PRIVATE int smpi_group_c2f(MPI_Group group);
+XBT_PRIVATE int smpi_group_add_f(MPI_Group group);
XBT_PRIVATE MPI_Group smpi_group_f2c(int group);
XBT_PRIVATE int smpi_request_c2f(MPI_Request req);
+XBT_PRIVATE int smpi_request_add_f(MPI_Request req);
XBT_PRIVATE MPI_Request smpi_request_f2c(int req);
XBT_PRIVATE int smpi_type_c2f(MPI_Datatype datatype);
+XBT_PRIVATE int smpi_type_add_f(MPI_Datatype datatype);
XBT_PRIVATE MPI_Datatype smpi_type_f2c(int datatype);
XBT_PRIVATE int smpi_op_c2f(MPI_Op op);
+XBT_PRIVATE int smpi_op_add_f(MPI_Op op);
XBT_PRIVATE MPI_Op smpi_op_f2c(int op);
XBT_PRIVATE int smpi_win_c2f(MPI_Win win);
+XBT_PRIVATE int smpi_win_add_f(MPI_Win win);
XBT_PRIVATE MPI_Win smpi_win_f2c(int win);
XBT_PRIVATE int smpi_info_c2f(MPI_Info info);
+XBT_PRIVATE int smpi_info_add_f(MPI_Info info);
XBT_PRIVATE MPI_Info smpi_info_f2c(int info);
XBT_PRIVATE MPI_Request smpi_mpi_send_init(void *buf, int count, MPI_Datatype datatype, int dst, int tag,
XBT_PRIVATE void TRACE_smpi_release();
XBT_PRIVATE void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation, instr_extra_data extra);
XBT_PRIVATE void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation);
-XBT_PRIVATE void TRACE_smpi_send(int rank, int src, int dst, int size);
-XBT_PRIVATE void TRACE_smpi_recv(int rank, int src, int dst);
+XBT_PRIVATE void TRACE_smpi_send(int rank, int src, int dst, int tag, int size);
+XBT_PRIVATE void TRACE_smpi_recv(int rank, int src, int dst, int tag);
XBT_PRIVATE void TRACE_smpi_init(int rank);
XBT_PRIVATE void TRACE_smpi_finalize(int rank);
XBT_PRIVATE char *smpi_container(int rank, char *container, int n);