To succeed in using a major HPC resource like Vista, it is essential to have a workable plan for parallelizing computations. There is no one right way to do this; in fact, it may be best to rely on a combination of techniques. As you might expect, Vista comes with an array of tools to facilitate the various styles of parallel processing. The main methods that are available are summarized in the table below.

Main tools available for parallel processing.
Program type # of nodes How to run in parallel on Vista
Multithreaded program
(OpenMP)
Single node Set number of threads and run program
High throughput computing
with serial or multithreaded code
1+ nodes Use pylauncher
MPI program 1+ nodes Start program with ibrun
Hybrid of the above 1+ nodes Use any or all methods in combination

You'll first want to ensure that your program can make good use of the available cores and memory on a single compute node. Just by itself, one GG node can accommodate up to 144 OpenMP threads, or MPI tasks, or independent serial processes. To go beyond one node, it is necessary to use MPI, or to have some means of launching independent processes that run in parallel on multiple nodes.

ibrun

You will almost certainly need MPI to run an application at scale on Vista. TACC systems feature a special MPI starter called ibrun that streamlines the process for users. Among other benefits, ibrun works with Slurm's batch environment to produce suitable hostlists for jobs. It also allows job scripts to use the same top-level MPI launcher for different MPI stacks, while enabling TACC to customize the underlying behavior of the two MPI implementations on Vista:

  • Open MPI (default): module load openmpi
  • MVAPICH-Plus: module load mvapich-plus

Later, we'll look at an example batch script showing ibrun usage.

PyLauncher

In addition, TACC systems provide a non-MPI launcher, PyLauncher, for high-throughput-computing, in which many independent workers grab tasks from a workpile until all tasks are done. A parameter sweep is the prototypical example of this type of computing. PyLauncher is not covered in depth here; to learn about it, consult module help:

$ module help pylauncher

This will print some clues about its usage. After loading the modules, you can also find relevant documentation in the directory $TACC_PYLAUNCHER_DIR.

 
©  |   Cornell University    |   Center for Advanced Computing    |   Copyright Statement    |   Access Statement
CVW material development is supported by NSF OAC awards 1854828, 2321040, 2323116 (UT Austin) and 2005506 (Indiana University)