wiki:Workshops/JobParallelism

Version 4 (modified by Carl Baribault, 2 days ago) ( diff )

Added table for programming models, etc. - Work In Progress

HPC Workshop Spring 2026

Module 7 of 8 - Job Parallelism (Under construction)

(Content subject to change prior to the workshop)

What is Job Parallelism?

Job parallelism refers to jobs for which 2 or more processing units (or processors or cores) execute the given job's code instructions simultaneously - rather than sequentially.

Your job may need more than one processor to finish in a timely manner - or possibly to finish at all.

Why use a HPC Cluster?

  • tasks take too long
    • When the task to solve becomes heavy on computations, the operations are typically outsourced from the local laptop or desktop to elsewhere. 
    • Your computation may execute more efficiently if the code supports multithreading or multiprocessing.

  • one server is not enough
    • When a single computer can’t handle the required computation or analysis, the work is carried out on larger groups of servers.

Tools for implementing various levels of job parallelism on Cypress

See Module 2 of 8 - Introduction to Multi-processing for more information on tools available on Cypress for creating and preparing your jobs at the various levels of parallelism - programming, single job, and multi-job.

Considerations before you build and/or run your job

Before you run your job you should consider the following in order for your job to run most efficiently on Cypress.

Review your software provider's information

Before you run your job, you should review the software provider's information in order to for your job to take the best advantage of the job's requested resources such as the following.

  • Hardware requirements, including memory, number of processors, and/or supported or optimal thread count
  • Guidelines, best practices, and tips & tricks.

Choosing programming tools

  • Application programming level

Refer to the following table to determine what programming model to use based on the type of algorithm your job requires.

Algorithm Type Programming Model Hardware Used Example
Multithreaded (shared memory) OpenMP 1 Node, ≥2 cores TBD
Problem domain decomposition MPI ≥2 Nodes TBD
Massively Parallel Single Instruction Multiple Threads (SIMT) GPU kernels GPUs TBD
Hybrid Parallel MPI + (OpenMP or GPU kernels) ≥2 Nodes + GPUs TBD
  • Job scripting level

If you have data to be processed that is already divided - or can be divided - into separate files that can be processed entirely independent of each other, then you should consider using either a job array or GNU Parallel. For more information, see Running Many Serial/Parallel Jobs.

Task Criteria Job Scripting Model
TBD Job Array
TBD GNU Parallel
Note: See TracWiki for help on using the wiki.