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


Appendix C Environment Variables

The coNCePTuaL compiler ( ncptl) honors the following environment variables:

NCPTL_BACKEND

Name a default backend for the compiler to use. For example, setting NCPTL_BACKEND to ‘c_udgram’ tells ncptl to use the c_udgram backend unless the --backend compiler option designates a different backend. See Compiling coNCePTuaL programs, for more information.

NCPTL_PATH

Specify a colon-separated list of directories in which to search for compiler backends. See Compiling coNCePTuaL programs, for more information.

The following environment variables are honored when running a coNCePTuaL program (any backend):

NCPTL_CHECKPOINT

Specify the minimum number of seconds between log-file checkpoints (default: 60). The coNCePTuaL run-time library buffers logged data in memory because coNCePTuaL programs are not restricted to writing data in a top-to-bottom, left-to-right format. The following program, for example, writes row 9 , column 2 before writing row 5 , column 1:

FOR EACH i IN {1, ..., 10} {IF i IS EVEN THEN TASK 0 LOGS i
AS "Even numbers" THEN TASK 0 LOGS i AS "All numbers"}

Buffering data in memory enables that sort of “two-dimensional” logging. However, it is not robust to computer crashes or uncatchable signals (e.g., SIGKILL). Consequently, every LOGS statement (see Writing to a log file) that is executed at least NCPTL_CHECKPOINT seconds after the previous one forces the coNCePTuaL run-time library to write its partial data to the log file. Specifically, the library flushes its partial-data buffers then rewinds the write pointer to the beginning of that partial data. Hence, the partial data is overwritten by a later checkpoint or by the complete data set.

Smaller values of NCPTL_CHECKPOINT provide more robustness to crashes and uncatchable signals. Larger values put less stress on the filesystem. As a special case, if NCPTL_CHECKPOINT is set to ‘0’ then log-file checkpointing is disabled altogether.

NCPTL_FAST_INIT

If set to ‘1’, more quickly initialize the run-time library by skipping the timer calibration and measurement steps. As a consequence, all timing measurements will be meaningless. NCPTL_FAST_INIT may be useful during the development of a coNCePTuaL program or compiler backend to enable shorter turnaround times. If set to ‘0’, NCPTL_FAST_INIT forces a thorough initialization even for backends that do not rely on timing measurements, for instance the picl backend (see The picl backend). See Variables and data types, for more information.

NCPTL_LOG_DELAY

Artificially delay each log-file open and flush operation by a random number of milliseconds in the range 0… NCPTL_LOG_DELAY (default: ‘0’). For example, if 1000 CPUs share a single filesystem, an NCPTL_LOG_DELAY of ‘2000’ (i.e., 2 seconds) will probabilistically ensure that a log-file creation request will be issued only once every 2000/1000 = 2 milliseconds instead of all at once. NCPTL_LOG_DELAY is intended to help coNCePTuaL programs run atop broken filesystems that are unable to handle large numbers of concurrent accesses—an all-too-common problem on large-scale workstation clusters and parallel computers in which hundreds or thousands of diskless compute nodes compete for access to the same filesystem.

NCPTL_LOG_ONLY

Limit the set of processes that produce log files. NCPTL_LOG_ONLY accepts a comma-separated list of dash-separated process ranges such as ‘0-3,12-16,24,25,32-48’. Only processes included in the list produce log files. See Running coNCePTuaL programs, for more information.

NCPTL_NOFORK

If set, inhibit the use of fork(), system() , popen(), and other process-spawning functions. The result is that some information will be omitted from the log-file prologue. NCPTL_NOFORK is intended to be used on systems in which such functions corrupt messaging-layer state, hang or crash processes, or wreak other such havoc.


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

Scott Pakin, pakin@lanl.gov