Environment Setup for CLASSE Releases
Releases builds of Bmad, CESR control system, and other software on the
CLASSE Linux Computers. CLASSE Releases are only used by people working on the CLASSE network and is separate from Bmad on GitHub.
Access to the
CLASSE network requires a
CLASSE account. Releases are for "
ON-Site" work.
CLASSE Release Overview
About once a day (done in the morning at 3 am), a script is run on the CLASSE Linux cluster that does the following:
- Creates a directory in the $ACC_BASE directory. This directory will have a name of the form: cesr_YYYY_MMDD_d where YYYY is the year, MM is the month, and DD is the day.
- Checks out code from the ACC Code Repository into this newly created directory
- Compiles the libraries and compiles/links programs.
The directory so created along with the libraries, executables, etc within it is known as a
Release. Each
Release is named and dated and can be
selected for use when running programs or building user created code. Old Releases are periodically purged.
At any one time, three Releases are tagged with the names:
nightly,
devel, and
current. Which releases are so tagged is changed periodically.
- The nightly Release is the latest successful build. nightly builds are kept for a week.
- The devel Release is the latest stable Release generated on or about the last Tuesday. A stable Release is one where there have been no reported bugs. devel builds are kept for two months.
- The current Release is a former devel Release generated on or about the first Tuesday of the previous month. The current build is kept for two years.
Since
current Releases are older than
devel Releases, in theory the latest
current Release should be more stable than the latest
devel Release since there has been more time for bugs to have been reported. In practice, this advantage is typically more than offset by improvements to the code base that are happening constantly.
Packages
Third party libraries (for example the LAPACK, Numerical Recipes, etc.) that are part of the ACC Code Repository are called "
packages" and are treated differently from Cornell developed "local" libraries. The reason for this comes from the fact that these libraries are infrequently modified so that they do not have to be compiled on a daily basis. The package libraries are thus compiled separately from the
Release build which only involves the local libraries.
When any one of the package libraries has been updated, all the package libraries are checked out from the ACC Code Repository and compiled in a subdirectory of
$ACC_BASE with a name of the form:
packages_YYYY_MMDD_d where YYYY is the year, MM is the month, and DD is the day. Then, when a
Release is built, a link is made to current "
active" package so that the local code is compiled against the appropriate package libraries. The active package is determined by a soft link called
packages in the
$ACC_BASE directory.
For most purposes, one can ignore the fact that the package libraries are compiled separately from the local libraries since the appropriate bookkeeping is built into the system.
Enable the ACC Environment in Your Shell
Each shell session (terminal window) you spawn will need to have the ACC environment set up within it in order to use release components of the "
Active" Release. The Active Release is the release the ACC Build System will link against when building code. For this reason, it is wise to place the environment setup and release selection script invocation into your login script.
For those people who work with the Online CESR control system: Please follow the instructions as described in https://cesrwww.lepp.cornell.edu/wiki/CESR/CesrUserLoginScripts
For those who do not develop on a Online CESR system: Add the following your ".bashrc":
#
ACC_SETUP_SCRIPT=/nfs/acc/libs/util/acc_vars.sh
if ( [ -f ${ACC_SETUP_SCRIPT} ] ); then
source ${ACC_SETUP_SCRIPT}
fi
#
This will cause all new terminal sessions to use the
current release as the active release.
Setting The Active Release
In the course of your development or application running activities, you may want to select a different active release. Provided your login script invokes the ACC setup mechanism shown above, this is quite easy, simply type one of the following:
current # Sets your active release to the current release.
devel # Sets your active release to the devel release.
nightly # Sets your active release to the nightly release.
Note: All releases consist entirely of
64-bit binaries!
To list all the releases, type command:
ls -l $ACC_BASE
Releases will have name of the form
cesr_YYYY_MMDD_d. Also shown will be the soft links for
current,
devel and
nightly, as well as package directories with names of the form
packages_YYYY_MMDD_d.
The following command can then be used to set up one's environment to use one of the releases found:
setrel release_name # Make a specific release the active release.
To see what Release is being used by a terminal session, use the command:
accinfo
This will display a summary of the active release's short name ('devel', 'current' etc), its true (dated) name, build architecture, and selected Fortran compiler.
Remote Computer Access (NoMachine)
Important: Using the X11 windowing system when accessing LEPP computers from a remote computer can be slow due to the firewall between the LEPP computers and the outside world. X11 is used, for example, when any program, like Tao, pops open a window to display graphics output.
To overcome this, NoMachine servers have been setup on LEPP computers. NoMachine is a computer program that handles remote X Window System connections, and attempts to greatly improve on the performance of the native X display protocol to the point that it can be usable over a slow link.
Another advantage of using NoMachine is that if the connection is lost between the remote computer and LEPP, the state of the windows is saved by the NoMachine server and everything is restored upon a reconnection to the server.
To use NoMachine for remote access:
- Follow the setup instructions.
Note: For computation intensive jobs, In order to keep from saturating a shared NoMachine server computer, consider connecting from the NoMachine server computer to a fast "farm" computer using the command:
qrsh -q interactive.q
Behind the Scenes
This information is more technical in nature and most users will have no need for it, but it is made available for the curious and for completeness.
The environment variables that are set up by the above initializations are:
ACC Variables |
|
ACCR |
URL of the ACC Code Repository |
ACC_ARCH |
Indicates which operating system and CPU type you are building on (duplicated for flexibility) |
ACC_BASE |
Indicates the top of the library search tree for a particular OS/CPU |
ACC_BIN |
Path to the prebuilt executables area for the active release |
ACC_BUILD_EXES |
Logical to switch on/off building of executables in addition to the libraries |
ACC_BUILD_SYSTEM |
Directory of Master.cmake file used in building. |
ACC_CMAKE_VERSION |
Minimum version of CMake needed. |
ACC_CONFIG |
Path to the configuration file area for the active release. |
ACC_DEBUG |
Directory of the executables built with the debug switch. |
ACC_EXE |
Path to the prebuilt executables area for the active release (duplicated for backwards compatibility) |
ACC_FC |
Indicates the Fortran90 compiler selected for use |
ACC_GMAKE |
Path to the build system's GNU Makefile area |
ACC_OS_ARCH |
Operating system architecture. |
ACC_PKG |
Path to the 3rd party software packages area used in conjunction with the active release |
ACC_PLATFORM |
Indicates which operating system and CPU type you are building on |
ACC_PLOT_PACKAGE |
Sets plotting package |
ACC_RELEASE |
Shortcut name of the selected release (if 'devel', 'current' or some special name, the true name otherwise.) |
ACC_RELEASE_DIR |
Path to the CESR code release that you are building against (the active release). Also see: ACC_ROOT_DIR |
ACC_REPO |
URL of the ACC Code Repository (duplicated for flexibility) |
ACC_ROOT_DIR |
Same as ACC_RELEASE_DIR except that, when working with Distributions, ACC_ROOT_DIR wil point to the Distribution root directory. |
ACC_SET_F_COMPILER |
Sets Fortran90 compiler |
ACC_TRUE_RELEASE |
The true name of the selected release |
ACC_UTIL |
Path to the utility scripts area |
For build system environment variables, please visit the
Environment Variables That Control The Build Process section of the
Accelerator Build System wiki.