#ifndef SMPI_PRIVATE_H
#define SMPI_PRIVATE_H
+#include "simgrid/simix.h"
+#include "smpi/smpi.h"
+#include "src/include/smpi/smpi_interface.h"
+#include "src/instr/instr_private.h"
#include "src/internal_config.h"
#include "xbt.h"
#include "xbt/base.h"
+#include "xbt/synchro.h"
#include "xbt/xbt_os_time.h"
-#include "xbt/synchro_core.h"
-#include "simgrid/simix.h"
-#include "src/include/smpi/smpi_interface.h"
-#include "smpi/smpi.h"
-#include "src/instr/instr_private.h"
SG_BEGIN_DECL()
#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)
int truncated;
size_t real_size;
MPI_Comm comm;
- smx_synchro_t action;
+ smx_activity_t action;
unsigned flags;
int detached;
MPI_Request detached_sender;
XBT_PRIVATE void smpi_process_set_replaying(bool s);
XBT_PRIVATE bool smpi_process_get_replaying();
-XBT_PRIVATE void smpi_deployment_register_process(const char* instance_id, int rank, int index, MPI_Comm** comm, xbt_bar_t*bar);
+XBT_PRIVATE void smpi_deployment_register_process(const char* instance_id, int rank, int index, MPI_Comm** comm,
+ msg_bar_t* bar);
XBT_PRIVATE void smpi_deployment_cleanup_instances();
-XBT_PRIVATE void smpi_comm_copy_buffer_callback(smx_synchro_t comm, void *buff, size_t buff_size);
+XBT_PRIVATE void smpi_comm_copy_buffer_callback(smx_activity_t comm, void *buff, size_t buff_size);
-XBT_PRIVATE void smpi_comm_null_copy_buffer_callback(smx_synchro_t comm, void *buff, size_t buff_size);
+XBT_PRIVATE void smpi_comm_null_copy_buffer_callback(smx_activity_t comm, void *buff, size_t buff_size);
XBT_PRIVATE void print_request(const char *message, MPI_Request request);
XBT_PRIVATE int smpi_type_keyval_free(int* keyval);
// utilities
extern XBT_PRIVATE double smpi_cpu_threshold;
-extern XBT_PRIVATE double smpi_running_power;
+extern XBT_PRIVATE double smpi_host_speed;
extern XBT_PRIVATE bool smpi_privatize_global_variables;
extern XBT_PRIVATE char* smpi_start_data_exe; //start of the data+bss segment of the executable
extern XBT_PRIVATE int smpi_size_data_exe; //size of the data+bss segment of the executable
void mpi_comm_spawn_multiple_ ( int* count, char *array_of_commands, char** array_of_argv, int* array_of_maxprocs,
int* array_of_info, int* root, int* comm, int*intercomm, int* array_of_errcodes, int* ierr);
void mpi_comm_get_parent_ ( int*parent, int* ierr);
+void mpi_file_close_ ( int* file, int* ierr);
+void mpi_file_delete_ ( char* filename, int* info, int* ierr);
+void mpi_file_open_ ( int* comm, char* filename, int* amode, int* info, int* fh, int* ierr);
+void mpi_file_set_view_ ( int* fh, long long int* offset, int* etype, int* filetype, char* datarep, int* info, int* ierr);
+void mpi_file_read_ ( int* fh, void* buf, int* count, int* datatype, MPI_Status* status, int* ierr);
+void mpi_file_write_ ( int* fh, void* buf, int* count, int* datatype, MPI_Status* status, int* ierr);
/********** Tracing **********/
/* from instr_smpi.c */
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);
extern XBT_PRIVATE int smpi_loaded_page;
extern XBT_PRIVATE int smpi_universe_size;
-XBT_PRIVATE int SIMIX_process_get_PID(smx_process_t self);
+XBT_PRIVATE int SIMIX_process_get_PID(smx_actor_t self);
static inline __attribute__ ((always_inline))
-int smpi_process_index_of_smx_process(smx_process_t process) {
+int smpi_process_index_of_smx_process(smx_actor_t process) {
return SIMIX_process_get_PID(process) -1;
}