|
INSEE 05.04.2011
Interconnection Nertworks Simulation and Evaluation Environment
|
Main function of the FSIN simulator. More...

Functions | |
| int | main (int argc, char *argv[]) |
Variables | |
| long | r_seed |
| Random Seed. | |
| double | load |
| The provided injected load. | |
| double | trigger_rate |
| Probability to trigger new packets when a packet is received. | |
| long | trigger_max |
| Maximum of packets triggered. | |
| long | trigger_min |
| Minimum of packets triggered. | |
| long | trigger_dif |
| Random interval == 1 + trigger_max - trigger_min. | |
| long | ndim |
| long | radix |
| Radix of each router. | |
| long | nstages |
| Number of stages for indirect topologies. | |
| long | stDown |
| Number of links down in a slim/thin tree. It also refeers to the number of nodes attached to a switching element in fattree and indirect cube . | |
| long | stUp |
| Number of links up in a slim tree. | |
| long | NUMNODES |
| Total number of nodes. | |
| long | n_ports |
| Total number of ports in each router. | |
| long | nprocs |
| Total number nodes that are able to inject. | |
| long | nodes_x |
| Nodes in dimension X. | |
| long | nodes_y |
| Nodes in dimension Y. | |
| long | nodes_z |
| Nodes in dimension Z. | |
| long | nchan |
| Number of Virtual Channels. | |
| long | nways |
| Number of ways. (unidir. / bidir.) | |
| long | ninj |
| Number of injectors in each router. | |
| long | pkt_len |
| Length of FSIN packets in phits. | |
| long | phit_size |
| Size, in bytes, of a phit. Used in application-driven simulation for splitting mpi messages into packets. | |
| long | buffer_cap |
| Transit buffer capacity (in packets). | |
| long | binj_cap |
| Injection buffer capacity (in packets). | |
| long | pnodes_x |
| Nodes in dimension X of the submesh for icube placement. | |
| long | pnodes_y |
| Nodes in dimension Y of the submesh for icube placement. | |
| long | pnodes_z |
| Nodes in dimension Z of the submesh for icube placement. | |
| long | faults |
| Number of broken links. | |
| long | tr_ql |
| long | inj_ql |
| traffic_pattern_t | pattern |
| topo_t | topo |
| vc_management_t | vc_management |
| routing_t | routing |
| req_mode_t | req_mode |
| arb_mode_t | arb_mode |
| cons_mode_t | cons_mode |
| inj_mode_t | inj_mode |
| placement_t | placement |
| long | shift |
| Number of places for shift placement. | |
| long | trace_nodes |
| Number of tasks in the trace. | |
| long | trace_instances |
| Number of instances of the trace to simulate. | |
| char | placefile [128] |
| bool_t | parallel_injection |
| Allows/Disallows the parallel injection (inject some packets in the same cycle & router). | |
| long | bub_adap [2] |
| Bubble to adaptive channels. | |
| long | bub_x |
| Bubble to X Dimension Escape Channels. Usually equal to Y,Z. | |
| long | bub_y |
| Bubble to Y Dimension Escape Channels. Usually equal to X,Z. | |
| long | bub_z |
| Bubble to Z Dimension Escape Channels. Usually equal to X,Y. | |
| double | intransit_pr |
| Priority given to in-transit traffic. | |
| double | global_cc |
| Global congestion control. Percent of the system recurses used. | |
| long | update_period |
| Period taken to calculate the global ocupation. | |
| unsigned long | timeout_upper_limit |
| Timeout limit to enter in congested mode. | |
| unsigned long | timeout_lower_limit |
| Timeout limit to leave congested mode. | |
| long | monitored |
| Monitored node. | |
| long | plevel |
| long | pinterval |
| Interval to print information about the system state. | |
| long | pheaders |
| long | bheaders |
| bool_t | extract |
| Extract packets from head of the injection queue when they cannot be injected. | |
| bool_t | drop_packets |
| Drop packets that have no room in the injection queue. | |
| bool_t | shotmode |
| Are the system running in shotmode. | |
| long | shotsize |
| Size of each shot (in packets per node) | |
| long | total_shot_size |
| Number of packets in each shot. | |
| long | msglength |
| The length of the long messages (in packets) for bimodal traffic. | |
| double | lm_prob |
| Probability of inject a long message in bimodal traffic(in packets). | |
| double | lm_percent |
| Probability of inject a long message in bimodal traffic(in messages). | |
| double | msg_sent_count [3] |
| Number of Message sent of each type. (bimodal stats) | |
| double | msg_injected_count [3] |
| Number of Message injected of each type. (bimodal stats) | |
| double | msg_rcvd_count [3] |
| Number of Message received of each type. (bimodal stats) | |
| double | msg_acum_delay [3] |
| Accumulative delay of each message type. (bimodal stats) | |
| double | msg_acum_inj_delay [3] |
| Accumulative injection delay of each message type. (bimodal stats) | |
| double | msg_acum_sq_delay [3] |
| Accumulative square delay of each message type. (bimodal stats) | |
| double | msg_acum_sq_inj_delay [3] |
| Accumulative square injection delay of each message type. (bimodal stats) | |
| long | msg_max_delay [3] |
| Maximum delay of each message type. (bimodal stats) | |
| long | msg_max_inj_delay [3] |
| Maximum injection delay of each message type. (bimodal stats) | |
| FILE * | fp |
| A pointer to a file. Used for several purposes. | |
| char | file [128] |
| long | num_executions |
| Number of executions, appended to the output filename. | |
| char | trcfile [128] |
| long | samples |
| Number of samples (batchs or shots) to take from the current Simulation. | |
| long | batch_time |
| Sampling period. | |
| long | min_batch_size |
| Minimum number of reception in a batch to save stats. | |
| double | threshold |
| Threshold to accept convergency. | |
| long | warm_up_period |
| Number of 'oblivious' cycles until start convergency asurement simulation. | |
| long | warmed_up |
| The cycle in wich warming are really finished. | |
| long | conv_period |
| Convergency estimation sampling period. | |
| long | max_conv_time |
| Maximum time for Convergency estimation. | |
| router * | network |
| An array of routers containing the system. | |
| long | sim_clock |
| Simulation clock. | |
| double | sent_count = 0.0 |
| Number of packets sent. (stats) | |
| double | injected_count = 0.0 |
| Number of packets injected. (stats) | |
| double | rcvd_count = 0.0 |
| Number of packets received. (stats) | |
| double | last_rcvd_count = 0.0 |
| Number of packets received before the start of the present batch. (stats) | |
| double | dropped_count = 0.0 |
| Number of packets dropped. (stats) | |
| double | transit_dropped_count = 0.0 |
| Number of in-transit packets dropped. (stats) | |
| double | last_tran_drop_count = 0.0 |
| Number of in-transit packets dropped before the start of the present batch. (stats) | |
| double | inj_phit_count = 0.0 |
| Number of phits sent. (stats) | |
| double | sent_phit_count = 0.0 |
| Number of phits injected. (stats) | |
| double | rcvd_phit_count = 0.0 |
| Number of phits received. (stats) | |
| double | dropped_phit_count = 0.0 |
| Number of phits dropped. (stats) | |
| double | acum_delay = 0.0 |
| Accumulative delay. (stats) | |
| double | acum_inj_delay = 0.0 |
| Accumulative injection delay. (stats) | |
| double | acum_sq_delay = 0.0 |
| Accumulative square delay. (stats) | |
| double | acum_sq_inj_delay = 0.0 |
| Accumulative square injection delay. (stats) | |
| long | max_delay = 0 |
| Maximum delay. (stats) | |
| long | max_inj_delay = 0 |
| Maximum injection delay. (stats) | |
| double | acum_hops = 0.0 |
| Accumulative number of hops. (stats) | |
| batch_t * | batch |
| Array to save all the batchs' stats. | |
| double | global_q_u_current = 0.0 |
| double | global_q_u = 0.0 |
| long | aload |
| Provided load multiplied by RAND_MAX used in injection. | |
| long | lm_load |
| Actual long message load multiplied by RAND_MAX used in bimodal injection. | |
| long | trigger |
| Provided trigger_rate multiplied by RAND_MAX used in reactive traffic. | |
| long ** | destinations |
| Matrix containing map of source/destination pairs at consumption (destination). | |
| long ** | sources |
| Matrix containing map of source/destination pairs at injection (source). | |
| long * | con_dst |
| Histograms of distance at consumption (source). | |
| long * | inj_dst |
| Histograms of distance at injection (source). | |
| long | max_dst |
| Size of distance histograms. | |
| long * | source_ports |
| Array that contains the source ports for the monitored node. | |
| long * | dest_ports |
| Array that contains the destination ports for the monitored node. | |
| long * | port_utilization |
| Array that contains the port utilization of the monitored node. | |
| dim * | port_coord_dim |
| An array containig the dimension for each port. | |
| way * | port_coord_way |
| An array containig the direction (way) for each port. | |
| channel * | port_coord_channel |
| An array containig the number of virtual channel for each port. | |
| static time_t | end_time |
| Simulation finish time / date. | |
| bool_t | go_on = TRUE |
| While this is TRUE the simulation will go on! | |
| long | reseted = 0 |
| Number of resets. | |
| long | last_reset_time = 0 |
| Time in which the last reset has been performed. | |
| double | cons_load |
| Consumed load of the current simulation. | |
| double | inj_load |
| Injection load of the current simulation. | |
| void(* | run_network )(void) |
| port_type(* | select_input_port )(long i, long dest) |
| long(* | neighbor )(long ad, dim wd, way ww) |
| routing_r(* | calc_rr )(long source, long destination) |
| void(* | request_port )(long i, port_type s_p) |
| port_type(* | arbitrate_select )(long i, port_type d_p, port_type first, port_type last) |
| void(* | arbitrate_cons )(long i) |
| void(* | consume )(long i) |
| bool_t(* | check_rr )(packet_t *pkt, dim *d_d, way *d_w) |
| void(* | data_movement )(bool_t inject) |
| void(* | arbitrate )(long i, port_type d_p) |
Main function of the FSIN simulator.
| int main | ( | int | argc, |
| char * | argv[] | ||
| ) |
Main function.
Initializes the simulation & the network. Then runs the simulation & writes the results.
| argc | The number of parameters given in the command line. |
| argv | Array that constains all the parameters. |
Id of the router arbitration mechanism.
'Virtual' Function that performs the arbitration of the output ports.
| inject | It is TRUE if the injection has to be performed. |
| void(* arbitrate_cons)(long i) |
'Virtual' Function that arbritates the consumption of the arriven packets.
| i | The node in which the consumption is performed. |
'Virtual' Function that arbitrates the selection of an input port for an output port.
| i | The node in which the consumption is performed. |
| d_p | The destination port to arbitrate for. |
| first | The first input port that can use this output. |
| last | The next of the last input port that can use this input. |
| long bheaders |
Batch headers. A Bitmap to know what batch stats are printed in final summary. 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024 + 2048 + 4096 BatchTime AvDistance InjLoad AccLoad PacketSent PacketRcvd PacketDrop AvgDelay StDevDelay MaxDelay InjAvgDel InjStDvDel InjMaxDel
'Virtual' Function that calculates packet routing record.
| source | The source node of the packet. |
| destination | The destination node of the packet. |
'Virtual' Function that routes a packet.
| pkt | The packet to route. |
| d_d | The destination dimension is returned here. |
| d_w | The destination way is returned here. |
Id of the consumption mode.
| void(* consume)(long i) |
'Virtual' Function that performs consumption.
| i | The node in which the consumption is performed. |
| void(* data_movement)(bool_t inject) |
'Virtual' Function that performs the traffic movement in the network.
| inject | It is TRUE if the injection has to be performed. |
| char file[128] |
The output file name.
It will be appended one extension for each out: .mon for monitored node. .map for channel mapping. .hst for queue occupation histograms.
| double global_q_u = 0.0 |
The global queue occupation.
This is the value shown to the nodes and is updated every update_period cycles with the value of global_q_u_current.
| double global_q_u_current = 0.0 |
The global queue occupation.
This value is calculated each cycle.
Id of the injection mode.
| long inj_ql |
'Virtual' Function that performs the search of a neighbor node. Only used by direct topologies.
| ad | A node address. |
| wd | A dimension (X,Y or Z). |
| ww | A way (UP or DOWN). |
The traffic pattern Id.
| long pheaders |
Partial headers. A Bitmap to know what system stats are shown. 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024 clock inj_load cons_load av_delay delay_dev max_delay inj_delay i_d_dev i_dev_max netw. ocup queue_ocup
Id of the placement strategy.
| long plevel |
Print level - bitmap. 0 = Just final summary 1 = Source/destination Map 2 = port utilization Map 4 = Distance Histogram 8 = Histogram of port utilization 16 = Packet-level traces 32 = Phit-level traces 64 = Monitored node
Id of the request port mechanism.
| void(* request_port)(long i, port_type s_p) |
'Virtual' Function that prepares the request of an output port.
| i | The node in which the request is performed. |
| s_p | The source (input) port which is requesting the output port. |
| void(* run_network)(void) |
'Virtual' Function that runs the simulation.
| port_type(* select_input_port)(long i, long dest) |
'Virtual' Function that performs the selection of the injection ports.
| i | The node in wich the injection is performed. |
| dest | The destination of the packet. |
The topology Id.
| long tr_ql |
Transit queue length (in phits).
Equal to buffer_cap multiplied by pkt_len.
| char trcfile[128] |
The name of a file containing a trace for trace driven.
If the file is in .alog format & only will be considered message sending an reception (events -101 & -102). If the file is a dimemas trace only point to point operations and cpu intervals are considered. The FSIN trace format is also allowed.
Id of the Virtual Channel management mechanism.
1.7.4