ROSS
ross-extern.h
Go to the documentation of this file.
1#ifndef INC_ross_extern_h
2#define INC_ross_extern_h
3
4#include <stdio.h>
5#include "buddy.h"
6#include "ross-types.h"
7#include "tw-opts.h"
8
9extern void tw_rand_init_streams(tw_lp * lp, unsigned int nstreams, unsigned int n_core_streams);
10
11/*
12 * tw-stats.c
13 */
14extern void tw_get_stats(tw_pe * me, tw_statistics *s);
15extern void tw_stats(tw_pe *me);
16extern void tw_all_lp_stats(tw_pe *me);
17
18/*
19 * ross-global.c
20 */
25extern tw_lpid g_tw_nlp;
26extern tw_lpid g_tw_total_lps; //Total LPs in the simulation
28extern tw_kpid g_tw_nkp;
29extern tw_lp **g_tw_lp;
30extern tw_kp **g_tw_kp;
31extern int g_tw_fossil_attempts;
32extern unsigned int g_tw_nRNG_per_lp;
33extern unsigned int g_tw_nRNG_core_per_lp; //Separate ROSS engine-only use RNG streams
37extern unsigned int g_tw_mblock;
38extern unsigned int g_tw_gvt_interval;
39extern unsigned long long g_tw_max_opt_lookahead;
40extern unsigned long long g_tw_gvt_realtime_interval;
41extern unsigned long long g_tw_gvt_interval_start_cycles;
42extern double g_tw_ts_end;
43extern unsigned int g_tw_sim_started;
44extern size_t g_tw_msg_sz;
45extern size_t g_tw_event_msg_sz;
46extern size_t g_tw_delta_sz;
47extern uint32_t g_tw_buddy_alloc;
49extern uint32_t g_tw_avl_node_count;
50
51extern unsigned int g_tw_lz4_knob;
52
53extern double g_tw_lookahead;
54extern double g_tw_min_detected_offset;
55
56extern tw_pe *g_tw_pe;
57extern unsigned int g_tw_events_per_pe;
58extern unsigned int g_tw_events_per_pe_extra;
59
60extern unsigned int g_tw_gvt_threshold;
61extern unsigned int g_tw_gvt_done;
62
63extern unsigned int g_tw_net_device_size;
64extern tw_peid g_tw_mynode;
66
67extern FILE *g_tw_csv;
68
71
72/*
73 * Cycle Counter variables
74 */
81
82/*
83 * clock-*
84 */
85extern const tw_optdef *tw_clock_setup();
86extern void tw_clock_init(tw_pe * me);
87extern tw_clock tw_clock_now(tw_pe * me);
88extern tw_clock tw_clock_read();
89extern unsigned long long g_tw_clock_rate;
90
91/*
92 * tw-event.c
93 */
94extern void tw_event_send(tw_event * event);
95extern void tw_event_rollback(tw_event * event);
96
97/*
98 * ross-inline.h
99 */
100static inline void tw_event_free(tw_pe *, tw_event *);
101static inline void tw_free_output_messages(tw_event *e, int print_message);
102static inline void * tw_event_data(tw_event * event);
103
104/*
105 * tw-lp.c
106 */
107extern tw_lp *tw_lp_next_onpe(tw_lp * last, tw_pe * pe);
108extern void tw_lp_settype(tw_lpid lp, tw_lptype * type);
109extern void tw_lp_onpe(tw_lpid index, tw_pe * pe, tw_lpid id);
110extern void tw_lp_onkp(tw_lp * lp, tw_kp * kp);
111extern void tw_init_lps(tw_pe * me);
112extern void tw_pre_run_lps(tw_pe * me);
113extern void tw_lp_setup_types();
114extern void tw_lp_suspend(tw_lp * lp, int do_orig_event_rc, int error_num );
115
116/*
117 * tw-kp.c
118 */
119extern void tw_kp_onpe(tw_kpid id, tw_pe * pe);
120extern void kp_fossil_remote(tw_kp * kp);
121extern tw_kp* tw_kp_next_onpe(tw_kp * last, tw_pe * pe);
122extern void tw_init_kps(tw_pe * me);
124extern void tw_kp_put_back_output_buffer(tw_out *out);
125
126extern void tw_kp_rollback_event(tw_event *event);
127extern void tw_kp_rollback_to(tw_kp * kp, tw_stime to);
128#ifdef USE_RAND_TIEBREAKER
129extern void tw_kp_rollback_to_sig(tw_kp * kp, tw_event_sig const * to_sig);
130#endif
131
132/*
133 * tw-pe.c
134 */
135extern void tw_pe_settype(const tw_petype * type);
136extern void tw_pe_init(void);
137extern void tw_pe_fossil_collect(void);
138
139/*
140 * tw-setup.c
141 */
142extern void tw_init(int *argc, char ***argv);
143extern void tw_define_lps(tw_lpid nlp, size_t msg_sz);
144extern void tw_run(void);
145extern void tw_end(void);
146extern tw_lpid map_onetype (tw_lpid gid);
147
148/*
149 * tw-sched.c
150 */
151extern void tw_sched_init(tw_pe * me);
152extern void tw_scheduler_sequential(tw_pe * me);
153extern void tw_scheduler_conservative(tw_pe * me);
154extern void tw_scheduler_optimistic(tw_pe * me);
155extern void tw_scheduler_optimistic_debug(tw_pe * me);
159
160/*
161 * tw-state.c
162 */
163extern void tw_snapshot(tw_lp *lp, size_t state_sz);
164extern long tw_snapshot_delta(tw_lp *lp, size_t state_sz);
165extern void tw_snapshot_restore(tw_lp *lp, size_t state_sz);
166
167/*
168 * tw-timing.c
169 */
170extern void tw_wall_now(tw_wtime * t);
171extern void tw_wall_sub(tw_wtime * r, tw_wtime * a, tw_wtime * b);
172extern double tw_wall_to_double(tw_wtime * t);
173
174/*
175 * tw-util.c
176 */
177
178#define TW_LOC __FILE__,__LINE__
179extern int tw_output(tw_lp *lp, const char *fmt, ...);
180extern void tw_error(const char *file, int line, const char *fmt, ...) NORETURN;
181extern void tw_warning(const char *file, int line, const char *fmt, ...);
182extern void tw_printf(const char *file, int line, const char *fmt, ...);
183extern void tw_calloc_stats(size_t *alloc, size_t *waste);
184extern void* tw_calloc(const char *file, int line, const char *for_who, size_t e_sz, size_t n);
185extern void tw_fprint_binary_array(FILE *output, char const * prefix, void const* array, size_t size);
186
187#endif
tw_pe * pe
Definition avl_tree.c:10
Buddy-system memory allocator.
struct buddy_list_bucket buddy_list_bucket_t
uint64_t tw_clock
Definition aarch64.h:6
int32_t * tw_seed
Definition rand-clcg4.h:7
unsigned long tw_peid
Definition ross-base.h:36
double tw_stime
Definition ross-base.h:39
uint64_t tw_lpid
Definition ross-base.h:49
#define NORETURN
Definition ross-base.h:15
void * tw_calloc(const char *file, int line, const char *for_who, size_t e_sz, size_t n)
Definition tw-util.c:206
tw_typemap_f g_tw_lp_typemap
double g_tw_min_detected_offset
Definition ross-global.c:59
tw_clock tw_clock_now(tw_pe *me)
Definition aarch64.c:35
void tw_stats(tw_pe *me)
Definition tw-stats.c:126
tw_clock g_tw_cycles_rbs
unsigned int g_tw_gvt_threshold
Definition ross-global.c:84
buddy_list_bucket_t * g_tw_buddy_master
Definition ross-global.c:40
tw_seed g_tw_rng_seed
Definition ross-global.c:34
static void * tw_event_data(tw_event *event)
void tw_rand_init_streams(tw_lp *lp, unsigned int nstreams, unsigned int n_core_streams)
Definition rand-clcg4.c:329
unsigned int g_tw_events_per_pe_extra
Definition ross-global.c:82
tw_clock g_tw_cycles_ev_abort
void tw_scheduler_optimistic(tw_pe *me)
Definition tw-sched.c:922
long tw_snapshot_delta(tw_lp *lp, size_t state_sz)
Definition tw-state.c:21
tw_clock tw_clock_read()
Definition bgl.c:16
void tw_pe_init(void)
Definition tw-pe.c:32
const tw_optdef * tw_clock_setup()
Definition aarch64.c:20
tw_lpid map_onetype(tw_lpid gid)
Definition tw-setup.c:594
tw_pe * g_tw_pe
Definition ross-global.c:79
tw_clock g_tw_cycles_gvt
static void tw_free_output_messages(tw_event *e, int print_message)
tw_lptype * g_tw_lp_types
void tw_pe_fossil_collect(void)
Definition tw-pe.c:68
void tw_kp_rollback_to_sig(tw_kp *kp, tw_event_sig const *to_sig)
tw_lp ** g_tw_lp
Definition ross-global.c:28
unsigned int g_tw_lz4_knob
Definition ross-global.c:45
unsigned long long g_tw_clock_rate
void tw_fprint_binary_array(FILE *output, char const *prefix, void const *array, size_t size)
Prints content of memory into hexadecimal.
Definition tw-util.c:261
void tw_wall_sub(tw_wtime *r, tw_wtime *a, tw_wtime *b)
Definition tw-timing.c:14
tw_kpid g_tw_nkp
Definition ross-global.c:27
void tw_init_kps(tw_pe *me)
Definition tw-kp.c:179
void tw_get_stats(tw_pe *me, tw_statistics *s)
Definition tw-stats.c:36
static void tw_event_free(tw_pe *, tw_event *)
unsigned int g_tw_events_per_pe
Definition ross-global.c:80
unsigned long long g_tw_gvt_interval_start_cycles
Definition ross-global.c:70
void tw_lp_settype(tw_lpid lp, tw_lptype *type)
Definition tw-lp.c:38
void tw_kp_rollback_to(tw_kp *kp, tw_stime to)
Definition tw-kp.c:59
tw_kp ** g_tw_kp
Definition ross-global.c:29
void tw_kp_rollback_event(tw_event *event)
Definition tw-kp.c:104
void tw_error(const char *file, int line, const char *fmt,...)
Definition tw-util.c:77
void kp_fossil_remote(tw_kp *kp)
void tw_run(void)
Definition tw-setup.c:391
unsigned int g_tw_net_device_size
Definition ross-global.c:91
tw_lp * tw_lp_next_onpe(tw_lp *last, tw_pe *pe)
void tw_lp_setup_types()
Definition tw-lp.c:11
void tw_init(int *argc, char ***argv)
Definition tw-setup.c:53
map_custom_f g_tw_custom_initial_mapping
Definition ross-global.c:21
tw_peid g_tw_mynode
Definition ross-global.c:92
int tw_output(tw_lp *lp, const char *fmt,...)
Definition tw-util.c:10
uint32_t g_tw_buddy_alloc
Definition ross-global.c:39
void tw_scheduler_sequential_rollback_check(tw_pe *me)
Definition tw-sched.c:1111
FILE * g_tw_csv
Definition ross-global.c:95
map_local_f g_tw_custom_lp_global_to_local_map
Definition ross-global.c:20
size_t g_tw_event_msg_sz
Definition ross-global.c:47
void tw_pe_settype(const tw_petype *type)
Definition tw-pe.c:9
tw_clock g_tw_cycles_ev_proc
tw_clock g_tw_cycles_ev_queue
unsigned int g_tw_nRNG_per_lp
Definition ross-global.c:31
size_t g_tw_msg_sz
Definition ross-global.c:37
unsigned int g_tw_nRNG_core_per_lp
Definition ross-global.c:32
tw_lpid g_tw_rng_default
Definition ross-global.c:33
void tw_printf(const char *file, int line, const char *fmt,...)
Definition tw-util.c:64
tw_seed g_tw_core_rng_seed
Definition ross-global.c:35
tw_lp_map g_tw_mapping
Definition ross-global.c:22
void tw_pre_run_lps(tw_pe *me)
Definition tw-lp.c:147
unsigned int g_tw_gvt_done
Definition ross-global.c:85
void tw_calloc_stats(size_t *alloc, size_t *waste)
Definition tw-util.c:123
void tw_kp_onpe(tw_kpid id, tw_pe *pe)
Definition tw-kp.c:4
void tw_scheduler_conservative(tw_pe *me)
Definition tw-sched.c:778
void tw_lp_onkp(tw_lp *lp, tw_kp *kp)
Definition tw-lp.c:73
tw_lpid g_tw_nlp
Definition ross-global.c:24
tw_lpid g_tw_total_lps
Definition ross-global.c:25
tw_peid g_tw_masternode
Definition ross-global.c:93
void tw_wall_now(tw_wtime *t)
Definition tw-timing.c:7
void tw_init_lps(tw_pe *me)
Definition tw-lp.c:83
void tw_warning(const char *file, int line, const char *fmt,...)
Definition tw-util.c:93
void tw_scheduler_optimistic_realtime(tw_pe *me)
Definition tw-sched.c:972
void tw_end(void)
Definition tw-setup.c:476
uint32_t g_tw_avl_node_count
Definition ross-global.c:41
void tw_snapshot_restore(tw_lp *lp, size_t state_sz)
Definition tw-state.c:55
size_t g_tw_delta_sz
Definition ross-global.c:38
void tw_event_send(tw_event *event)
Definition tw-event.c:15
void tw_kp_put_back_output_buffer(tw_out *out)
Definition tw-kp.c:223
unsigned int g_tw_gvt_interval
Definition ross-global.c:67
void tw_lp_suspend(tw_lp *lp, int do_orig_event_rc, int error_num)
Definition tw-lp.c:227
unsigned int g_tw_mblock
Definition ross-global.c:66
void tw_scheduler_optimistic_debug(tw_pe *me)
Definition tw-sched.c:1028
unsigned int g_tw_sim_started
Definition ross-global.c:36
void tw_event_rollback(tw_event *event)
Definition tw-event.c:221
void tw_clock_init(tw_pe *me)
Definition aarch64.c:28
void tw_all_lp_stats(tw_pe *me)
Definition tw-stats.c:248
unsigned long long g_tw_gvt_realtime_interval
Definition ross-global.c:69
void tw_scheduler_rollback_and_cancel_events_pe(tw_pe *pe)
Definition tw-sched.c:529
double tw_wall_to_double(tw_wtime *t)
Definition tw-timing.c:27
void tw_scheduler_sequential(tw_pe *me)
Definition tw-sched.c:691
tw_synch g_tw_synchronization_protocol
Definition ross-global.c:19
void tw_define_lps(tw_lpid nlp, size_t msg_sz)
Definition tw-setup.c:264
double g_tw_lookahead
Definition ross-global.c:53
void tw_sched_init(tw_pe *me)
Definition tw-sched.c:477
tw_lpid g_tw_lp_offset
Definition ross-global.c:26
unsigned long long g_tw_max_opt_lookahead
Definition ross-global.c:68
double g_tw_ts_end
Definition ross-global.c:72
tw_out * tw_kp_grab_output_buffer(tw_kp *kp)
Definition tw-kp.c:210
tw_kp * tw_kp_next_onpe(tw_kp *last, tw_pe *pe)
void tw_lp_onpe(tw_lpid index, tw_pe *pe, tw_lpid id)
Definition tw-lp.c:57
int g_tw_fossil_attempts
Definition ross-global.c:30
void tw_snapshot(tw_lp *lp, size_t state_sz)
Definition tw-state.c:9
tw_clock g_tw_cycles_cancel
Definition of ROSS basic types.
tw_peid tw_kpid
Definition ross-types.h:55
tw_lpid(* tw_typemap_f)(tw_lpid gid)
Definition ross-types.h:109
void(* map_custom_f)(void)
Definition ross-types.h:85
tw_lp_map
Definition ross-types.h:47
tw_lp *(* map_local_f)(tw_lpid)
Definition ross-types.h:84
enum tw_synch_e tw_synch
Definition ross-types.h:45
struct timeval tw_wtime
Definition tw-timing.h:4
Event Stucture.
Definition ross-types.h:277
LP State Structure.
Definition ross-types.h:336
Function Pointers for ROSS Event Handlers.
Definition ross-types.h:97
Rollback-aware output mechanism.
Definition ross-types.h:246
Holds the entire PE state.
Definition ross-types.h:416
Virtual Functions for per PE ops.
Definition ross-types.h:69
Statistics tallied over the duration of the simulation.
Definition ross-types.h:117