SimFactory uses some terminology for nodes, cores, processes, and threads. These terms are used somewhat inconsistently in the wild, and marketing changes their definitions every few years. Below we define the terms unambiguously. It is unfortunate that SimFactory’s variable names and command line options are somewhat outdated and don’t correspond to modern terminology any more.
Note that nodes and cores are requested from the queuing system, while processes and threads are started by SimFactory. These numbers may differ, allowing under- and over-subscription.
SimFactory expands variables in files and uses certain command line options. These variables and options have the following definitions:
Variable | Option | Definition |
---|---|---|
NODES | nodes | |
PROCS_REQUESTED | cores | |
PPN | –ppn | cores per node |
NUM_PROCS | processes | |
NODE_PROCS | processes per node | |
PROCS | –procs | threads |
NUM_THREADS | –num-threads | threads per process |
PPN_USED | –ppn-used | threads per node |
NUM_SMT | –num-smt | threads per core |
The user chooses the total number of threads (–procs). The user can also choose the number of threads per process (–num-threads) and the number of threads per core (–num-smt). Additionally, the user can also specify the number of cores per node (–ppn) and the number of threads per node (–ppn-used), allowing for under- or over-subscribing or cores. The number of nodes is always chosen automatically. Values that are not specified are taken from a previous restart (if one exists), or from the system’s MDB entry.
The number of cores per node that can be requested from the queuing system define a granularity that may be inconsistent with the total number of threads. In this case, the last node may be used only partially. Similarly, the number of threads per process defines a granularity that may be inconsistent with the total number of threads. In this case, the total number of threads is rounded up, so that the job will have more threads running.