Next: , Previous: , Up: Usage   [Contents][Index]

3.3 Supplied backends

The coNCePTuaL 1.5.1 distribution includes the following compiler backends:


Generate ANSI C code with no communication support.


Generate ANSI C code with calls to the MPI library for communication.


Generate ANSI C code that communicates using Unix-domain (i.e., local to a single machine) datagram sockets.


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.


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 a coNCePTuaL program, simulating any number of processors and checking for common problems such as deadlocks and mismatched sends and receives.


Output statistics of a program’s execution—message tallies, byte counts, communication peers, network bisection crossings, event tallies, etc.


Output in the PICL trace format a logical-time trace of a coNCePTuaL program’s communication pattern.


Output in the Paraver trace format a logical-time trace of a coNCePTuaL program’s communication pattern.


Use LaTeX to produce an Encapsulated PostScript visualization of a program’s communication pattern.


Output a program’s parse tree in the Graphviz dot format.


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.

Next: , Previous: , Up: Usage   [Contents][Index]

Scott Pakin,