next up previous contents
Next: 9 Current Usage of Up: 8 Algorithm of VMake Previous: 8.4 TAC Classes

8.5 Parallel Execution

  VMake knows all dependences between files and has full access to the underlying system. All update actions are asynchronous in sub-processes or batch jobs in parallel to its own execution. Multiple jobs may be submitted at the same time by using the queuing sub-agent of VMake. The queued update actions in the state ready (see Fig.  8.1) are checked if any hosts are batch queue is free to execute the job. On termination of a job all files in the state queued and wready are checked if the can be changed to ready because of all of their dependent files are built. The standard output and the error messages of each job are displayed after the job finished. The error messages are additionally copied to the file specified by the command line option errorOutput for later analyzing. The parallel execution mode and the asynchronous behavior of the update actions can be turned of with the command line option vsync.

Parallelizing the build process can lower the time to rebuild a large scale software significantly. A simple definition file for parallel execution on a workstation cluster is shown in Listing 8.1. This example shows definitions for two different configurations using the configuration key of the defhost (see defhost) and defqueue (see defqueue).


 listing4745
In this example the same definition file vmake.cf can used under UNIX and VMS by specifying the configuration for the definitions. This file resides in the root directory of all projects defined by the environment variable VPROJECT or in the home directory of the user. Only the first matching definition for a host or batch queue is used. In Listing 8.1 this means if VMake is executed on the UNIX host ``host1'', two priority jobs are allowed on this host (first definition) and the second definition is ignored. The rules allowed in configuration file are shown in defhost, defqueue and defversion (defversion).
vmrule4762

vmrule4776
These two are used to define the usable hosts and batch queues for parallel execution of jobs. The defversion is used to define a default build version for a configuration which can be overridden in any project definition file vmake.prj (see Section 4.1.1). The name for the key configuration is a configuration, either a predefined one (see Section 5.1) or a user defined one (see Appendix E). The value of host and queue are the host names for execution or the name of a batch queue. The key priority may be specified for hosts to execute update actions at standard interactive priority. The default is to lower the priority of jobs submitted by VMake to reduce the impact on the interactive performance of the computer. The value of the key jobs sets the maximum number of jobs allowed to be

  1. executed in parallel on a host,
  2. queued at once to a batch queue.
The default number of jobs for a host or queue is one. The following strings are valid for the key command:
spaceitem4803
Commands are only executed for a specific configuration, if the corresponding definition in its configuration file (see Chapter 5 and Appendix E) exists. In addition to the positive addition of commands, commands can be excluded from ``all'' be using a prefix ``no''. If no host or batch queue supports ``vmake'' the local host where VMake executes is used for automatic code generation with UNFUG and TAC.


next up previous contents
Next: 9 Current Usage of Up: 8 Algorithm of VMake Previous: 8.4 TAC Classes

IUE WWW server
Fri Jan 3 17:00:13 MET 1997