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

Appendix C Environment Variables

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


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.


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):


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.


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.


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.


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.


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,