Maverick2 User Guide
Last update: October 31, 2018

Notices

  • Maverick2 is TACC's dedicated Deep Learning Machine. Allocation requests must include a justification explaining your need for this resource.
  • Maverick2 does not support any Visualization applications.
  • This user guide is a work in progress and may not reflect the latest updates and configurations. Text in red indicates content that is subject to change.

Introduction

Maverick2 is an extension to TACC's services to support GPU accelerated Machine Learning and Deep Learning research workloads. The power of this system is in its multiple GPUs per node and it is mostly intended to support workloads that are better supported with a dense cluster of GPUs and little CPU compute. The system is designed to support model training via GPU powered frameworks that can take advantage of the 4 GPUs in a node. In addition to the 96 1080-TI Nvidia GPU cards, a limited number of Pascal 100 and Volta 100 cards are available to support any workloads that cannot be done in the smaller memory footprints of the primary GPU cards. The system software supports Tensorflow and Caffe and can also be augmented to run other frameworks.

Edward Blein - Trail of Horses

System Overview

Maverick2 hosts the following GPUs: 23 nodes each with 4 NVidia GTX 1080 Ti GPUs running in a Broadwell based compute node; four nodes each with two of NVidia V100s GPUs running in a Skylake based Dell R740 based node; and three nodes each with two NVidia P100s GPUs running in a Skylake based Dell R740 node.

GTX Compute Nodes

Maverick2 has 23 GTX compute nodes.

Table 1. Maverick2 GTX Compute Node Specifications

Model: Super Micro X10DRG-Q Motherboard
Processor: Intel(R) Xeon(R) CPU E5-2620 v4
Total processors per node: 2
Total cores per processor: 8
Total cores per node: 16
Hardware threads per core: 2
Hardware threads per node: 32
Clock rate: 2.10GHz
RAM: 128 GB
L1/L2/L3 Cache: 512KiB / 2MiB / 20 MiB
Local storage: 150.0 GB (~60 GB free)
GPUs: 4 x NVidia 1080-TI GPUs

V100 Compute Nodes

Maverick2 has 4 V100 compute nodes.

Table 2. Maverick2 V100 Compute Node Specifications

Model: Dell PowerEdge R740
Processor: Xeon(R) Platinum 8160 CPU @ 2.10GHz
Total processors per node: 2
Total cores per processor: 24
Total cores per node: 48
Hardware threads per core: 2
Hardware threads per node: 96
Clock rate: 2.10GHz
RAM: 192 GB
L1/L2/L3 Cache: 1536KiB / 24576KiB / 33792KiB
Local storage: 119.5 GB (~32 GB free)
GPUs: 2 NVidia V100 adapters

P100 Compute Nodes

Maverick2 has 3 P100 nodes.

Table 3. Maverick2 P100 Compute Node Specifications

Model: Dell PowerEdge R740
Processor: Xeon(R) Platinum 8160 CPU @ 2.10GHz
Total processors per node: 2
Total cores per processor: 24
Total cores per node: 48
Hardware threads per core: 2
Hardware threads per node: 96
Clock rate: 2.10GHz
RAM: 192 GB
L1/L2/L3 Cache: 1536KiB / 24576KiB / 33792KiB
Local storage: 119.5 GB (~32 GB free)
GPUs: 2 NVidia P100 adapters

Login Nodes

Maverick2 hosts a single login node:

  • Dual Socket
  • Intel Xeon CPU E5-2660 v3 (Haswell) @ 2.60GHz: 10 cores/socket (20 cores/node)
  • 128 GB DDR4-2133 (8 x 16GB dual rank x4 DIMMS)
  • Hyperthreading Disabled

Network

  • Mellanox FDR Infiniband MT27500 Family ConnectX-3 Adapter
  • up to 10/40/56Gbps bandwidth and a sub-microsecond low latency
  • Fat Tree Interconnect
  • Intel Ethernet Controller I350 IEEE 802.3 1Gbps Adapter

File Systems

Maverick2 mounts two shared Lustre file systems on which each user has corresponding account-specific directories $HOME and $WORK. Each file system is available from all Maverick2 nodes; the Stockyard-hosted work file system is available on other TACC systems as well. A Lustre file system looks and acts like a single logical hard disk, but is actually a sophisticated integrated system involving many physical drives (dozens of physical drives for $HOME, and thousands for $WORK).

Lustre can stripe (distribute) large files over several physical disks, making it possible to deliver the high performance needed to service input/output (I/O) requests from hundreds of users across thousands of nodes. Object Storage Targets (OSTs) manage the file system's spinning disks: a file with 20 stripes, for example, is distributed across 20 OSTs. One designated Meta-Data Server (MDS) tracks the OSTs assigned to a file, as well as the file's descriptive data.

See Navigating the Shared File Systems below and consult the Shared Lustre File Systems section in the Stampede2 User Guide] for best practices.

Table 2. Maverick2 File Systems

File System Quota Key Features
$HOME 10GB, 200,000 files Not intended for parallel or high-intensity file operations.
Backed up regularly.
Overall capacity ~1PB. NFS-mounted. Two Meta-Data Servers (MDS), four Object Storage Targets (OSTs).
Defaults: 1 stripe, 1MB stripe size.
Not purged.
$WORK 1TB, 3,000,000 files across all TACC systems,
regardless of where on the file system the files reside.
Not intended for high-intensity file operations or jobs involving very large files.
On the Global Shared File System that is mounted on most TACC systems.
See Stockyard system description for more information.
Defaults: 1 stripe, 1MB stripe size
Not backed up.
Not purged.
$SCRATCH N/A Maverick2 does not have a scratch file system.

Accessing the System

Access to all TACC systems now requires Multi-Factor Authentication (MFA). You can create an MFA pairing on the TACC User Portal. After login on the portal, go to your account profile (Home->Account Profile), then click the "Manage" button under "Multi-Factor Authentication" on the right side of the page. See Multi-Factor Authentication at TACC for further information.

Secure Shell (SSH)

The "ssh" command (SSH protocol) is the standard way to connect to Maverick2. SSH also includes support for the file transfer utilities scp and sftp. Wikipedia is a good source of information on SSH. SSH is available within Linux and from the terminal app in the Mac OS. If you are using Windows, you will need an SSH client that supports the SSH-2 protocol: e.g. Bitvise, OpenSSH, PuTTY, or SecureCRT. Initiate a session using the ssh command or the equivalent; from the Linux command line the launch command looks like this:

localhost$ ssh username@maverick2.tacc.utexas.edu

Use your Maverick2 password, (not necessarily the same as your TACC portal password) for direct logins to TACC resources. You can change your TACC password through the TACC User Portal. Log into the portal, then select "Change Password" under the "HOME" tab. If you've forgotten your password, go to the TACC User Portal home page and select "Password Reset" under the Home tab.

To report a connection problem, execute the ssh command with the "-vvv" option and include the verbose output when submitting a help ticket.

Maverick2 mounts two Lustre file systems that are shared across all nodes: the home and work file systems. Maverick2's startup mechanisms define corresponding account-level environment variables, $HOME and $WORK, that store the paths to directories that you own on each of these file systems. Consult the Maverick2 File Systems table for the basic characteristics of these file systems and Good Citizenship section in the Stampede2 User Guide for tips on file system etiquette.

Maverick2's home file system is mounted only on Maverick2, but the work file system mounted on Maverick2 is the Global Shared File System hosted on Stockyard. This is the same work file system that is currently available on Stampede2, Wrangler, Lonestar5, and several other TACC resources.

The $STOCKYARD environment variable points to the highest-level directory that you own on the Global Shared File System. The definition of the $STOCKYARD environment variable is of course account-specific, but you will see the same value on all TACC systems that provide access to the Global Shared File System (see Figure 3). This directory is an excellent place to store files you want to access regularly from multiple TACC resources.

Your account-specific $WORK environment variable varies from system to system and (except for the decommissioned Stampede1 system) is a sub-directory of $STOCKYARD (Figure 3). The sub-directory name corresponds to the associated TACC resource. The $WORK environment variable on Maverick2 points to the $STOCKYARD/maverick2 subdirectory, a convenient location for files you use and jobs you run on Maverick2. Remember, however, that all subdirectories contained in your $STOCKYARD directory are available to you from any system that mounts the file system. If you have accounts on both Maverick2 and Stampede2, for example, the $STOCKYARD/maverick2 directory is available from your Stampede2 account, and $STOCKYARD/stampede2 is available from your Maverick2 account. Your quota and reported usage on the Global Shared File System reflects all files that you own on Stockyard, regardless of their actual location on the file system.

Note that resource-specific sub-directories of $STOCKYARD are nothing more than convenient ways to manage your resource-specific files. You have access to any such sub-directory from any TACC resources. If you are logged into Maverick2, for example, executing the alias cdw (equivalent to "cd $WORK") will take you to the resource-specific sub-directory $STOCKYARD/maverick2. But you can access this directory from other TACC systems as well by executing "cd $STOCKYARD/maverick2". These commands allow you to share files across TACC systems. In fact, several convenient account-level aliases make it even easier to navigate across the directories you own in the shared file systems:

Table 3. Built-in Account Level Aliases

Built-in Account Level Aliases
Alias Command
cd or cdh cd $HOME
cdw cd $WORK
cdy or cdg cd $STOCKYARD
Figure 3. Account-level directories on the work file system (Global Shared File System hosted on Stockyard). Example for fictitious user bjones. All directories usable from all systems. Sub-directories (e.g. wrangler, maverick) exist only when you have allocations on the associated system.

Transferring Files Using scp and rsync

You can transfer files between Maverick2 and Linux-based systems using either scp or rsync. Both scp and rsync are available in the Mac Terminal app. Windows ssh clients typically include scp-based file transfer capabilities.

The Linux scp (secure copy) utility is a component of the OpenSSH suite. Assuming your Maverick2 username is bjones, a simple scp transfer that pushes a file named "myfile" from your local Linux system to Maverick2 $HOME would look like this:

localhost$ scp ./myfile bjones@maverick2.tacc.utexas.edu:  # note colon after net address

You can use wildcards, but you need to be careful about when and where you want wildcard expansion to occur. For example, to push all files ending in ".txt" from the current directory on your local machine to /work/01234/bjones/scripts on Maverick2:

localhost$ scp *.txt bjones@maverick2.tacc.utexas.edu:/work/01234/bjones/maverick2

To delay wildcard expansion until reaching Maverick2, use a backslash ("\") as an escape character before the wildcard. For example, to pull all files ending in ".txt" from /work/01234/bjones/scripts on Maverick2 to the current directory on your local system:

localhost$ scp bjones@maverick2.tacc.utexas.edu:/work/01234/bjones/maverick2/\*.txt .

You can of course use shell or environment variables in your calls to scp. For example:

localhost$ destdir="/work/01234/bjones/maverick2/data"
localhost$ scp ./myfile bjones@maverick2.tacc.utexas.edu:$destdir

You can also issue scp commands on your local client that use Maverick2 environment variables like $HOME and $WORK. To do so, use a backslash ("\") as an escape character before the "$"; this ensures that expansion occurs after establishing the connection to Maverick2:

localhost$ scp ./myfile bjones@maverick2.tacc.utexas.edu:\$WORK/data   # Note backslash

Avoid using scp for recursive ("-r") transfers of directories that contain nested directories of many small files:

localhost$ scp -r  ./mydata     bjones@maverick2.tacc.utexas.edu:\$WORK  # DON'T DO THIS

Instead, use tar to create an archive of the directory, then transfer the directory as a single file:

localhost$ tar cvf ./mydata.tar mydata                                   # create archive
localhost$ scp     ./mydata.tar bjones@maverick2.tacc.utexas.edu:\$WORK  # transfer archive

The rsync (remote synchronization) utility is a great way to synchronize files that you maintain on more than one system: when you transfer files using rsync, the utility copies only the changed portions of individual files. As a result, rsync is especially efficient when you only need to update a small fraction of a large dataset. The basic syntax is similar to scp:

localhost$ rsync       mybigfile bjones@maverick2.tacc.utexas.edu:\$WORK/data
localhost$ rsync -avtr mybigdir  bjones@maverick2.tacc.utexas.edu:\$WORK/data

The options on the second transfer are typical and appropriate when synching a directory: this is a recursive update ("-r") with verbose ("-v") feedback; the synchronization preserves time stamps ("-t") as well as symbolic links and other meta-data ("-a"). Because rsync only transfers changes, recursive updates with rsync may be less demanding than an equivalent recursive transfer with scp.

See Good Citizenship in the Stampede2 User Guide for additional important advice about striping the receiving directory when transferring large files; watching your quota on $HOME and $WORK; and limiting the number of simultaneous transfers. Remember also that $STOCKYARD (and your $WORK directory on each TACC resource) is available from several other TACC systems: there's no need for scp when both the source and destination involve sub-directories of $STOCKYARD. See Managing Your Files for more information about transfers on $STOCKYARD.

Sharing Files with Collaborators

If you wish to share files and data with collaborators in your project, see Sharing Project Files on TACC Systems for step-by-step instructions. Project managers or delegates can use Unix group permissions and commands to create read-only or read-write shared workspaces that function as data repositories and provide a common work area to all project members.

Notes on Small Files Under Lustre

The Stockyard/$WORK file system is a Lustre file system which is optimized for large scale reads and writes. As some workloads, such as image classification, leverage using multiple small files, we advise users not work directly on $WORK with these workloads. Users should have their jobs copy these files to /tmp on the compute node, compute against the /tmp data, store their results on the $WORK file system, and clean up /tmp. We are currently working on solutions to expand the 60 GB /tmp capacity.

Striping Large Files

Before transferring large files to Maverick2, or creating new large files, be sure to set an appropriate default stripe count on the receiving directory. To avoid exceeding your fair share of any given OST, a good rule of thumb is to allow at least one stripe for each 100GB in the file. For example, to set the default stripe count on the current directory to 30 (a plausible stripe count for a directory receiving a file approaching 3TB in size), execute:

$ lfs setstripe -c 30 $PWD

Note that an "lfs setstripe" command always sets both stripe count and stripe size, even if you explicitly specify only one or the other. Since the example above does not explicitly specify stripe size, the command will set the stripe size on the directory to Maverick2's system default (1MB). In general there's no need to customize stripe size when creating or transferring files.

Remember that it's not possible to change the striping on a file that already exists. Moreover, the "mv" command has no effect on a file's striping if the source and destination directories are on the same file system. You can, of course, use the "cp" command to create a second copy with different striping; to do so, copy the file to a directory with the intended stripe parameters.

Software on Maverick2

As of September 24, 2018, the following software modules are currently installed on Maverick2. Execute "module avail" to retrieve the most up-to-date listing.

login1$ module avail

-------------------- /opt/apps/intel17/impi17_0/modulefiles --------------------
    fftw3/3.3.6

------------------------ /opt/apps/intel17/modulefiles -------------------------
    impi/17.0.3        python/2.7.13        python3/3.6.3

---------------------------- /opt/apps/modulefiles -----------------------------
    TACC                   gcc/6.3.0             intel/18.0.2
    autotools/1.2          gcc/7.1.0             lmod/7.7.3
    cmake/3.8.2            gcc/7.3.0    (D)      ncl_ncarg/6.3.0
    cmake/3.10.2  (D)      git/2.12.2            settarg/7.7.3
    cuda/8.0      (g)      hwloc/1.11.2          tacc-singularity/2.5.2
    cuda/9.0      (g)      idev/1.5.5            tacc_tips/0.5
    cuda/9.2      (g,D)    intel/16.0.3
    gcc/5.4.0              intel/17.0.4 (D)

  Where:
   D:  Default Module
   L:  Module is loaded
   g:  built for GPU

 

At this time, with the limited size of the local disks on Maverick2, we are keeping the number of packages supported to a reduced size to accommodate the work done on this system that is not possible or practical on other TACC systems.

Users must provide their own license for commercial packages. TACC will work on a best effort level with any commercial vendors to support that software on the system, but make no guarantee that licences can migrate to our systems or can be supported within the support framework at TACC.

You are welcome to install packages in your own $HOME or $WORK directories. No super-user privileges are needed, simply use the "--prefix" option when configuring then making the package.

 

Job Accounting

Maverick2's accounting system is based on node-hours: one unadjusted Service Unit (SU) represents a single compute node used for one hour (a node-hour). We then multiply by a charge rate that reflects supply and demand for the type of node you use. For any given job, the total cost in SUs is:

SUs billed (node-hrs) = ( # nodes ) x ( job duration in wall clock hours ) x ( charge rate per node-hour )

The system tracks and charges for usage to a granularity of a few seconds of wall clock time. The system charges only for the resources you actually use, not those you request. In general, your queue wait time will be less if you request only the time you need: the scheduler will have an easier time finding a slot for the 2 hours you really need than for the 48 hours you request in your job script.

Principal Investigators can monitor allocation usage via the TACC User Portal under "Allocations->Projects and Allocations". Be aware that the figures shown on the portal may lag behind the most recent usage. Projects and allocation balances are also displayed upon command-line login.

To display a summary of your TACC project balances and disk quotas at any time, execute:

login1$ /usr/local/etc/taccinfo # Generally more current than balances displayed on the portals.

Slurm Job Scheduler

Maverick2 employs the Slurm Workload Manager job scheduler. Slurm commands enable you to submit, manage, monitor, and control your jobs.

The Stampede2 User Guide discusses Slurm extensively. See the following sections for detailed information:

 

Slurm Partitions (Queues)

Queue status as of August 24, 2018. Queues and limits are subject to change without notice.

Execute "qlimits" on Maverick2 for real-time information regarding limits on available queues.

See Stampede2's Monitoring Jobs and Queues section for additional information.

Queue Name
(available nodes)
Max Nodes per Job
(assoc'd cores)
Max Duration Max Jobs in Queue Charge Rate
(per node-hour)
gtx
(23 nodes)
4 nodes
(64 cores)
24 hours 1 1 SU
v100
(4 nodes)
4 nodes
(64 cores)
24 hours 1 1 SU
p100
(3 nodes)
3 nodes
(48 cores)
24 hours 1 1 SU