Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
smells--
[simgrid.git] / src / smpi / private.h
index f6245b5..ab10ac5 100644 (file)
@@ -47,13 +47,14 @@ 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 (*subtype_free)(MPI_Datatype* type);
+  void (*subtype_use)(MPI_Datatype* type);
 } s_smpi_subtype_t;
 
 typedef struct s_smpi_mpi_datatype{
   char* name;
   size_t size;
   /* this let us know if a serialization is required*/
-  size_t has_subtype;
+  size_t sizeof_substruct;
   MPI_Aint lb;
   MPI_Aint ub;
   int flags;
@@ -125,11 +126,11 @@ typedef struct s_smpi_mpi_info {
   int refcount;
 } s_smpi_mpi_info_t; 
 
-XBT_PRIVATE void smpi_process_destroy(void);
-XBT_PRIVATE void smpi_process_finalize(void);
-XBT_PRIVATE int smpi_process_finalized(void);
-XBT_PRIVATE int smpi_process_initialized(void);
-XBT_PRIVATE void smpi_process_mark_as_initialized(void);
+XBT_PRIVATE void smpi_process_destroy();
+XBT_PRIVATE void smpi_process_finalize();
+XBT_PRIVATE int smpi_process_finalized();
+XBT_PRIVATE int smpi_process_initialized();
+XBT_PRIVATE void smpi_process_mark_as_initialized();
 
 struct s_smpi_mpi_cart_topology;
 typedef struct s_smpi_mpi_cart_topology *MPIR_Cart_Topology;
@@ -156,31 +157,31 @@ XBT_PRIVATE int smpi_mpi_cart_shift(MPI_Comm comm, int direction, int disp, int
 XBT_PRIVATE int smpi_mpi_cartdim_get(MPI_Comm comm, int *ndims);
 XBT_PRIVATE int smpi_mpi_dims_create(int nnodes, int ndims, int dims[]);
 
-XBT_PRIVATE smpi_process_data_t smpi_process_data(void);
+XBT_PRIVATE smpi_process_data_t smpi_process_data();
 XBT_PRIVATE smpi_process_data_t smpi_process_remote_data(int index);
 // smpi_process_[set/get]_user_data must be public
 /* XBT_PRIVATE void smpi_process_set_user_data(void *); */
 /* XBT_PRIVATE void* smpi_process_get_user_data(void); */
-XBT_PRIVATE int smpi_process_count(void);
-XBT_PRIVATE MPI_Comm smpi_process_comm_world(void);
-XBT_PRIVATE MPI_Comm smpi_process_get_comm_intra(void);
+XBT_PRIVATE int smpi_process_count();
+XBT_PRIVATE MPI_Comm smpi_process_comm_world();
+XBT_PRIVATE MPI_Comm smpi_process_get_comm_intra();
 XBT_PRIVATE void smpi_process_set_comm_intra(MPI_Comm comm);
-XBT_PRIVATE smx_mailbox_t smpi_process_mailbox(void);
+XBT_PRIVATE smx_mailbox_t smpi_process_mailbox();
 XBT_PRIVATE smx_mailbox_t smpi_process_remote_mailbox(int index);
-XBT_PRIVATE smx_mailbox_t smpi_process_mailbox_small(void);
+XBT_PRIVATE smx_mailbox_t smpi_process_mailbox_small();
 XBT_PRIVATE smx_mailbox_t smpi_process_remote_mailbox_small(int index);
-XBT_PRIVATE xbt_mutex_t smpi_process_mailboxes_mutex(void);
+XBT_PRIVATE xbt_mutex_t smpi_process_mailboxes_mutex();
 XBT_PRIVATE xbt_mutex_t smpi_process_remote_mailboxes_mutex(int index);
-XBT_PRIVATE xbt_os_timer_t smpi_process_timer(void);
-XBT_PRIVATE void smpi_process_simulated_start(void);
-XBT_PRIVATE double smpi_process_simulated_elapsed(void);
+XBT_PRIVATE xbt_os_timer_t smpi_process_timer();
+XBT_PRIVATE void smpi_process_simulated_start();
+XBT_PRIVATE double smpi_process_simulated_elapsed();
 XBT_PRIVATE void smpi_process_set_sampling(int s);
-XBT_PRIVATE int smpi_process_get_sampling(void);
-XBT_PRIVATE void smpi_process_set_replaying(int s);
-XBT_PRIVATE int smpi_process_get_replaying(void);
+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**, xbt_bar_t*);
-XBT_PRIVATE void smpi_deployment_cleanup_instances(void);
+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_cleanup_instances();
 
 XBT_PRIVATE void smpi_comm_copy_buffer_callback(smx_synchro_t comm, void *buff, size_t buff_size);
 
@@ -188,12 +189,13 @@ XBT_PRIVATE void smpi_comm_null_copy_buffer_callback(smx_synchro_t comm, void *b
 
 XBT_PRIVATE void print_request(const char *message, MPI_Request request);
 
-XBT_PRIVATE int smpi_enabled(void);
-XBT_PRIVATE void smpi_global_init(void);
-XBT_PRIVATE void smpi_global_destroy(void);
-XBT_PRIVATE double smpi_mpi_wtime(void);
+XBT_PRIVATE int smpi_enabled();
+XBT_PRIVATE void smpi_global_init();
+XBT_PRIVATE void smpi_global_destroy();
+XBT_PRIVATE double smpi_mpi_wtime();
+XBT_PRIVATE void smpi_mpi_init();
 
-XBT_PRIVATE int is_datatype_valid(MPI_Datatype datatype);
+XBT_PRIVATE bool is_datatype_valid(MPI_Datatype datatype);
 
 XBT_PRIVATE size_t smpi_datatype_size(MPI_Datatype datatype);
 XBT_PRIVATE MPI_Aint smpi_datatype_lb(MPI_Datatype datatype);
@@ -221,7 +223,7 @@ XBT_PRIVATE int smpi_datatype_hindexed(int count, int* blocklens, MPI_Aint* indi
 XBT_PRIVATE int smpi_datatype_struct(int count, int* blocklens, MPI_Aint* indices, MPI_Datatype* old_types,
                        MPI_Datatype* new_type);
 
-XBT_PRIVATE void smpi_datatype_create(MPI_Datatype* new_type, int size,int lb, int ub, int has_subtype,
+XBT_PRIVATE void smpi_datatype_create(MPI_Datatype* new_type, int size,int lb, int ub, int sizeof_substruct,
                        void *struct_type, int flags);
 
 XBT_PRIVATE void smpi_datatype_free(MPI_Datatype* type);
@@ -233,10 +235,10 @@ XBT_PRIVATE int smpi_mpi_pack(void* inbuf, int incount, MPI_Datatype type, void*
                        MPI_Comm comm);
 
 XBT_PRIVATE void smpi_empty_status(MPI_Status * status);
-XBT_PRIVATE MPI_Op smpi_op_new(MPI_User_function * function, int commute);
-XBT_PRIVATE int smpi_op_is_commute(MPI_Op op);
+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, void *invec, void *inoutvec, int *len, MPI_Datatype * datatype);
+XBT_PRIVATE void smpi_op_apply(MPI_Op op, const 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);
@@ -261,6 +263,8 @@ XBT_PRIVATE MPI_Comm smpi_comm_split(MPI_Comm comm, int color, int key);
 XBT_PRIVATE int smpi_comm_dup(MPI_Comm comm, MPI_Comm* newcomm);
 XBT_PRIVATE void smpi_comm_use(MPI_Comm comm);
 XBT_PRIVATE void smpi_comm_unuse(MPI_Comm comm);
+XBT_PRIVATE void smpi_comm_cleanup_attributes(MPI_Comm comm);
+XBT_PRIVATE void smpi_comm_cleanup_smp(MPI_Comm comm);
 XBT_PRIVATE void smpi_comm_set_leaders_comm(MPI_Comm comm, MPI_Comm leaders);
 XBT_PRIVATE void smpi_comm_set_intra_comm(MPI_Comm comm, MPI_Comm leaders);
 XBT_PRIVATE int* smpi_comm_get_non_uniform_map(MPI_Comm comm);
@@ -396,7 +400,7 @@ 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 int smpi_privatize_global_variables;
+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
 
@@ -404,12 +408,12 @@ XBT_PRIVATE void smpi_switch_data_segment(int dest);
 XBT_PRIVATE void smpi_really_switch_data_segment(int dest);
 XBT_PRIVATE int smpi_is_privatisation_file(char* file);
 
-XBT_PRIVATE void smpi_get_executable_global_size(void);
-XBT_PRIVATE void smpi_initialize_global_memory_segments(void);
-XBT_PRIVATE void smpi_destroy_global_memory_segments(void);
-XBT_PRIVATE void smpi_bench_destroy(void);
-XBT_PRIVATE void smpi_bench_begin(void);
-XBT_PRIVATE void smpi_bench_end(void);
+XBT_PRIVATE void smpi_get_executable_global_size();
+XBT_PRIVATE void smpi_initialize_global_memory_segments();
+XBT_PRIVATE void smpi_destroy_global_memory_segments();
+XBT_PRIVATE void smpi_bench_destroy();
+XBT_PRIVATE void smpi_bench_begin();
+XBT_PRIVATE void smpi_bench_end();
 
 XBT_PRIVATE void* smpi_get_tmp_sendbuffer(int size);
 XBT_PRIVATE void* smpi_get_tmp_recvbuffer(int size);
@@ -420,13 +424,13 @@ XBT_PRIVATE XBT_PRIVATE int smpi_comm_attr_delete(MPI_Comm comm, int keyval);
 XBT_PRIVATE int smpi_comm_attr_put(MPI_Comm comm, int keyval, void* attr_value);
 
 // f77 wrappers
-void mpi_init_(int*);
-void mpi_finalize_(int*);
+void mpi_init_(int* ierr);
+void mpi_finalize_(int* ierr);
 void mpi_abort_(int* comm, int* errorcode, int* ierr);
 void mpi_comm_rank_(int* comm, int* rank, int* ierr);
 void mpi_comm_size_(int* comm, int* size, int* ierr);
-double mpi_wtime_(void);
-double mpi_wtick_(void);
+double mpi_wtime_();
+double mpi_wtick_();
 void mpi_initialized_(int* flag, int* ierr);
 
 void mpi_comm_dup_(int* comm, int* newcomm, int* ierr);
@@ -677,7 +681,7 @@ void mpi_comm_get_parent_ ( int*parent, int* ierr);
 /********** Tracing **********/
 /* from instr_smpi.c */
 XBT_PRIVATE void TRACE_internal_smpi_set_category (const char *category);
-XBT_PRIVATE const char *TRACE_internal_smpi_get_category (void);
+XBT_PRIVATE const char *TRACE_internal_smpi_get_category ();
 XBT_PRIVATE void TRACE_smpi_collective_in(int rank, int root, const char *operation, instr_extra_data extra);
 XBT_PRIVATE void TRACE_smpi_collective_out(int rank, int root, const char *operation);
 XBT_PRIVATE void TRACE_smpi_computing_init(int rank);
@@ -688,14 +692,15 @@ XBT_PRIVATE void TRACE_smpi_sleeping_out(int rank);
 XBT_PRIVATE void TRACE_smpi_sleeping_in(int rank, instr_extra_data extra);
 XBT_PRIVATE void TRACE_smpi_testing_out(int rank);
 XBT_PRIVATE void TRACE_smpi_testing_in(int rank, instr_extra_data extra);
-XBT_PRIVATE void TRACE_smpi_alloc(void);
-XBT_PRIVATE void TRACE_smpi_release(void);
+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_init(int rank);
 XBT_PRIVATE void TRACE_smpi_finalize(int rank);
+XBT_PRIVATE char *smpi_container(int rank, char *container, int n);
 
 XBT_PRIVATE const char* encode_datatype(MPI_Datatype datatype, int* known);