MONITOR(3)
NAME
Monitor Routines - AIMS Instrument Directives
DESCRIPTION
In addition to automatically inserting monitor routines into
instrumented code, AIMS provides the facility for the user
to manually direct the insertion of instrumentation into the
application code to be instrumented. Four types of instru-
ment directives are provided:
1) User Defined Code Blocks.
2) User Defined Code Points.
3) Trace and Data Flush Control.
4) Topology Directives.
All of the AIMS Instruement Directives may be placed in the
source code as one would insert a call to a subroutine. An
Example in Fortran would be:
CALL insert_marker('Starting loop')
While in C the same directive would be:
insert_marker("Starting loop");
These calls are parsed by the AIMS instrumentor and are
translated into calls which act as monitor sensors within
the instrumented code. If you insert any of these calls
into your source code, you will need to resolve these calls
for the link phase of your uninstrumented code. The AIMS
distribution provides stub files (in both FORTRAN & C) for
the resolution of these directives in the uninstrumented
code. Compilation and link of the stub.c or stub.f file
located within the misc sub-directory will resolve any unde-
fines for the uninstrumented code.
User Defined Code Blocks
begin_block("Block Name")
end_block("Block Name")
These directives are placed at the beginning and end of a
user defined block of code. These blocks are very useful in
defining major phases of an application. The string name
for this block will be entered into the AIMS application
database by xinstrument and be recognized by the VK and
Tally. Great care should be taken to insure that the blocks
are properly balanced.
User Defined Code Points
insert_marker("Marker Name")
This directive can be used to get timing information at any
specific point in the code (where you can call a subrou-
tine). This directive can be very useful in marking the
execution of exceptions or in determining process
synchronization.
Trace And Data Flush Control
begin_trace()
end_trace()
flush_trace()
In some performance monitoring situations it may be useful
for the user to manually control the trace process and the
flushing of the trace data to disk. These directives permit
the user to specify points within the code where tracing may
begin and end. This is very useful for the user who is con-
cerned with one specific area of the code. This user may
focus tracing upon this node first by disabling the tracing
automatically set by xinstrument just after the start of the
program and then by bracketing the desired area of study
with begin_trace and end_trace directives.
The flushing of data may also be specified for one point
within the program through the use of the flush_trace()
directive.
Topology Directives
define_grid(rows,cols)
define_grid_node(row,col)
These directives permit the user to define an algorithmic
grid topology, which may be displayed by the VK's Boxes
(Grid) view. That view displays processor node in a rows X
cols two dimensional grid as defined by the define_grid
directive. The define_grid() directive need only be called
by one processor of the parallel application. As the name
implies, this directive assigns the dimensions to the topol-
ogy. After the define_grid directive is called, each node
should assign itself a position within the two dimensional
topology through the define_grid_node() directive.
SEE ALSO
AIMS(1), xinstrument(1), batch_inst(1)
The AIMS Reference Manual
AIMS Release 3.6 Last change: 5 January 1997