| 
    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