Jobs and Tasks Overview
Updated: May 20, 2009
Applies To: Windows HPC Server 2008
A Windows HPC Server 2008 job is a resource request. A job requests “X number of Y resources for a Z amount of time.” For example, a job might request eight nodes in the “Have Big Memory” group for two hours.
How long a job waits in the scheduler queue depends on a number of factors, including:
-
What resources the job needs
-
What jobs are currently running
-
What other jobs are in the queue
-
The scheduling policies configured by the cluster administrator
The amount of time a job must wait in the queue can be decreased by:
-
Submitting the job with high priority
-
Specifying an accurate maximum run time for the job
-
Requesting the minimum resources possible
-
Being unspecific about the types of resources required
When resources are allocated to a job, the scheduler uses those resources to execute the tasks in the job. A task is a command to execute, along with some associated information about how that command needs to run.
A job may contain one task, many tasks, or no tasks (interpreted as: “Reserve some resources for me and I’ll figure out what to do with them later”). The tasks within a job can be entirely independent, or they might depend on each other and need to run in a specific order. You can establish the order in which tasks are run by defining dependencies between tasks.
There are two types of tasks:
-
Basic task A command line with some metadata about how to run it. For example, to run a Message Passing Interface (MPI) application, create a basic task in which the command is
mpiexec [mpi_options] <myapp.exe> [arguments], and the task requests a number of resources that span many nodes. -
Parametric task A command that includes the wildcard character (*). For example,
<myapp.exe * > [arguments]. The command runs multiple times, with each instance using a different value to replace the wildcard.
Additional references