Multi-Threaded Jobs on Argo
Running Multi-threaded jobs
This section only refers to threaded applications, like - OpenMP, Threaded and Pthreads.
To run multi-threaded jobs, the number of threads required has to be specified in the job submission script. These can be specified by adding the following lines to your job submission script:
#SBATCH --node=1
#SBATCH --ntasks=X
#SBATCH --cpus-per-task=N
where X is the number of tasks required for the job (can be just 1 task), and N is the number of threads each task will spawn.
NOTE: when requesting threads per task make sure that you are not exceeding the total core count available per node, i.e., X*N should not exceed the total core count of a node.
C/C++/Fortran
Some libraries may require that the environment variable OMP_NUM_THREADS is set. Otherwise, they will not run in multithreaded mode. Check library specific documentation for further detail.
Java
Sometimes a Java program may require more than one CPU to run properly on the cluster. For example, NetLogo simulation runs needs a minimum of 2 slots (--ntasks=2) to run properly on the cluster. To run a multi-threaded Java application with appropriate number of threads, user has to specify N (referred above) accordingly.