LC provides the /usr/gapps file system for user-developed and supported applications on LC systems. There is a single /usr/gapps file system globally available to all LC systems within a given zone or network (three on OCF and one on SCF). This global file system replaces the previous /usr/apps file systems that were local to each production system or cluster.

There are three instances of /usr/gapps on the OCF:

Collaboration Zone (CZ) Infrastructure Zone

(shared by CZ and RZ)
Restricted Zone

(RZ)
CZ /usr/gapps Shared /collab/usr/gapps RZ /usr/gapps

The shared /collab/usr/gapps file system will be mounted as read-write in the RZ and read-only in the CZ. The intent is to provide a means for code developers on the RZ to build content that can be placed in the shared /collab/usr/gapps. CZ users can then access the content from CZ computing resources.

CZ users can access the CZ /usr/gapps, which is mounted on CZ machines, as well as the shared /collab/usr/gapps file system. Likewise, RZ users have access to RZ /usr/gapps, which is mounted on RZ computing resources, as well as the shared /collab/usr/gapps file system.

The /usr/gapps file systems are provided on fast and highly reliable Network Appliance machines and are backed up nightly. In addition, there are 48 hours of online backups (see news online.backup for further information).

What about /usr/apps paths?

Despite the fact that the local /usr/apps file systems are gone, /usr/apps can still be used in path names. Old /usr/apps path names continue to work and standardized system-independent path naming can be used across LC machines. This has been done by making /usr/apps a meaningful link into the /usr/gapps file system, as described in the next section.

The links that allow continued use of /usr/apps paths are permanent.

How is /usr/gapps structured to allow different binaries across multiple platforms in one file system?

An environment variable called SYS_TYPE is defined for each user upon login that identifies the current type of platform (operating system and identifying information such as major operating system release or architecture) so that classes of machines that are able to share binaries may be identified.

The values for SYS_TYPE on some LC systems are:

Platform OCF (CZ/RZ) SCF SYS_TYPE Value
Commodity Technology Systems (CTS) at TOSS3

  x86 64-bit
Flash, RZGenie Tron toss_3_x86_64_ib
CORAL 2 systems at TOSS4

  Early Access El Cap systems
Tioga, RZVernal Tenaya toss_4_x86_64_ib_cray
CTS at TOSS4 Quartz, RZTopaz Agate toss_4_x86_64_ib
CORAL 1 IBM systems Lassen, RZAnsel Sierra blueos_3_ppc64le_ib_p9

The above table does not offer an exhaustive list of TOSS3 or TOSS4 systems.

What about other /usr/apps subdirectories (bin, data, include, lib)?

The /usr/gapps file system has a directory for each SYS_TYPE value. /usr/apps on each system or cluster is a link to /usr/gapps/$SYS_TYPE:

/usr/apps/ → usr/gapps/$SYS_TYPE

Note: Arrow ()signifies symbolic link in this document.

The /usr/gapps/$SYS_TYPE directory contains links that point each code name to the appropriate file or directory. In most cases, the appropriate directory for each code is a $SYS_TYPE directory within the /usr/gapps tree for that code. You are able to create whatever links you need within the /usr/gapps/$SYS_TYPE directories. You are not able to delete a link created by anyone else. Only links (no files or directories) are allowed within the /usr/gapps/$SYS_TYPE directories. Any files or directories created within the SYS_TYPE directories will be periodically removed.

/usr/apps/code → /usr/gapps/$SYS_TYPE/code → /usr/gapps/code/$SYS_TYPE

Example: For a user application code noted as code, the recommended structure for code is a /usr/gapps/code directory with a subtree for each relevant SYS_TYPE value and a subtree for each platform-independent directory.

What happens when new SYS_TYPEs are created?

A new SYS_TYPE is created when it is determined that code developers may need to create and maintain a new set of binary files for an updated or different operating system or machine architecture. When a new SYS_TYPE is created for a machine, the /usr/gapps/$SYS_TYPE directory (and /usr/gapps/bin/$SYS_TYPE, etc.) will be created empty; code developers are responsible for populating the directories with links to code versions specific to the new SYS_TYPE.

Would you like to create a /usr/gapps directory?

If you would like to share an application with other users in a /usr/gapps directory, here are the steps to follow. In these directions, the application to be shared is noted as code.

  • Submit a /usr/gapps Request form to request a /usr/gapps directory. The form requires Computer Coordinator or Principal Investigator signature.
  • Determine who will be sharing code and how access will be allowed. On the OCF, world ("other") access is not allowed unless a UNIX World Permissions Exemption form has been completed. This form requires Associate Director signature. Access is usually allowed to codes by Unix user groups. If the group you need does not exist, you may request the creation of the group by submitting the request online via the LC Identity Management System.
  • Once /usr/gapps/code is created, you may structure it as you chose, but LC recommends a subdirectory for each SYS_TYPE for which you will be maintaining the code, and subdirectories for platform-independent files such as documentation and scripts.
  • To make the /usr/apps/code pathname meaningful:

    For each platform on which code will be used, email lc-hotline@llnl.gov and request creation of a symbolic link from /usr/apps/code to the correct area within /usr/gapps/code.

    Remember that /usr/apps is a symbolic link to /usr/gapps/$SYS_TYPE on each platform. The LC Hotline will not create any files or directories (other than the symbolic link) in the /usr/apps directory. Any non-links created in this directory will be removed.
  • If you wish to add files or symbolic links to the bin, data, lib or include subdirectories of /usr/gapps, you will need to specify those additional directions on the usr_gapps form. You will not be able to write into those directories.

    You may want to place files or links into /usr/gapps/bin or /usr/apps/bin (which is linked to /usr/gapps/bin/$SYS_TYPE) so that users will find code in their default path. User default paths include /usr/apps/bin and /usr/gapps/bin.
  • Call the LC-Hotline for assistance in planning the structure of your application directory or for assistance with any of these steps.

SYS_TYPEs not currently in use at LC

Platform SYS_TYPE Value
ASC IBMs 32 bit at AIX version 4 aix_4
ASC IBMs 64 bit at AIX version 4

   long long
aix_4ll
ASC IBMs 32 bit at AIX version 5 aix_5
ASC IBMs 32/64 bit (default is 64) at AIX version 5 aix_5_64
ASC IBMs 32/64 bit (no default) at AIX version 5

   long long
aix_5_ll
ASC IBMs 32/64 bit (default is 64) at AIX version 5

   federation switch
aix_5_64_fed
Compaqs at tru64 version 4 tru64_4
Compaqs at tru64 version 5 tru64_5
Compaqs at tru64 version 4

   sierra cluster
tru64_4sc
Compaqs at tru64 version 5

   sierra cluster
tru64_5sc
Compaq at Red Hat 7.1

   intel 32-bit, myrinet
redhat_7_ia32_myri
CORAL 1 Early Access systems on Power8 nodes blueos_3_ppc64le_ib
Fedora Core 2 on X86 processors with 32 bit address version of fedora fedora_2_ia32
Fedora Core 3 on X86 processors with 32 bit address version of fedora fedora_3_ia32
Fedora Core 4 on X86 processors with 32 bit address version of fedora fedora_4_ia32
Fedora Core 2 on X86 processors with 64 bit address version of fedora fedora_2_x86_64
Fedora Core 3 on X86 processors with 64 bit address version of fedora fedora_3_x86_64
Fedora Core 4 on X86 processors with 64 bit address version of fedora fedora_4_x86_64
Linux cluster at Red Hat 7.1

   alpha
redhat_7_a
Linux cluster at Red Hat 7.1

   intel 32-bit
redhat_7_ia32
Linux clusters at Red Hat 7.1

   intel 32-bit, quadrics switch
redhat_7_ia32_qsw
Linux clusters at Red Hat 7.3

   intel 32-bit
redhat_7a_ia32
Linux clusters at Red Hat 7.3

   intel 32-bit, quadrics switch
redhat_7a_ia32_qsw
Linux clusters at SuSE Linux Enterprise 9

    power pc 64-bit
sles_9_ppc64
Linux clusters at SuSE Linux Enterprise 10

    power pc 64-bit
sles_10_ppc64
Linux clusters at CHAOS 2 chaos_2_ia32

chaos_2_ia32_elan3

chaos_2_ia64_elan4
Linux clusters at CHAOS 3 chaos_3_x86

chaos_3_x86_64

chaos_3_x86_64_ib

chaos_3_x86_elan3

chaos_3_x86_elan4
Linux clusters at CHAOS 4 chaos_4_x86_64
Linux clusters at CHAOS 4

  x86 64-bit, InfiniBand switch
chaos_4_x86_64_ib
Linux clusters at CHAOS 5 chaos_5_x86_64
Linux clusters at CHAOS 5

  x86 64-bit, InfiniBand switch
chaos_5_x86_64_ib
Linux at Redhat 8

   intel 32-bit
redhat_8_ia32
Linux at Redhat 9

   intel 32-bit
redhat_9_ia32
Linux at Redhat Enterprise 3

   x86 64-bit
rhe_3_x86_64
SGI visualization server irix_6.5_64
Mac OS X 10.2 macos_10
Mac OS X 10.3 macos_10a
Mac OS X 10.4 macos_104
Solaris 8 at 32-bit solaris_8_s32
Solaris 8 at 64-bit solaris_8_s64

If you have any questions, contact the LC Hotline—send e-mail to lc-hotline@llnl.gov or phone (925) 422-4531.