| 34 | | * 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 [wiki:IntroToMulti-Processing2025August#RunningManySerialParallelJobs Running Many Serial/Parallel Jobs]. |
| | 34 | * Application programming level |
| | 35 | |
| | 36 | Refer to the following table to determine what programming model to use based on the type of algorithm your job requires. |
| | 37 | |
| | 38 | ||= Algorithm Type =||= Programming Model =||= Hardware Used =||= Example =|| |
| | 39 | ||Multithreaded (shared memory) ||OpenMP ||1 Node, >=2 cores ||TBD || |
| | 40 | ||Problem domain decomposition ||MPI ||>=2 Nodes ||TBD || |
| | 41 | ||Massively Parallel Single Instruction Multiple Threads (SIMT) ||GPU kernels ||GPUs ||TBD || |
| | 42 | ||Hybrid Parallel ||MPI + (OpenMP or GPU kernels) ||>=2 Nodes + GPUs ||TBD || |
| | 43 | |
| | 44 | * Job scripting level |
| | 45 | |
| | 46 | 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 [wiki:IntroToMulti-Processing2025August#RunningManySerialParallelJobs Running Many Serial/Parallel Jobs]. |
| | 47 | |
| | 48 | ||= Task Criteria =||= Job Scripting Model =|| |
| | 49 | ||TBD ||Job Array || |
| | 50 | ||TBD ||GNU Parallel || |