| 25 | | See [wiki:IntroToMulti-Processing2025August 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. |
| 26 | | |
| 27 | | ==== Review your software provider's information ==== |
| 28 | | |
| 29 | | See [wiki:Workshops/IntroToMulti-Processing2025August#CodesforMulti-CoresMulti-Nodes.Offloading Codes for Multi-Cores, Multi-Nodes. Offloading]. |
| 30 | | |
| 31 | | ==== Parallelism at the application level ==== |
| 32 | | |
| 33 | | Refer to the following table to determine what programming model to use based on the type of algorithm your job requires. |
| 34 | | |
| 35 | | ||= Algorithm Type =||= Programming Model =||= Hardware Used =||= Examples =|| |
| 36 | | ||Single Instruction Multiple data (SIMD) ||Compiler vectorization ||Intel Advanced Vector Extensions (AVX), 256-bit vector processor ||See [https://wiki.hpc.tulane.edu/trac/wiki/cypress#MathLibraries Math Libraries] || |
| 37 | | ||Multithreaded (shared memory) ||OpenMP ||1 Node, >=2 cores ||See [wiki:cypress/Programming/OpenMp OpenMP] || |
| 38 | | ||Problem domain decomposition ||MPI ||>=2 Nodes ||See [wiki:cypress/Programming/Mpi MPI]|| |
| 39 | | ||Massively Parallel, Single Instruction Multiple Threads (SIMT) ||#pragma offload (GPU kernels not available on Cypress) ||Coprocessors - !XeonPhi (GPUs not available on Cypress) ||See [wiki:cypress/XeonPhi XeonPhi], [wiki:Workshops/cypress/OffloadingWithOpenMP Offloading to Accelerator] || |
| 40 | | ||Hybrid Parallel ||MPI + OpenMP ||>=2 Nodes ||See [wiki:cypress/using#HybridJobs Hybrid Jobs] job script|| |
| 41 | | |
| 42 | | ==== Parallelism at the job scripting level ==== |
| 43 | | * Many independent tasks |
| 44 | | |
| 45 | | See [wiki:IntroToMulti-Processing2025August#RunningManySerialParallelJobs Running Many Serial/Parallel Jobs] if your computational workload can be split easily - or perhaps with some minimal or one-time effort - into many independent tasks, requiring minimal communication. For more information. |
| 46 | | |
| 47 | | * Many dependent tasks |
| 48 | | |
| 49 | | Otherwise, see [wiki:cypress/Programming/Mpi MPI] if your computational workload includes too many tasks to run on a single node '''and''' the tasks require a significant level of inter - communication '''during''' the computation. |