Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
sanitize the option smpi/shared-malloc, and improve its doc
[simgrid.git] / src / smpi / private.h
index 23fb524..161703d 100644 (file)
@@ -7,15 +7,15 @@
 #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()
 
@@ -44,8 +44,8 @@ enum smpi_process_state{
 // 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;
@@ -77,6 +77,7 @@ typedef struct s_smpi_mpi_datatype{
 #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)
 
@@ -180,7 +181,8 @@ XBT_PRIVATE int smpi_process_get_sampling();
 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_activity_t comm, void *buff, size_t buff_size);
@@ -238,7 +240,8 @@ XBT_PRIVATE void smpi_empty_status(MPI_Status * status);
 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);
@@ -276,18 +279,25 @@ XBT_PRIVATE int smpi_comm_is_blocked(MPI_Comm comm);
 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,
@@ -399,10 +409,11 @@ XBT_PRIVATE int smpi_type_keyval_create(MPI_Type_copy_attr_function* copy_fn, MP
 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
+extern XBT_PRIVATE bool smpi_cfg_shared_malloc; // Whether to activate shared malloc
 
 XBT_PRIVATE void smpi_switch_data_segment(int dest);
 XBT_PRIVATE void smpi_really_switch_data_segment(int dest);
@@ -677,6 +688,12 @@ void mpi_comm_spawn_ ( char *command, char *argv, int* maxprocs, int* info, int*
 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 */
@@ -696,8 +713,8 @@ XBT_PRIVATE void TRACE_smpi_alloc();
 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);