This is an old revision of the document!
Getting work done: what is job scheduling?
The idea of work on a computer system means entering data (input), running programs that make use of the data, and analyzing the data produced (output). The term programs equates with two entities on Linux systems:
- binary executable: source code (Fortran, C/C++, etc.) is compiled and linked to produce low-level machine code executed directly on the computer's CPU(s)
- script: source code is read and interpreted on-the-fly into low-level machine code that is executed on the computer's CPU(s)
Getting work done on your laptop or desktop computer usually involves a graphical user interface where your key presses, gestures, and taps or clicks are interpreted to execute programs and enter data. A less intuitive – but far more powerful – command-line interface relies on your entering textual commands to accomplish the same tasks.
Command-line interface
The default command-line interface on our HPC systems is the Bash shell. The syntax and grammar of Bash encompasses most of the typical constructs of computer programming languages, but purpose-wise Bash focuses heavily on the action of executing other programs and not computation or data processing. The programs executed by Bash on your behalf implement the computation and data processing tasks most closely associated with your work.
Getting work done on our HPC systems requires understanding of the Bash shell. An HPC user's efficiency and productivity is to an extent directly proportional to his or her familiarity with the Bash shell.
Users of HPC systems often have more work than there are resources in the system.
They may also have //workflows// consisting of sequences of long-running tasks with dependencies between the individual tasks.