.\" Copyright (C) 1994-2018 Altair Engineering, Inc. .\" For more information, contact Altair at www.altair.com. .\" .\" This file is part of the PBS Professional ("PBS Pro") software. .\" .\" Open Source License Information: .\" .\" PBS Pro is free software. You can redistribute it and/or modify it under the .\" terms of the GNU Affero General Public License as published by the Free .\" Software Foundation, either version 3 of the License, or (at your option) any .\" later version. .\" .\" PBS Pro is distributed in the hope that it will be useful, but WITHOUT ANY .\" WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS .\" FOR A PARTICULAR PURPOSE. .\" See the GNU Affero General Public License for more details. .\" .\" You should have received a copy of the GNU Affero General Public License .\" along with this program. If not, see . .\" .\" Commercial License Information: .\" .\" For a copy of the commercial license terms and conditions, .\" go to: (http://www.pbspro.com/UserArea/agreement.html) .\" or contact the Altair Legal Department. .\" .\" Altair’s dual-license business model allows companies, individuals, and .\" organizations to create proprietary derivative works of PBS Pro and .\" distribute them - whether embedded or bundled with other software - .\" under a commercial license agreement. .\" .\" Use of Altair’s trademarks, including but not limited to "PBS™", .\" "PBS Professional®", and "PBS Pro™" and Altair’s logos is subject to Altair's .\" trademark licensing policies. .\" .TH pbs_resources 7B "18 April 2018" Local "PBS Professional" .SH NAME .B pbs_resources \- computational resources for PBS jobs .SH DESCRIPTION PBS provides computational resources for jobs, limits on using resources, and control over how jobs are placed on the vnodes from which resources may be allocated for a job. PBS provides built-in resources and custom resources for some systems, and allows the administrator to define custom resources. The administrator can specify which resources are available on a given vnode, as well as at the queue or server level (e.g. walltime). Resources can be "stretched" across vnodes. See the .I qmgr(8B) man page and the .I PBS Professional Administrator's Guide. Resources defined at the queue or server level apply to an entire job. If resources are defined at the host level, they apply only to the part of the job running on that host. For information on defining resources, see the .I PBS Professional Administrator's Guide. .B Allocating Resources to Jobs .br Resources are allocated to jobs when jobs explicitly request them, when hooks assign them, and when defaults are assigned by PBS. Resources are explicitly requested in this order of precedence: .RS 3 Through a .B qalter operation .br Via the .B qsub command line .br Via PBS job script directives .RE The administrator writes any hooks that assign resources to jobs. Default resources can be specified by the administrator (in order of precedence) for .B qsub arguments, queues, the server, and vnodes. .B Limits on Resource Usage .br A resource allocated to a job, whether explicitly requested or assigned via hooks or defaults, places a limit on the amount of that resource a job can use. This limit applies to how much the job can use on each vnode and to how much the whole job can use. .B Placing Jobs on Vnodes .br Jobs are placed on vnodes according to their explicit placement request, or according to default placement rules. The explicit placement request can be specified (in order of precedence) using .B qalter, qsub, and PBS job script directives. Default placement rules can be specified for queues and the server, and rules for default placement take effect if no other placement specifications exist. A job's placement request is specified in its .I place statement. .B Old Syntax .br A job submitted with the old node or resource specification syntax will be converted to the new select and place syntax. If the job is submitted with .I -lnodes= or .I -lncpus= it will be converted to .I -l select= and .I -l place=. See .B BACKWARD COMPATIBILITY. Jobs cannot use both new and old syntax for resource requests. .B Allocating Chunks and Job-wide Resources .br Job resource requests are defined either at the host level in .I chunks specified in a .I selection statement, or as job-wide resources. .br Job-wide format: .RS 3 .nf .I qsub ... -l = .RE Chunk format: .RS 3 .I -l select= .fi .RE The only resources that can be requested in chunks are host-level resources, such as .I mem and .I ncpus. The only resources that can be in a job-wide request are server-level or queue-level resources, such as .I walltime. .IP " " 3 .RS .B Requesting Resources in Chunks .br A .I chunk declares the value of each resource in a set of resources which are to be allocated as a unit to a job. All of a chunk must be taken from a single vnode. A .I chunk request is a host-level request, and it must be for a host-level resource. A .I chunk is the smallest set of resources that will be allocated to a job. It is one or more .I = statements separated by a colon, e.g.: .RS 3 ncpus=2:mem=10GB:host=Host1 .br ncpus=1:mem=20GB:arch=linux .RE .I Chunks are described in a .I selection statement, which specifies how many of each kind of chunk. A selection statement is of the form: .RS 3 .I -l select=[:][+[:] ...] .RE If .I N is not specified, it is taken to be 1. .br No spaces are allowed between chunks. Example of multiple chunks in a .I selection statement: .RS 3 -l select=2:ncpus=1:mem=10GB+3:ncpus=2:mem=8GB .RE .B Requesting Job-wide Resources .br A job-wide resource request is for resource(s) at the server or queue level. This resource must be a server-level or queue-level resource. A job-wide resource is designed to be used by the entire job, and is available to the complex, not just one execution host. Job-wide resources are requested outside of a .I selection statement, in this form: .RS 3 .I -l =[,= ...] .RE where .I resource name is either a consumable resource or a time-based resource such as .I walltime. Example of job-wide resources: walltime .B Do not mix old style resource or node specification with the new select and place statements. Do not use one in a job script and the other on the command line. This will result in an error. See the qsub(1B) man page for a detailed description of how to request resources and place jobs on vnodes. .B Applying Resource Defaults .br When a default resource is defined, it is applied to a job when that job does not explicitly request the resource. Jobs get default resources, both .I job-wide and per- .I chunk with the following order of precedence, from .RS 3 Default .B qsub arguments .br Default queue resources .br Default server resources .RE For each .I chunk in the job's selection statement, first queue chunk defaults are applied, then server chunk defaults are applied. If the chunk does not contain a resource defined in the defaults, the default is added. The chunk defaults are specified with "default_chunk.". For example, if the queue in which the job is enqueued has the following defaults defined: .RS 3 default_chunk.ncpus=1 .br default_chunk.mem=2gb .RE a job submitted with this selection statement: .RS 3 select=2:ncpus=4+1:mem=9gb .RE will have this specification after the .I default_chunk elements are applied: .RS 3 select=2:ncpus=4:mem=2gb+1:ncpus=1:mem=9gb .RE In the above, mem=2gb and ncpus=1 are inherited from .I default_chunk. If a default job-wide resource is defined which is not specified in a job's resource request, it is added to the resource request. Queue defaults are applied first, then server defaults are applied to any remaining gaps in the resource request. .B Specifying Default Resources .br The administrator can specify default resources on the server and queue. These resources can be job-wide or apply to chunks. Job-wide resources are specified via .I resources_default on the server or queue, and chunk resources are specified via .I default_chunk on the server or queue. The administrator can specify default resources to be added to any qsub arguments via the server's .I default_qsub_arguments attribute. .B Specifying Default Placement .br The administrator can specify default job placement by setting a value for .I resources.default at the queue or server. See the qmgr(8B) man page for how to set default resources. .B How Default Resources Work When .B Moving Jobs Between Queues .br If the job is moved from the current queue to a new queue, any default resources in the job's resource list are removed. This includes a select specification and place directive generated by the rules for conversion from the old syntax. If a job's resource is unset (undefined) and there exists a default value at the new queue or server, that default value is applied to the job's resource list. If either .I select or .I place is missing from the job's new resource list, it will be automatically generated, using any newly-inherited default values. Example: .RS 3 Given the following set of queue and server default values: .IP Server 3 resources_default.ncpus=1 .IP "Queue QA" 3 resources_default.ncpus=2 .br default_chunk.mem=2gb .IP "Queue QB" 3 default_chunk.mem=1gb .br no default for ncpus .LP The following illustrate the equivalent select specification for jobs submitted into queue QA and then moved to (or submitted directly to) queue QB: .IP "qsub -l ncpus=1 -lmem=4gb" 3 In QA: select=1:ncpus=1:mem=4gb - no defaults need be applied .br In QB: select=1:ncpus=1:mem=4gb - no defaults need be applied .IP "qsub -l ncpus=1" 3 In QA: select=1:ncpus=1:mem=2gb .br In QB: select=1:ncpus=1:mem=1gb .IP "qsub -lmem=4gb" 3 In QA: select=1:ncpus=2:mem=4gb .br In QB: select=1:ncpus=1:mem=4gb .IP "qsub -l nodes=4" 3 In QA: select=4:ncpus=1:mem=2gb .br In QB: select=4:mem=1gb .IP "qsub -l mem=16gb -l nodes=4" 3 In QA: select=4:ncpus=1:mem=4gb .br In QB: select=4:ncpus=1:mem=4gb .RE .RE .LP .B Limits on Resource Usage .br Each chunk's per-chunk limits determine how much of any resource can be used in that chunk. Per-chunk resource usage limits are established by per-chunk resources, both from explicit requests and from defaults. .I Job-wide resource limits set a limit for per-job resource usage. .I Job-wide resource limits are established both by requesting job-wide resources and by summing per-chunk consumable resources. .I Job-wide resource limits from sums of all chunks, including defaults, override those from job-wide defaults and resource requests. Limits include both explicitly requested resources and default resources. If a job-wide resource limit exceeds queue or server restrictions, it will not be put in the queue or accepted by the server. If, while running, a job exceeds its limit for a consumable or time-based resource, it will be terminated. See the .I PBS Professional Administrator's Guide. .B Controlling Placement of Jobs .br Jobs are placed on vnodes according to their .I place statements. The .I place statement is specified, in order of precedence, via: .RS 3 Explicit placement request in .B qalter .br Explicit placement request in .B qsub .br Explicit placement request in PBS job script directives .br Default .B qsub place statement .br Queue default placement rules .br Server default placement rules .br Built-in default conversion and placement rules .RE The .I place statement may be not be used without the .I select statement. For a detailed description of the .I place statement, see the qsub(1B) man page, or the .I PBS Professional User's Guide. Note that vnodes can have sharing attributes that override job placement requests. See the .I pbs_node_attributes(7B) man page. .LP .RS 3 .B Default Placement .br If, after all defaults have been applied to a resource request that contains a selection statement, there is no place statement, then .I arrangement is set to .I free. Default .I sharing is .I shared. If the job's place statement does not contain .I group=resource, then a grouping defined at the queue level may be used, or a grouping defined at the server level if there is none at the queue level. .B Placement of Jobs Submitted .B with Old Syntax .br A job submitted with a node ( .I -lnodes= ) or resource ( .I -lncpus= ) specification will be converted to select and place, according to the rules described below in .B BACKWARD COMPATIBILITY. .RE .B Boolean Resources .br A Boolean resource can be either true or false. A resource request for a Boolean specifies the required value for the Boolean resource. For example, if some vnodes have .I green=true and some have .I red=true, a selection statement for two vnodes, each with one CPU, all green and no red, would be: .RS 3 -l select=2:green=true:red=false:ncpus=1 .RE .B Consumable Resources .br Consumable resources are those whose use by a job reduces the amount available to other concurrent jobs, e.g. memory .I (mem), CPUs (ncpus) and licenses. Non-consumable resources include time-based resources such as .I walltime and CPU time .I (cput), and string-value resources such as architecture .I (arch). .B Custom Resources .br Custom resources are site-defined and site-dependent. The administrator defines custom resources. These are typically used for licenses and scratch space. PBS provides custom resources specifically for Cray systems. See the .I PBS Professional Administrator's Guide. A job requesting a floating license must specify it outside of a selection statement, as a job-wide resource limit. A job requesting a node-locked license must specify it inside a selection statement in a chunk. See your system administrator. Refer to the .I PBS Professional User's Guide. Custom resources can be created to be invisible or read-only for unprivileged users. See the pbsnodes(8B), pbs_rstat(1B), pbs_rsub(1B), qalter(1B), qselect(1B), qstat(1B), and qmgr(8B) man pages. These restricted resources cannot be requested by a job via the .B qsub command, regardless of privilege. .B Behavior of Unset Resources .br An unset resource is undefined. An unset numerical resource (i.e. float, long, size, or time) at the host level behaves as if its value is zero, but at the server or queue level it behaves as if it were infinite. An unset string or string array resource at the server, queue or vnode level cannot be matched by a job's resource request. An unset Boolean resource at a server, queue, or vnode behaves as if that resource is set to "false". .SH Resources Built Into PBS .IP accelerator 8 Indicates whether this vnode is associated with an accelerator. Used for requesting accelerators. .br On Cray, this resource exists only when there is at least one associated accelerator. .br Behavior: .RS .IP True 3 On Cray, this is set to .I True when there is at least one associated accelerator whose state is UP. .IP False 3 On Cray, set to .I False when all associated accelerators are in state DOWN. .RE .IP Host-level. Can be requested only inside of a select statement. .br Not consumable. .br Format: .I Boolean .br Python type: .I bool .br Default: .I False .IP accelerator_memory 8 Indicates amount of memory for accelerator(s) associated with this vnode. .br On Cray, PBS sets this resource only on vnodes with at least one accelerator with state = UP. For Cray, PBS sets this resource on the 0th NUMA node (the vnode with PBScrayseg=0), and the resource is shared by other vnodes on the compute node. .br For example, on vnodeA_2_0: .br .nf resources_available.accelerator_memory=4196mb On vnodeA_2_1: resources_available.accelerator_memory=@vnodeA_2_0 .fi .br A scheduler rounds all resources of type .I size up to the nearest kb. .br Host-level. Can be requested only inside of a select statement. .br Consumable. .br Format: .I Size .br Python type: .I pbs.size .br Default: No default .IP accelerator_model 8 Indicates model of accelerator(s) associated with this vnode. .br On Cray, PBS sets this resource only on vnodes with at least one accelerator with state = UP. .br Host-level. Can be requested only inside of a select statement. .br Non-consumable. .br Format: .I String .br Python type: .I str .br Default: No default .IP aoe 8 List of AOEs (Application Operating Environments) that can be instantiated on this vnode. Case-sensitive. An AOE is the environment that results from provisioning a vnode. Each job can request at most one AOE. Cannot be set on server's host. .br Valid values: Allowable values are site-dependent. .br Host-level. Can be requested only inside of a select statement. .br Non-consumable. .br Type: .I String_array .br Python type: .I str .br Default: No default .IP arch 8 System architecture. One architecture can be defined for a vnode. One architecture can be requested per vnode. .br Valid values: .RS 11 Allowable values and effect on job placement are site-dependent. .RE .IP Host-level. Can be requested only inside of a select statement. .br Non-consumable. .br Type: .I String .br Python type: .I str .br Default: No default .IP cput 8 Amount of CPU time used by the job for all processes on all vnodes. Establishes a job-wide resource limit. .br Job-wide. Can be requested only outside of a select statement. .br Non-consumable. .br Type: .I Duration .br Python type: .I pbs.duration .br Default: No default .IP energy 8 The energy used by a job. Set by PBS. .br Consumable. .br Format: .I Float .br Units: .I kWh .br Default: No default .IP eoe 8 Stands for "Energy Operational Environment". When set on a vnode in .I resources_available.eoe, contains the list of available power profiles. When set for a job in .I Resource_List.eoe, can contain at most one power profile. (A job can request only one power profile.) .br Non-consumable. .br Format: .I String_array .br Python type: .I str .br Default value for .I resources_available.eoe: unset .br Default value for .I Resource_List.eoe: no default .IP exec_vnode 8 The vnodes that PBS estimates this job will use. Cannot be requested for a job; used for reporting only. Read-only. .br Type: .I String .br Python type: .I str .br Default: No default .IP file 8 Size of any single file that may be created by the job. .br The scheduler rounds all resources of type .I size up to the nearest kb. .br Job-wide. Can be requested only outside of a select statement. .br Type: .I Size .br Python type: .I pbs.size .br Default: No default .IP hbmem 8 High-bandwidth memory. Available only on some architectures such as Xeon Phi KNL. .br Valid values: Greater than or equal to zero. .br Host-level. .br Format: .I Size .br Python type: .I pbs.size .br Default: No default .IP host 8 Name of execution host. Cannot be changed. Site-dependent. .br Can be requested only inside of a select statement. .br Behavior: .RS 11 Automatically set to the short form of the hostname in the .I Mom attribute. .br On Cray compute node, set to .I _. .RE .IP Type: .I String .br Python type: .I str .IP max_walltime 8 Maximum walltime allowed for a shrink-to-fit job. Job's actual walltime is between .I max_walltime and .I min_walltime. PBS sets .I walltime for a shrink-to-fit job. If .I max_walltime is specifed, .I min_walltime must also be specified. Cannot be used for .I resources_min or .I resources_max. Cannot be set on job arrays or reservations. .br Valid values: Must be greater than or equal to .I min_walltime. .br Can be requested only outside of a select statement. .br Non-consumable. .br Format: .I Duration .br Python type: .I pbs.duration .br Default: .I 5 years .IP mem 8 Amount of physical memory i.e. workingset allocated to the job, either job-wide or host-level. .br The scheduler rounds all resources of type .I size up to the nearest kb. .br Can be requested only inside of a select statement. .br Consumable. .br Format: .I Size .br Python type: .I pbs.size .br Default: No default .IP min_walltime 8 Minimum walltime allowed for a shrink-to-fit job. When .I min_walltime is specified, job is a shrink-to-fit job. If this attribute is set, PBS sets the job .I walltime. Job's actual .I walltime is between .I max_walltime and .I min_walltime. Cannot be used for .I resources_min or .I resources_max. Cannot be set on job arrays or reservations. .br Valid values: Must be less than or equal to .I max_walltime. .br Can be requested only outside of a select statement. .br Non-consumable. .br Type: .I Duration .br Python type: .I pbs.duration .br Default: No default .IP mpiprocs 8 Number of MPI processes for this chunk. Cannot use sum from chunks as job-wide limit. .br The number of lines in PBS_NODEFILE is the sum of the values of .I mpiprocs for all chunks requested by the job. For each chunk with .I mpiprocs=P, the host name for that chunk is written to the PBS_NODEFILE .I P times. .br Host-level. Can be requested only inside of a select statement. .br Format: .I Integer .br Python type: .I int .br Default: .RS 11 .nf If ncpus > 0 \ \ \ 1 Otherwise \ \ \ 0 .fi .RE .IP .IP naccelerators 8 Number of accelerators on the host. PBS sets this resource to the number of accelerators with state = .I UP. .br On Cray, PBS sets this resource only on vnodes whose hosts have at least one accelerator with state = .I UP. For Cray, PBS sets this resource on the 0th NUMA node (the vnode with PBScrayseg=0), and the resource is shared by other vnodes on the compute node. .nf For example, on vnodeA_2_0: resources_available.naccelerators=1 On vnodeA_2_1: resources_available.naccelerators=@vnodeA_2_0 .fi Host-level. Can be requested only inside of a select statement. .br Consumable. .br Format: .I Integer .br Python type: .I int .br Default: No default .IP nchunk 8 Number of chunks requested between plus symbols in a select statement. For example, if the select statement is .br \ \ \ -lselect=4:ncpus=2+12:ncpus=8 .br the value of nchunk for the first part is 4, and for the second part it is 12. The .I nchunk resource cannot be named in a select statement; it can only be specified as a number preceding the colon, as in the above example. When the number is omitted, .I nchunk is .I 1. .br This resource can be used to specify the default number of chunks at the server or queue Example: .br \ \ \ set queue myqueue default_chunk.nchunk=2 .br This resource cannot be used in server and queue .I resources_min and .I resources_max. .br Non-consumable. .br Format: .I Integer .br Python type: .I int .br Default value: .I 1 .IP ncpus 8 Number of processors. .br Can be requested only inside of a select statement. .br Consumable. .br Format: .I Integer .br Python type: .I int .br Default: No default .IP nice 8 Nice value with which the job is to be run. Host-dependent. .br Can be requested only outside of a select statement. .br Format: .I Integer .br Python type: .I int .br Default: No default .IP nodect 8 .B Deprecated. Number of chunks in resource request from selection directive, or number of nodes requested from node specification. Otherwise defaults to value of 1. Can be requested only outside of a select statement. Read-only. .br Format: .I Integer .br Python type: .I int .br Default: .I 1 .IP nodes .B Deprecated. .br Number of hosts requested. .br Format: .I Integer .br See .B BACKWARD COMPATIBILITY. .IP ompthreads 8 Number of OpenMP threads for this chunk. .br Cannot use sum from chunks as job-wide limit. .br For the MPI process with rank 0, the environment variables NCPUS and OMP_NUM_THREADS are set to the value of .I ompthreads. For other MPI processes, behavior is dependent on MPI implementation. See the .I PBS Professional Administrator's Guide. .br Can be requested only inside of a select statement. .br Non-consumable. .br Format: .I Integer .br Python type: .I int .br Default: Value of .I ncpus .IP PBScrayhost 8 Used to differentiate a Cray system, containing ALPS, login nodes running PBS MoMs, and compute nodes, from a separate Cray system with a separate ALPS. .br Non-consumable. .br Format: .I String .br Python type: .I str .br Default: Value of .I mpp_host for this system .IP "PBScraylabel_