#ifndef SMPI_PRIVATE_HPP
#define SMPI_PRIVATE_HPP
+#include "include/xbt/config.hpp"
#include "simgrid/msg.h" // msg_bar_t
#include "smpi/smpi.h"
#include "src/instr/instr_smpi.hpp"
typedef SMPI_Dist_Graph_topology* MPIR_Dist_Graph_Topology;
XBT_PRIVATE SMPI_Process* smpi_process();
-XBT_PRIVATE SMPI_Process* smpi_process_remote(int index);
+XBT_PRIVATE SMPI_Process* smpi_process_remote(simgrid::s4u::ActorPtr actor);
XBT_PRIVATE int smpi_process_count();
-XBT_PRIVATE void smpi_deployment_register_process(const char* instance_id, int rank, int index);
+XBT_PRIVATE void smpi_deployment_register_process(const char* instance_id, int rank, simgrid::s4u::ActorPtr actor);
XBT_PRIVATE MPI_Comm* smpi_deployment_comm_world(const char* instance_id);
XBT_PRIVATE msg_bar_t smpi_deployment_finalization_barrier(const char* instance_id);
XBT_PRIVATE void smpi_deployment_cleanup_instances();
extern XBT_PRIVATE char* smpi_data_exe_start; // start of the data+bss segment of the executable
extern XBT_PRIVATE int smpi_data_exe_size; // size of the data+bss segment of the executable
-typedef enum { shmalloc_none, shmalloc_local, shmalloc_global } shared_malloc_type;
+enum shared_malloc_type { shmalloc_none, shmalloc_local, shmalloc_global };
extern XBT_PRIVATE shared_malloc_type smpi_cfg_shared_malloc; // Whether to activate shared malloc
XBT_PRIVATE void smpi_switch_data_segment(int dest);
XBT_PRIVATE int smpi_is_privatization_file(char* file);
XBT_PRIVATE void smpi_get_executable_global_size();
-XBT_PRIVATE void smpi_initialize_global_memory_segments();
+XBT_PRIVATE void smpi_backup_global_memory_segment();
XBT_PRIVATE void smpi_destroy_global_memory_segments();
XBT_PRIVATE void smpi_bench_destroy();
XBT_PRIVATE void smpi_bench_begin();
// TODO, make this static and expose it more cleanly
-typedef struct s_smpi_privatization_region {
+struct s_smpi_privatization_region_t {
void* address;
int file_descriptor;
-} s_smpi_privatization_region_t;
+};
typedef s_smpi_privatization_region_t* smpi_privatization_region_t;
-extern XBT_PRIVATE smpi_privatization_region_t smpi_privatization_regions;
extern XBT_PRIVATE int smpi_loaded_page;
extern XBT_PRIVATE int smpi_universe_size;
+XBT_PRIVATE smpi_privatization_region_t smpi_init_global_memory_segment_process();
}
/**
#endif
extern std::unordered_map<std::string, double> location2speedup;
+// TODO: Move this to the right location (if we keep this...)
+void smpi_add_process(simgrid::s4u::ActorPtr actor);
/** @brief Returns the last call location (filename, linenumber). Process-specific. */
extern "C" {
XBT_PUBLIC(smpi_trace_call_location_t*) smpi_trace_get_call_location();
}
-typedef enum {
+enum smpi_priv_strategies {
SMPI_PRIVATIZE_NONE = 0,
SMPI_PRIVATIZE_MMAP = 1,
SMPI_PRIVATIZE_DLOPEN = 2,
- SMPI_PRIVATIZE_DEFAULT = SMPI_PRIVATIZE_MMAP
-} smpi_priv_strategies;
+ SMPI_PRIVATIZE_DEFAULT = SMPI_PRIVATIZE_DLOPEN
+};
extern XBT_PRIVATE int smpi_privatize_global_variables;