|
INSEE 05.04.2011
Interconnection Nertworks Simulation and Evaluation Environment
|
Tools for trace guided simulation. More...

Defines | |
| #define | FILE_TIME 73 |
| Default delay for accessing a file. | |
| #define | FILE_SCALE 3 |
| Default scale for file accesses based on the size. | |
| #define | op_per_cycle 50 |
| balances the computation time (cpu time/op_per_cycle)==fsin cycles. | |
| #define | cpuspeed 1e6 |
| The cpu speed in Mhz. | |
| #define | BUFSIZE 131072 |
| The size of the buffer,. | |
Functions | |
| void | read_dimemas () |
| void | read_fsin_trc () |
| void | read_alog () |
| void | random_placement () |
| void | consecutive_placement () |
| void | shuffle_placement () |
| void | shift_placement () |
| void | column_placement () |
| void | quadrant_placement () |
| void | diagonal_placement () |
| void | icube_placement () |
| void | file_placement () |
| void | read_trace () |
| void | run_network_trc () |
Variables | |
| long ** | translation |
| A matrix containing the simulation nodes for each trace task. | |
Tools for trace guided simulation.
In this file are the functions for reading trace files & the trace guided simulation running module. This file is only used when compiling with TRACE_SUPPORT != 0
FSIN Functional Simulator of Interconnection Networks Copyright (2003-2011) J. Miguel-Alonso, J. Navaridas
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
| void column_placement | ( | ) |
Places the tasks consecutively in a cube column.
| void consecutive_placement | ( | ) |
Places the tasks consecutively (node 0 in switch 0 port 0; node 1 in switch 0 port 1, and so on). same as row
| void diagonal_placement | ( | ) |
Places the tasks in a diagonal. only 1 instance and 2D torus.
| void file_placement | ( | ) |
Places the tasks as defined in #placefile. The format of this file is very simple: node_id, task_id, instance_id separated by one or more of the following characters: '<spc>' '<tab>' '_' ',' '.' ':' '-' '>'
| void icube_placement | ( | ) |
Places the tasks in an indirect cube, keeping a submesh attached to each switch.
| void quadrant_placement | ( | ) |
Places the tasks in quadrants, isolated subtori, half the size in each dimension.
2 q. for 1-D, 4 q. for 2-D and 8 q. for 3-D.
| void random_placement | ( | ) |
Places the tasks in a random way.
| void read_alog | ( | ) |
Reads a trace from a file.
Read a trace from an alog file whose name is in global variable trcfile It only consideres events with id '-101'(send) or '-102'(receive). The alog format is as follows: p2p_op process0 task0 process1 task1 timestamp tag size where: p2p_op: is the point to point operation, i.e. '-101'(send) or '-102'(receive) process0 task0: are the identification of the local process and task process1 task1: are the identification of the remote process and task timestamp: is the timestamp where the event occurred, its value will be dropt tag: is the tag of the mpi operation, it will be use to match sends and receptions size: the size of the message in bytes. it will be translated to number of packets
Collective operations are not processed, so extended traces showing the point-2-point communications within the collectives should be used.
| void read_dimemas | ( | ) |
Reads a trace from a dimemas file.
Read a trace from a dimemas file whose name is in global variable trcfile It only consideres events for CPU and point to point operations. File I/O could be considered as a cpu event if FILEIO is defined.
< The number of nodes is read here.
< Dimemas record separator.
< Separators to get the task info.
< Operation id.
< Global operation id(for collectives), point-to-point type.
< Task id.
< Thread id.
< The other task id. (sender or receiver)
< The communicator id.
< CPU time(in seconds).
< Message size(in bytes).
< Tag of the MPI operation.
< Communicator id.
< Root task in collectives.
< Root thread in collectives.
< Bytes sent in collectives.
< Bytes received in collectives.
< The read event.
Could try to open traces in ALOG or FSIN trc format instead of panic....
These are communication with different semantic values of the MPI. In study...
| void read_fsin_trc | ( | ) |
Reads a trace from a file.
Read a trace from a fsin trc file whose name is in global variable trcfile This format only takes in account 'c' CPU, 's' SEND, 'r' RECV, events.
| void read_trace | ( | ) |
The trace reader dispatcher selects the format type and calls to the correct trace read.
The selection reads the first character in the file. This could be: '#' for dimemas, 'c', 's' or 'r' for fsin trc, and '-' for alog (in complete trace the header is "-1", or in filtered trace could be "-101" / "-102"). This is a very naive decision, so we probably have to change this, but for the moment it works.
| void run_network_trc | ( | ) |
Runs simulation using a trace file as workload.
In this mode, simulation are running until all the events in the nodes queues are done. It prints partial results each pinterval simulation cycles & calculates global queues states for global congestion control.
| void shift_placement | ( | ) |
Places the tasks consecutively but shifting a given number of places (node 0 in switch 0 port 0; node 1 in switch 0 port 1, and so on).
| void shuffle_placement | ( | ) |
Places the tasks alternatively one in each switch (node 0 in switch 0 port 0; node 1 in switch 1 port 0, and so on). (for tree and indirect cube )
1.7.4