Sample Code Repository

BC Project: FY06-15
Date of Policy: 24 May 2007
Last Updated: 07 Oct 2020 (see Revision Log)

Each participating center shall maintain a Sample Code Repository on each system. Users of all skill levels can use this repository to see examples of best practices for using the resources of the HCPMP. These examples will be especially helpful to users who are new to the HPCMP or to a particular system.

The environment variable $SAMPLES_HOME will point to the repository's base directory. Sample scripts are organized into six categories, each of which has its own subdirectory named the same as the category itself. These categories are:

  • Applications
  • Data_Management
  • Parallel_Environment
  • Programming
  • Software Containers
  • User_Environment
  • Workload_Management

Samples shall contain items such as a batch job script, sample input data, etc., and a README file that gives a brief functional description and instructions for its use. A sample will reside in its own subdirectory under the appropriate category's subdirectory.

The Sample Code Repository directory shall contain a file (INDEX.txt) that serves as a table of contents of the code repository. This file includes a brief explanation of each sample and is organized by the categories listed above.

The names of the samples and the format of the file INDEX.txt will be uniform across systems. The INDEX.txt listing from each system shall be included in each center's online documentation (currently "Sample Code Repository" under "Documentation").

The types of samples for each category are as follows:

Applications: application specific examples; interactive job submittal scripts, application names resource, software licenses

Data_Management: Archival and retrieval of files; Lustre file striping; $WORKDIR

Parallel_Environment: MPI, OpenMP, and hybrid parallelism; large memory jobs, running multiple applications within a single batch job

Programming: Basic code compilation; debugging; library files; static vs. dynamic linking; Makefiles; Endian conversion

Software Containers: Basic examples of how to use container technology to create a custom environment for your applications. The HPCMP is currently using the Singularity container software.

User_Environment: Modules; customization of login environment

Workload_Management: Basic batch scripting; transfer queue; job arrays; job dependencies; Secure Remote Desktop; job monitoring

The Sample Code Repository shall be maintained by DoD Supercomputing Resource Center (DSRC) personnel.

Revision Log
Date Revision
07 Oct 2020Added new Category "Software Containers" to policy
20 Sep 2018Moved Category Names and Descriptions from "additional information" link to main body of policy, dropped "Best Practices" link, and made numerous wording changes
09 Mar 2012Added standardization text and "additional information" link. Moved Localy Available Tools into separate policy
04 Mar 2009Added description of tools and scripts collection