SimGrid  3.13
Versatile Simulation of Distributed Systems
smpi_bench.cpp File Reference
#include <cstring>
#include <unordered_map>
#include <utility>
#include "src/internal_config.h"
#include "private.h"
#include "xbt/dict.h"
#include "xbt/sysdep.h"
#include "xbt/ex.h"
#include "surf/surf.h"
#include "simgrid/sg_config.h"
#include "simgrid/modelchecker.h"
#include "src/mc/mc_replay.h"
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <errno.h>
#include <fcntl.h>
#include <math.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>

Classes

class  std::hash< smpi_source_location >
 
struct  local_data_t
 

Namespaces

 std
 

Macros

#define MAP_ANONYMOUS   MAP_ANON
 
#define PTR_STRLEN   (2 + 2 * sizeof(void*) + 1)
 
#define TOPAGE(addr)   (void *)(((unsigned long)(addr) / xbt_pagesize) * xbt_pagesize)
 

Functions

 XBT_LOG_NEW_DEFAULT_SUBCATEGORY (smpi_bench, smpi,"Logging specific to SMPI (benchmarking)")
 
static size_t shm_size (int fd)
 
static voidshm_map (int fd, size_t size, shared_data_key_type *data)
 
void smpi_bench_destroy (void)
 
void smpi_execute_flops_ (double *flops)
 
void smpi_execute_ (double *duration)
 
void smpi_execute_flops (double flops)
 
void smpi_execute (double duration)
 
void smpi_switch_data_segment (int dest)
 Map a given SMPI privatization segment (make a SMPI process active) More...
 
void smpi_bench_begin (void)
 
void smpi_bench_end (void)
 
static unsigned int private_sleep (double secs)
 
unsigned int smpi_sleep (unsigned int secs)
 
int smpi_usleep (useconds_t usecs)
 
int smpi_gettimeofday (struct timeval *tv, void *tz)
 
unsigned long long smpi_rastro_resolution (void)
 
unsigned long long smpi_rastro_timestamp (void)
 
static char * sample_location (int global, const char *file, int line)
 
static int sample_enough_benchs (local_data_t *data)
 
void smpi_sample_1 (int global, const char *file, int line, int iters, double threshold)
 
int smpi_sample_2 (int global, const char *file, int line)
 
void smpi_sample_3 (int global, const char *file, int line)
 
voidsmpi_shared_malloc (size_t size, const char *file, int line)
 
void smpi_shared_free (void *ptr)
 
int smpi_shared_known_call (const char *func, const char *input)
 
voidsmpi_shared_get_call (const char *func, const char *input)
 
voidsmpi_shared_set_call (const char *func, const char *input, void *data)
 
void smpi_really_switch_data_segment (int dest)
 Map a given SMPI privatization segment (make a SMPI process active) even if SMPI thinks it is already active. More...
 
int smpi_is_privatisation_file (char *file)
 
void smpi_initialize_global_memory_segments ()
 
void smpi_destroy_global_memory_segments ()
 

Variables

xbt_dict_t samples = NULL
 
xbt_dict_t calls = NULL
 
double smpi_cpu_threshold
 
double smpi_running_power
 
int smpi_loaded_page = -1
 
char * smpi_start_data_exe = NULL
 
int smpi_size_data_exe = 0
 
int smpi_privatize_global_variables
 
double smpi_total_benched_time = 0
 
smpi_privatisation_region_t smpi_privatisation_regions
 
double sg_surf_precision
 

Macro Definition Documentation

#define MAP_ANONYMOUS   MAP_ANON
#define PTR_STRLEN   (2 + 2 * sizeof(void*) + 1)
#define TOPAGE (   addr)    (void *)(((unsigned long)(addr) / xbt_pagesize) * xbt_pagesize)

Function Documentation

XBT_LOG_NEW_DEFAULT_SUBCATEGORY ( smpi_bench  ,
smpi  ,
"Logging specific to SMPI (benchmarking)"   
)
static size_t shm_size ( int  fd)
static
static void* shm_map ( int  fd,
size_t  size,
shared_data_key_type *  data 
)
static
void smpi_bench_destroy ( void  )
void smpi_execute_flops_ ( double *  flops)
void smpi_execute_ ( double *  duration)
void smpi_execute_flops ( double  flops)
void smpi_execute ( double  duration)
void smpi_switch_data_segment ( int  dest)

Map a given SMPI privatization segment (make a SMPI process active)

void smpi_bench_begin ( void  )
void smpi_bench_end ( void  )
static unsigned int private_sleep ( double  secs)
static
unsigned int smpi_sleep ( unsigned int  secs)
int smpi_usleep ( useconds_t  usecs)
int smpi_gettimeofday ( struct timeval *  tv,
void tz 
)
unsigned long long smpi_rastro_resolution ( void  )
unsigned long long smpi_rastro_timestamp ( void  )
static char* sample_location ( int  global,
const char *  file,
int  line 
)
static
static int sample_enough_benchs ( local_data_t data)
static
void smpi_sample_1 ( int  global,
const char *  file,
int  line,
int  iters,
double  threshold 
)
int smpi_sample_2 ( int  global,
const char *  file,
int  line 
)
void smpi_sample_3 ( int  global,
const char *  file,
int  line 
)
void* smpi_shared_malloc ( size_t  size,
const char *  file,
int  line 
)
void smpi_shared_free ( void ptr)
int smpi_shared_known_call ( const char *  func,
const char *  input 
)
void* smpi_shared_get_call ( const char *  func,
const char *  input 
)
void* smpi_shared_set_call ( const char *  func,
const char *  input,
void data 
)
void smpi_really_switch_data_segment ( int  dest)

Map a given SMPI privatization segment (make a SMPI process active) even if SMPI thinks it is already active.

When doing a state restoration, the state of the restored variables might not be consistent with the state of the virtual memory. In this case, we to change the data segment.

int smpi_is_privatisation_file ( char *  file)
void smpi_initialize_global_memory_segments ( void  )
void smpi_destroy_global_memory_segments ( void  )

Variable Documentation

xbt_dict_t samples = NULL
xbt_dict_t calls = NULL
double smpi_cpu_threshold
double smpi_running_power
int smpi_loaded_page = -1
char* smpi_start_data_exe = NULL
int smpi_size_data_exe = 0
int smpi_privatize_global_variables
double smpi_total_benched_time = 0
smpi_privatisation_region_t smpi_privatisation_regions
double sg_surf_precision