Code Development

Compilers | Computing Tools | Debugging Tools | File Editors | MPI

Useful introductory information on LC's software environment is presented in the Software and Development Environment section of the Introduction to Livermore Computing Resources. Open Source and Released Software lists software development efforts that LC is sponsoring, developing, or in collaboration with. For system-specific information, see the software and development environment overview for the Linux Clusters.

Sequoia Resources

Code developers should visit the Sequoia Scalable Applications Project (SAP) for information on using LLNL's next-generation Sequoia supercomputer.


Numerous compilers are available to provide a rich programming environment for scientific and technical computing. For mainstream compilers such as Fortran, C, and C++, multiple versions are available, and in some cases, multiple IEEE and ISO specifications are supported by the different versions. A detailed list of single CPU, distributed memory, and shared memory compilers and their machine availability is provided in compilers currently installed on LC platforms. The HPC index provides links to compiler documentation for the compilers available on LC machines.

The LC Hotline will provide assistance if your code will not compile. Assistance is also available if you need to port your code to another platform.

GNU Make controls the generation of executables and other non-source files of a program from the program's source files. It is located in /usr/local/bin/gmake. PMAKE is a non-supported parallel MPI version of GNU Make.


Computing Tools

The Development Environment Group (DEG) provides a stable, usable, leading-edge parallel application development environment that enables users to improve the reliability and scalable performance of LLNL applications. DEG also works to make the computing tools reliable and scalable and helps users make effective use of the tools. The list of DEG Supported Software and Computing Tools for debugging, memory, trace generation and visualization, profiling, etc., provides the tool type and name, its location, the platforms on which it runs, and links to documentation.

Parallel tools are provided on most systems to take advantage of the parallel nature of the machines.

Additional Information


Debugging Tools

Debugger Usage Information
totalview firefox /usr/global/tools/totalview/release/help/html &
acroread /usr/global/tools/totalview/release/doc/pdf/* &
man -M /usr/global/tools/totalview/release/man totalview
totalview -h
ddt firefox '' &
acroread /usr/global/tools/ddt/default/*/doc/*.pdf &
less /usr/global/tools/ddt/default/*/doc/RELEASE-NOTES
use ddt; ddt -h
acroread /usr/local/tools/stat/doc/stat_quickstart.pdf
acroread /usr/local/tools/stat/doc/stat_userguide.pdf
man STAT
firefox /usr/local/tools/inspector/documentation/en/help/index.htm
man inspxe-cl
firefox /usr/local/tools/vtune/documentation/en/help/index.htm
man amplxe-cl
ddd info ddd
man ddd
ddd -h
gdb info gdb
man gdb
gdb -h
idb firefox /usr/local/tools/idb/doc/Doc_Index.htm &
man idb
idb -h
pathdb acroread /usr/local/tools/pathscale/share/doc/pathscale-pathdb-3.1/PathDB_UserGuide.pdf &
less /usr/local/tools/pathscale/share/doc/pathscale-pathdb-3.1/release_notes_pathdb.txt
man -M /usr/local/tools/pathscale/man pathdb
use pathscale-3.1; pathdb -h
pgdbg firefox /usr/local/tools/pgi/doc/index.htm &
man -M /usr/local/tools/pgi/man pgdbg
use pgi-8.0.1; pgdbg -help
  • TotalView, by TotalView Technologies, is a graphical debugger of distributed, multiprocess, multithreaded, C, C++, and F77/F90 codes. See the locally developed TotalView debugger tutorial and TotalView Quick Reference to learn how to run TotalView on serial, parallel, and batch jobs and how to attach to a running job. Several old TotalView releases are described in TotalView Release Features pages.
  • DDT, the Allinea Distributed Debugging Tool, is a gdb-based, graphical debugger of parallel C, C++, and Fortran codes.
  • STAT, the LLNL Stack Trace Analysis Tool, is a lightweight tool that is able to quickly gather, compare, and merge stack traces from a large-scale parallel application. STAT identifies equivalence classes of processes exhibiting similar behavior. The user then chooses one process from each equivalence class for fast root cause analysis in a full-featured debugger (TotalView or DDT).
  • Inspector, the Intel thread checking and memory debugging tool, replaces the old Thread Checker tool and can find common threading errors such as data races and deadlocks. The Inspector tool also adds memory debugging capabilities such as detecting memory corruption or memory leaks.
  • SSA, the Intel Static Security Analysis tool, is a static analysis tool built into the Intel compilers that can detect common coding errors, including security vulnerabilities.
  • Amplifier, the Intel VTune Amplifier tool, is a performance analysis tool for finding hotspots in serial and multithreaded codes. Note the installation on LC machines does not include the advanced hardware analysis capabilities.
  • DDD, the GNU DataDisplayDebugger, is a graphical front-end for command-line debuggers such as GDB, DBX, WDB, Ladebug, JDB, XDB, the Perl debugger, or the Python debugger. Besides "usual" front-end features such as viewing source texts, DDD also provides interactive graphical data display, where data structures are displayed as graphs.
  • GDB, the GNU Project Debugger, is a relatively powerful single-process, command-line debugger. It is suitable for quickly analyzing core files and attaching to a particular process.
  • IDB, the Intel debugger, is a full-featured symbolic source code application debugger that supports C, C++, and Fortran 77/90/95, and offers both a graphical user interface 9in dbx mode) and a command-line interface (in gdb mode).
  • PathDB, the PathScale debugger, provides a command-line interface and extensive support for debugging programs written in C, C++, and Fortran.
  • PGDBG, the Portland Group's Linux cluster debugger, is a distributed SMP debugger of C, C++, and Fortran. It can debug parallel-distributed MPI programs, thread-parallel SMP OpenMP (and Linuxthread) programs, and hybrid distributed SMP programs.

For more information, try man -k debug.

To isolate interactive debugging from login-node congestion, you can use the mxterm command to allocate nodes and launch an xterm from the pdebug partition, or the pbatch partition for large jobs. mxterm works on any cluster running Moab. Run mxterm for usage information.


File Editors

Many text editors are available on LC UNIX and Linux systems as well as desktop workstations. Most editors have a man page. Type man editor_name for usage information.

The following editors are available on most UNIX and/or Linux systems.

  • ed, red—standard line editors; red is a "restricted" ed because it can only edit files in the current directory and it cannot execute shell commands.
  • sed—a stream editor for batch processing of files.
  • vi—a visual editor; full screen; uses ed/ex line-mode commands for global file editing.
  • edit—a simple line editor.
  • ex—an extended line editor.
  • vim—Vi IMproved, a text editor that is upward compatible to vi.
  • Emacs—GNU project Emacs editor.
  • XEmacs—a highly customizable text editor (Emacs: the next generation).
  • NEdit—an X-windows text editor.
  • xedit—a simple text editor for X-windows.
  • kwrite, kedit—editors bundled with the KDE (Linux) desktop environment.


See information on the Message Passing Interface (MPI), including documentation on the MPI specification, FAQs, details about how to build MPI codes on LC systems, and an overview of efforts and resources available for MPI within LC.