In Q, a task represents the application of a particular function (or graph) to a particular set of bound input and output parameters. Multiple tasks may apply the same function, with a different set of input and output parameters.
A task is usually executed multiple times, to produce output stream elements with varying context. If the function referenced by a task produces one stream element per invocation, and five stream elements are demanded from one of the task's output streams, it will be executed five times.
A normal task consists of the following:
Most tasks represent the application of a user or library defined function. There are, however, two special classes of tasks defined in the Q ISA. One is tasks which perform application input or output (I/O), and the other class is primitive tasks which provide functionalities not available to ordinary tasks -- such as conditional execution or data remapping. These special classes differ from normal tasks in how the function name is specified and how they are handled by the control machine.