Next: Running coNCePTuaL programs, Previous: Compiling coNCePTuaL programs, Up: Usage [Contents][Index]
The coNCePTuaL 1.5.1b distribution includes the following compiler backends:
c_seq
Generate ANSI C code with no communication support.
c_mpi
Generate ANSI C code with calls to the MPI library for communication.
c_udgram
Generate ANSI C code that communicates using Unix-domain (i.e., local to a single machine) datagram sockets.
c_trace
Instrument a C-based backend either to include a call to
fprintf()
before every program event or to
utilize the
curses library to display graphically the
execution of a selected task.
c_profile
Instrument a C-based backend either to write event timings and tallies to each log file or to the standard error device if the coNCePTuaL program doesn’t use a log file.
interpret
Interpret a coNCePTuaL program, simulating any number of processors and checking for common problems such as deadlocks and mismatched sends and receives.
stats
Output statistics of a program’s execution—message tallies, byte counts, communication peers, network bisection crossings, event tallies, etc.
picl
Output in the PICL trace format a logical-time trace of a coNCePTuaL program’s communication pattern.
paraver
Output in the Paraver trace format a logical-time trace of a coNCePTuaL program’s communication pattern.
latex_vis
Use LaTeX to produce an Encapsulated PostScript visualization of a program’s communication pattern.
dot_ast
libsea_ast
Output a program’s parse tree in the LibSea graph file format.
coNCePTuaL employs a highly modular software structure for its backends. Many of the backends listed above are built atop other backends. The following figure illustrates the current set of dependencies:
Some dependencies are defined as a static characteristic of a
backend. For example, the
c_mpi
backend is hardwired to derive some of its
functionality from
c_generic
. Other dependencies are determined
dynamically. For example, the
c_trace
backend must be instructed to derive its
functionality from one of
c_profile
,
c_mpi
,
c_udgram
, or
c_seq
. (See The c_trace
backend, for more information on the
c_trace
backend.)
Except for
c_generic
, all of the compiler backends are described
in turn in the following sections. The
c_generic
backend is unique because it is used
exclusively to construct C-based backends; it does nothing by
itself. See Backend creation, for
a detailed description of
c_generic
.
Each backend accepts a --help option that explains the backend’s command-line options. The easiest way to request help from a specific backend is with ‘ncptl --backend=backend -- --help’. The empty -- option, mentioned in Compiling coNCePTuaL programs, prevents the compiler from intercepting --help and providing the standard, backend-independent information.
• The c_seq backend: | ANSI C, sequential code only | |
• The c_mpi backend: | ANSI C + MPI | |
• The c_udgram backend: | ANSI C + Unix-domain datagram sockets | |
• The c_trace backend: | Instrument any of the above with tracing output | |
• The c_profile backend: | Profile events in any of the above | |
• The interpret backend: | Interpret coNCePTuaL programs | |
• The stats backend: | Report statistics on a program’s execution | |
• The picl backend: | Trace a coNCePTuaL program’s logical execution | |
• The paraver backend: | Trace a coNCePTuaL program’s logical execution | |
• The latex_vis backend: | Visualize a communication pattern | |
• The dot_ast backend: | Graphviz DOT format (show abstract-syntax tree) | |
• The libsea_ast backend: | CAIDA LibSea format (show abstract-syntax tree) |
Next: Running coNCePTuaL programs, Previous: Compiling coNCePTuaL programs, Up: Usage [Contents][Index]