qmake.1
NAME
qmake - distributed parallel make, scheduling by Grid Engine.
SYNTAX
qmake [options] -- [gmake options]
DESCRIPTION
Qmake is a parallel, distributed make(1) utility. Scheduling of the
parallel make tasks is done by Grid Engine. It is based on GNU make,
version 3.82 ("gmake). Both Grid Engine and GNU make command line
options can be specified. They are separated by "--".
All Grid Engine options valid with qsub(1) or qrsh(1) can be specified
with qmake. See submit(1) for a description of all Grid Engine command
line options. The GNU Make manual (via info) or the make(1) manual
page describes the gmake command line syntax.
The syntax of qmake makefiles corresponds to gmake and is described in
the "GNU Make Manual".
A typical qmake call will use the Grid Engine command line options -cwd
to have a scheduled make started in the current working directory on
the execution host, -v PATH if the Grid Engine environment is not set
up in the user's .cshrc Or .profile shell resource file, and also
request slots in a parallel environment (see sge_pe(5)).
If no resource request (Grid Engine command line option -l) is
specified, qmake will use the environment variable SGE_ARCH to request
the same architecture as the submit host for task execution. If
SGE_ARCH is set, the architecture specified in SGE_ARCH will be
requested by inserting the option -l arch=$SGE_ARCH into the command
line options. If SGE_ARCH is not set, the make tasks can be executed
on any available architecture. As this is critical for typical make
(compile) jobs, a warning will be output.
qmake has two different modes for allocating Grid Engine resources for
the parallel execution of tasks:
1. Allocation of resources using a parallel environment. If the -pe
option is used on the qmake command line, a parallel job is
scheduled by Grid Engine. The make rules are executed as tasks
within this parallel job.
2. Dynamic allocation of resources. If no parallel environment is
requested when submitting a qmake job, each make rule will
generate an individual Grid Engine qrsh job. All resource
requests given to qmake will be inherited by the jobs processing
the make rules.
In dynamic allocation mode, additional resource requests for individual
rules can be specified by preceding the rule by the definition of an
environment variable SGE_RREQ. The rule then takes the form
SGE_RREQ="request" rule
e.g.
SGE_RREQ="-l lic=1" cc -c ...
If such makefile rules are executed in a make utility other than qmake,
the environment variable SGE_RREQ will be set in the environment
established for the rule's execution - presumably without any effect.
EXAMPLES
qmake -cwd -v PATH -pe compiling 1-10 --
will request between 1 and 10 slots in parallel environment
"compiling". If the SGE_ARCH environment variable is set to the
machine architecture, a resource request will be inserted into the
qmake command line to start the qmake job on the same architecture as
the submit host. The make tasks will inherit the complete environment
of the calling shell, and as as many parallel tasks will execute as
slots have been granted by Grid Engine.
qmake -l arch=sol-sparc -cwd -v PATH -- -j 4
will submit each make rule as an individual qrsh job. A maximum of 4
tasks will be processed in parallel. The qmake job will be started on
a machine of architecture sol-sparc. This resource request will also
be inherited by the make tasks, i.e. all jobs created for the execution
of make tasks will request the architecture sol-sparc.
If the following Makefile is submitted with the above command line,
additional resource requests will be made for individual rules: For the
compile and link rules, compiler licenses (comp) and linker licenses
(link) will be requested, in addition to the resource request made for
the whole job (-l arch=sol-sparc) on the command line.
all: test
clean:
rm -f test main.o functions.o
test: main.o functions.o
SGE_RREQ="-l link=1" ld -o test main.o functions.o
main.o: main.c
SGE_RREQ="-l comp=1" cc -c -DALIASPATH=
functions.o: functions.c
SGE_RREQ="-l comp=1" cc -c -DALIASPATH=
The command line
qmake -cwd -v PATH -l arch=sol-sparc64 -pe make 3 --
will request 3 parallel make tasks to be executed on hosts of
architecture "sol-sparc64". The submit may be done on a host of any
architecture.
The shell script
#!/bin/sh
qmake -inherit --
can be submitted by
qsub -cwd -v PATH -pe make 1-10 [further sge options] <script>
Qmake will inherit the resources granted for the job submitted above
under parallel environment "make".
ENVIRONMENT VARIABLES
SGE_ROOT Specifies the location of the Grid Engine standard
configuration files.
SGE_CELL If set, specifies the default Grid Engine cell. To
address a Grid Engine cell qmake uses (in the order of
precedence):
The name of the cell specified in the environment
variable SGE_CELL, if it is set.
The name of the default cell, i.e. default.
SGE_DEBUG_LEVEL
If set, specifies that debug information should be
written to stderr. In addition the level of detail in
which debug information is generated is defined.
SGE_ARCH The architecture of the submit host. If this variable is
set in the submission environment, qmake will request
the given architecture for job execution (see
DESCRIPTION above).
KNOWN PROBLEMS
Slow NFS server
Very low file server performance may lead to problems on dependent
files.
Example: Host a compiles a.c to a.o, host b compiles b.c to b.o, host c
shall link program c from a.o and b.o. In case of very bad NFS
performance, host c might not yet see files a.o and b.o.
Multiple commands in one rule
If multiple commands are executed in one rule, the makefile has to
ensure that they are handled as one command line.
Example:
libx.a:
cc -c x.c
ar ru libx.a x.o
Building libx.a will fail if the commands are executed in parallel (and
possibly on different hosts). Write the following instead:
libx.a:
cc -c x.c ; ar ru libx.a x.o
or
libx.a:
cc -c x.c ; \
ar ru libx.a x.o
SEE ALSO
submit(1), sge_pe(5), as well as make(1) (GNU make manpage) and
TheGNUMakeManual via info(1).
COPYRIGHT
Qmake Is based on GNU Make (gmake), which is copyright by the Free
Software Foundation, Inc., Boston, MA, and is protected by the GNU
General Public License.
See sge_intro(1) and the information provided in
<sge_root>/doc/LICENCES for a statement of further rights and
permissions.
SGE 8.1.3pre 2011-05-20 QMAKE(1)
Man(1) output converted with
man2html