# When to use "mpiprocs = " on request resources

**URL:** https://community.openpbs.org/t/when-to-use-mpiprocs-on-request-resources/4260
**Category:** Users/Site Administrators
**Created:** [September 3, 2026, 3:59am UTC](https://community.openpbs.org/t/when-to-use-mpiprocs-on-request-resources/4260 "2026-09-03T03:59:33Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![wakaka](https://avatars.discourse-cdn.com/v4/letter/w/d07c76/32.png) [@wakaka](https://community.openpbs.org/u/wakaka)
#### Post date: [September 3, 2026, 3:59am UTC](https://community.openpbs.org/t/when-to-use-mpiprocs-on-request-resources/4260/1 "2026-09-03T03:59:33Z")

</div>

When is it appropriate to add `mpiprocs=` when using `#PBS -l select=` to request resources? Like `#PBS -l select=4:ncpus=32:mpiprocs=32` or `#PBS -l select=4:ncpus=32` .

---

<div class="post-metadata">

### Author: ![adarsh](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@adarsh](https://community.openpbs.org/u/adarsh)
#### Post date: [September 4, 2026, 8:56am UTC](https://community.openpbs.org/t/when-to-use-mpiprocs-on-request-resources/4260/2 "2026-09-04T08:56:12Z")

</div>

It basically depends on application and MPI in conjunction with what applicaiton vendor suggests about speedup , scalability , performance improvements, based on that you adjust the job requests.

**PureMPI** – #PBS -l select=4:ncpus=32:mpiprocs=32  
**Hybrid MPI** ( MPI / OpenMP) – #PBS -l select=4:ncpus=32:mpiprocs=4:ompthreads=8 (caution: mpiprocs × ompthreads = ncpus)  
**Memory Intensive** ( MPI) – #PBS -l select=2:ncpus=32:mpiprocs=16:mem=128gb

- select=4:ncpus=32 -l place=scatter: 4 nodes, 32 cores each. MPI behavior is undefined (depends on site defaults). Simple scripts or non-MPI software.
- select=4:ncpus=32:mpiprocs=32 -l place=scatter: 4 nodes, 32 MPI ranks per node. Pure MPI (e.g., standard CFD or FEA solvers).
- select=4:ncpus=32:mpiprocs=1 -l place=scatter: 4 nodes, 1 MPI rank per node.

Usually, the application user benchmarks their model or workflow based on the suggestion given by the application vendor and fine tunes these combinations.

Always use mpiprocs for MPI jobs.

---

<div class="post-metadata">

### Author: ![wakaka](https://avatars.discourse-cdn.com/v4/letter/w/d07c76/32.png) [@wakaka](https://community.openpbs.org/u/wakaka)
#### Post date: [September 10, 2026, 12:06am UTC](https://community.openpbs.org/t/when-to-use-mpiprocs-on-request-resources/4260/3 "2026-09-10T00:06:22Z")

</div>

What is the role of the `mpiprocs` parameter? Whether to use MPI should depend on the program actually running on the computing nodes in the job script. For example, if I use `#PBS -l select=4:ncpus=32`, this will allocate 32 CPUs for me to use. If I run an MPI program, it will still start MPI processes, regardless of whether I use the `mpiprocs` parameter or not

---

<div class="post-metadata">

### Author: ![adarsh](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@adarsh](https://community.openpbs.org/u/adarsh)
#### Post date: [September 11, 2026, 7:51am UTC](https://community.openpbs.org/t/when-to-use-mpiprocs-on-request-resources/4260/4 "2026-09-11T07:51:23Z")

</div>

The job of mpiprocs is to tell PBS exactly how many MPI processes or ranks you want per chunk. PBS needs this number to generate $PBS\_NODEFILE and set up your parallel layout. Since you did not include mpiprocs, PBS doesn’t know your intended rank count. This would not be an issue, though, assuming your MPI launcher is properly configured to detect and use the allocated hosts and slot.

Please check the contents of your $PBS\_NODEFILE with and without using mpiprocs in your select statement, to see the difference.

---

<div class="post-metadata">

### Author: ![wakaka](https://avatars.discourse-cdn.com/v4/letter/w/d07c76/32.png) [@wakaka](https://community.openpbs.org/u/wakaka)
#### Post date: [September 12, 2026, 1:56am UTC](https://community.openpbs.org/t/when-to-use-mpiprocs-on-request-resources/4260/5 "2026-09-12T01:56:34Z")

</div>

Another question, for example, select=4:ncpus=32, select=4:ncpus=32:mpiprocs=32, and select=4:ncpus=32:mpiprocs=1, how do these different resource request modes correspond to the number of cores, threads, and processes? Can ncpus be less than mpiprocs?

---

<div class="post-metadata">

### Author: ![adarsh](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@adarsh](https://community.openpbs.org/u/adarsh)
#### Post date: [September 12, 2026, 2:53pm UTC](https://community.openpbs.org/t/when-to-use-mpiprocs-on-request-resources/4260/6 "2026-09-12T14:53:56Z")

</div>

In PBS, if `ompthreads` is not specified, its default value is `ncpus` for the chunk.  
Please check the pbs admin guide.

```auto
#PBS -l select=4:ncpus=32
Per chunk:
ncpus = 32
ompthreads = 32   
mpiprocs = 1    

#PBS -l select=4:ncpus=32:mpiprocs=1
same as above `

threaded:
-l select=4:ncpus=32:mpiprocs=1 #ompthreads defaults to 32

MPI:
-l select=4:ncpus=32:mpiprocs=32 #specify ompthreads=1

Hybrid MPI + OpenMP:
-l select=4:ncpus=32:mpiprocs=16:ompthreads=2 #16 ranks × 2 threads = 32 CPUs

```
