| | 1 | [[PageOutline]] |
| | 2 | = Before running your job = |
| | 3 | |
| | 4 | Before you run your job you should consider the following in order for your job to run most efficiently on Cypress. |
| | 5 | |
| | 6 | == Tools for implementing various levels of job parallelism on Cypress == |
| | 7 | |
| | 8 | 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. |
| | 9 | |
| | 10 | == Review your software provider's information == |
| | 11 | |
| | 12 | See [wiki:Workshops/IntroToMulti-Processing2025August#CodesforMulti-CoresMulti-Nodes.Offloading Codes for Multi-Cores, Multi-Nodes. Offloading]. |
| | 13 | |
| | 14 | == Parallelism at the application level == |
| | 15 | |
| | 16 | Refer to the following table to determine what programming model to use based on the type of algorithm your job requires. |
| | 17 | |
| | 18 | ||= Algorithm Type =||= Programming Model =||= Hardware Used =||= Examples =|| |
| | 19 | ||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] || |
| | 20 | ||Multithreaded (shared memory) ||OpenMP ||1 Node, >=2 cores ||See [wiki:cypress/Programming/OpenMp OpenMP] || |
| | 21 | ||Problem domain decomposition ||MPI ||>=2 Nodes ||See [wiki:cypress/Programming/Mpi MPI]|| |
| | 22 | ||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] || |
| | 23 | ||Hybrid Parallel ||MPI + OpenMP ||>=2 Nodes ||See [wiki:cypress/using#HybridJobs Hybrid Jobs] job script|| |
| | 24 | |
| | 25 | == Parallelism at the job scripting level == |
| | 26 | * Many independent tasks |
| | 27 | |
| | 28 | 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. |
| | 29 | |
| | 30 | * Many dependent tasks |
| | 31 | |
| | 32 | 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. |