======= Software ======= IT maintains a wide variety of software on the clusters it supports. There are several categories of software involved: {{:software:floppy_disk.png?128 |}} ^Category ^Description ^Examples ^ |**operating system (OS)**|Programs that collectively provide a working environment for computation|RedHat Enterprise Linux (RHEL)| |**development**|Programs that are used to create and refine other programs|Portland Compiler Suite, GNU Debugger (gdb)| |**libraries**|Reusable program fragments that provide additional functionality to programs|OpenMPI, ScaLAPACK| |**applications**|In HPC, a program that facilitates computation or data analysis|Matlab, Gaussian| IT is solely responsible for maintaining the OS on the HPC systems. A number of development tools, libraries, and applications that are requested by multiple HPC users are also installed/compiled and managed by the IT HPC staff. This area of the site is dedicated to documentation associated with the latter three categories of software. ====== Availability ====== Each cluster has a unique complement of development tools, libraries, and applications. Documentation for all software is organized in alphabetical order on the sidebar A list of installed software that IT builds and maintains for each cluster can be found by logging into the cluster (e.g. [[abstract:caviness:system_access:system_access#logging-on-to-caviness|Caviness]] or [[abstract:darwin:system_access:system_access#logging-on-to-darwin|DARWIN]]) and using the VALET command ''vpkg_list''. Review the [[http://www.nvidia.com/content/PDF/gpu-accelerated-applications.pdf|nVidia'a GPU-Accelerated Applications list]] for applications optimized to work with GPUs. These applications would be able to take advantage of nodes equipped with nVidia Tesla K20X coprocessors. Use of some commercial software on the clusters may require that your research group purchase a right-to-use license (e.g. ANSYS, IDL and COMSOL). ====== Using software ====== Preparing the Linux environment for a particular software title usually involves modification of the ''PATH'' or ''LD_LIBRARY_PATH'' variables, setting additional variables in the environment, or even executing scripted commands. Often the documentation for installing such software suggests that the user edit his/her ''.bashrc'' or ''.bash_profile'' file so the changes are made automatically at login. On UD HPC clusters, these tasks are best accomplished using [[:software:valet:valet|VALET]], not by editing your login files. When IT adds new software to a cluster or upgrades existing software titles the work necessary to configure the environment for that software is modeled in a VALET //package file//. Later, when a user issues the ''vpkg_require'' command to prepare his/her environment, VALET uses the package file to affect the necessary changes. ===== VALET commands ===== The UD-developed //VALET// system facilitates your use of compilers, libraries, programming tools and application software. It provides a uniform mechanism for setting up a package's required UNIX environment. VALET is a recursive acronym for **//V//**//ALET //**//A//**//utomates //**//L//**//inux //**//E//**//nvironment //**//T//**//asks//. It provides functionality similar to the **Modules** package used at other HPC sites. VALET commands set the basic environment for software. This may include the ''PATH'', ''MANPATH'', ''INFOPATH'', ''LDPATH'', ''LIBPATH'' and ''LD_LIBRARY_PATH'' environment variables, compiler flags, software directory locations, and license paths. This reduces the need for you to set them or update them yourself when changes are made to system and application software. For example, you might find several versions for a single package name, such as Mathematica/8 and Mathematica/8.0.4. You can even apply VALET commands to packages that you install or alter its actions by customizing VALET's configuration files. The following table provides a brief summary of the most often-used VALET commands. Additional information is available by typing **man valet** for instructions or see the [[:software:valet:valet|VALET software documentation]] for complete details. These commands are available in login shells and batch scripts (since they are run as login shells). ^ Command ^ Function ^ | ''vpkg_help'' | VALET help. | | ''vpkg_list'' | List the packages that have VALET configuration files. | | ''vpkg_versions ''<> | List versions available for a single package. | | ''vpkg_info ''<> | Show information for a single package (or package version). | | ''vpkg_require ''<> | Configure environment for one or more VALET packages. | | ''vpkg_devrequire ''<> | Configure environment for one or more VALET packages including software development variables such as ''CPPFLAGS'' and ''LDFLAGS''. | | ''vpkg_rollback ''<> | Each time VALET changes the environment, it makes a snapshot of your environment to which it can return.\\ ''vpkg_rollback'' attempts to restore the UNIX environment to its previous state. You can specify a number (''#'') to revert one or more prior changes to the environment or ''all'' to remove all changes. | | ''vpkg_history'' | List the versioned packages that have been added to the environment. | | ''man valet'' | Complete documentation of VALET commands. | A <> is the combination of a package identifier (found using the ''vpkg_list'' command) with a version/variant identifier (via the ''vpkg_versions'' command). The two pieces are joined using a forward slash (/). For example, the commercial software "Matlab" has a <> of ''matlab'' and the 2012 release has a <> of ''r2012a'', producing the <> ''matlab/r2012a''. In the context of a <>, a blank <> implies the default version of the package (marked with an asterisk ''*''). If the 2012 release of Matlab were the default, then using ''matlab'' (or ''matlab/default'') as the <> would imply ''matlab/r2012a''. VALET environment changes apply to the shell in which the ''vpkg_require'' command is issued; the changes do not "stick" after exiting that shell (by logging-out, for example). Thus, one way to discard changes affected by a ''vpkg_require'' command is to just exit the shell. The ''vpkg_rollback'' command is a more graceful alternative and iteratively discards the changes produced by prior ''vpkg_require'' commands issued in the shell. To undo all changes, ''vpkg_rollback all'' can be used. A script contains commands to be executed in a shell. ==== VALET source files ==== When sourced, the commands in the script are executed in the current shell and any changes to the environment with be in affect when done. You can put VALET commands in a sourced script. In source files containing VALET commands, it is good idea to rollback all packages before the VALET commands. vpkg_rollback all When the script is done the environment may have been changed. Only source VALET scripts when you want the changes made by VALET to stay in affect. ==== VALET executable scripts ==== When executing a script, a new shell is started with all exported variables and functions. This shell does not have the VALET commands, unless it was executed as a login shell. In an executable, non-login script containing VALET commands, the VALET functions must be setup. Put this source statement before the VALET commands: source /etc/profile.d/valet.sh When the script is done, or encounters an exit command, the new shell is terminated and the environment is back to the state it was in before execution.