| <!--#include virtual="header.txt"--> |
| |
| <h1>Resource Binding</h1> |
| |
| <ul> |
| <li><a href="#overview">Overview</a></li> |
| <li><a href="#srun">Srun --cpu-bind option</a></li> |
| <li><a href="#node">Node CpuBind Configuration</a></li> |
| <li><a href="#partition">Partition CpuBind Configuration</a></li> |
| <li><a href="#TaskPluginParam">TaskPluginParam Configuration</a></li> |
| </ul> |
| |
| <h2 id="overview">Overview<a class="slurm_link" href="#overview"></a></h2> |
| |
| <p>Slurm has a rich set of options to control the default |
| binding of tasks to resources. |
| For example, tasks can be bound to individual threads, cores, sockets, NUMA |
| or boards. |
| See the slurm.conf and srun man pages for more information about how these |
| options work. |
| This document focuses on how default binding configuration can be configured. |
| Default binding can be configured on a per-node, per-partition or global basis. |
| The highest priority will be that specified using the srun --cpu-bind option. |
| The next highest priority binding will be the node-specific binding if any |
| node in the job allocation has some CpuBind configuration parameter and all other |
| nodes in the job allocation either have the same or no CpuBind configuration |
| parameter. |
| The next highest priority binding will be the partition-specific CpuBind |
| configuration parameter (if any). |
| The lowest priority binding will be that specified by the TaskPluginParam |
| configuration parameter.</p> |
| |
| <ol> |
| <li>Srun --cpu-bind option</li> |
| <li>Node CpuBind configuration parameter (if all nodes match)</li> |
| <li>Partition CpuBind configuration parameter</li> |
| <li>TaskPluginParam configuration parameter</li> |
| </ol> |
| |
| <h2 id="srun">Srun --cpu-bind option<a class="slurm_link" href="#srun"></a></h2> |
| |
| <p>The srun --cpu-bind option will always be used to control task binding. |
| If the --cpu-bind option only includes "verbose" rather than identifying |
| the entities to be bound to, then the verbose option will be used together |
| with the default entity based upon Slurm configuration parameters as described |
| below.</p> |
| |
| <h2 id="node">Node CpuBind Configuration |
| <a class="slurm_link" href="#node"></a> |
| </h2> |
| |
| <p>The next possible source of the resource binding information is the node's |
| configured CpuBind value, but only if every node has the same CpuBind value |
| (or no configured CpuBind value). |
| The node's CpuBind value is configured in the slurm.conf file. |
| Its value may be viewed or modified using the scontrol command. |
| To clear a node's CpuBind value use the command:</p> |
| <pre> |
| scontrol update NodeName=... CpuBind=off |
| </pre> |
| |
| <p>If a node_features plugin is configured, typically to support booting Intel |
| KNL nodes into different NUMA and/or MCDRAM modes, the plugin can be configured |
| to modify the node's CpuBind option based upon the NUMA mode. |
| This is accomplished by specifying the NumaCpuBind parameter in the knl.conf |
| configuration file with pairs of NUMA modes and CpuBind options. |
| As soon as the node is booted into a new NUMA mode, the node's CpuBind option |
| is automatically modified. |
| For example, the following line in the knl.conf file</p> |
| <pre> |
| NumaCpuBind=a2a=core;snc2=thread |
| </pre> |
| <p>will set a node's CpuBind field to "core" when booted into "a2a" (all to all) |
| NUMA mode and to "thread" when booted into "snc2 NUMA mode. |
| Any NUMA mode not specified in the NumaCpuBind configuration file will result |
| in no change to the node's CpuBind field.</p> |
| |
| <h2 id="partition">Partition CpuBind Configuration |
| <a class="slurm_link" href="#partition"></a> |
| </h2> |
| |
| <p>The next possible source of the resource binding information is the |
| partition's configured CpuBind value. |
| The partition's CpuBind value is configured in the slurm.conf file. |
| Its value may be viewed or modified using the scontrol command.</p> |
| |
| <h2 id="TaskPluginParam">TaskPluginParam Configuration |
| <a class="slurm_link" href="#TaskPluginParam"></a> |
| </h2> |
| |
| <p>The last possible source of the resource binding information is the |
| TaskPluginParam configuration parameter from the slurm.conf file.</p> |
| |
| <p style="text-align:center;">Last modified 24 June 2020</p> |
| |
| <!--#include virtual="footer.txt"--> |