[comp.sys.apollo] an NCS distributed make utility ?

huntting@boulder.colorado.edu (Brad Huntting) (05/05/90)

Has anyone thought of altering the 'make' to support parallel 
compilation, using NCS?  It's been done for other platforms.

The following is from the Dynix (seqent's) man page for make.

PARALLEL SUPPORT
     Make includes a parallel processing ability.  If the string
     separating a target from its prerequisites is `:&' or `::&',
     make can run the command sequences to make the prerequisites
     simultaneously.  If two names are separated by an ampersand
     on the right side of a colon, those two may be created in
     parallel.

It would seem that this idea is a perfect match for NCS.  (Except
perhaps in the eyes of s/w sales people [personal opinions
deleted]).

Run make from any workstation, and compilations would be done on
available authorized nodes.  My understanding is that location
brokers could direct compilations to not run on workstations which
were in use.  (Please correct me if I'm mistaken)

#include "standard_disclaimer.h" /* not that it's needed... */
----------------------------------------------------------------------

brad
    huntting@sel.bldrdoc.gov
    huntting@boulder.colorado.edu

hedman@cernvax.UUCP (fredrik hedman) (05/05/90)

In article <20680@boulder.Colorado.EDU> huntting@boulder.colorado.edu (Brad Huntting) writes:

>Has anyone thought of altering the 'make' to support parallel 
>compilation, using NCS?  It's been done for other platforms.

I have just compiled version 3.58 of the GNU make program on an apollo.
This version of 'make', which by the way has the best documentation of
the 'make' tool I have ever read, supports 

	1) a '-j' option. If you do

	   make -j 5

	   5 parallell compilations will be launched when make starts up.
	   So if you have a product which contain 10 files, it will launch
	   5 compilations immediately and then do the rest of the files one
	   after the other. '-j' is short for job slots.

	2) there also seems to be support for some kind of networking 
	   facility. In the Makefile of 'make' one can read:

		# If there are remote execution facilities defined,
		# enable them with switches here (see remote-*.c).
		REMOTE =

So if you combine 1) and 2) above I suppose you get just what you 
are looking for. 

I have not yet figured out how to use 2) above, anyone else ?


		Fredrik Hedman
		Division SL
		CERN
		Geneva
		Switzerland

lisch@lisch.mentor.com (Ray Lischner) (05/08/90)

In article <1828@cernvax.UUCP> hedman@cernvax.UUCP (fredrik hedman) writes:
>I have just compiled version 3.58 of the GNU make program on an apollo.
>This version of 'make', which by the way has the best documentation of
>the 'make' tool I have ever read, supports 
...
>I have not yet figured out how to use 2) above, anyone else ?

I am trying to implement remote makes for Apollos.  A good solution
is to run a make server on each node, and a local make could
communicate with the servers to decide where to run a program.
In our environment, however, this does not work because I cannot
run a server process on other people's nodes.

Instead, the user supplies a list of nodes.  Make examines the load
averages on the nodes until it finds a suitable one, then it
runs the program there.  The problem is that there does not seem
to be a clean way to export the environment variables to the
remote make.  Until I can overcome this problem, my remote make
implementation is worthless.

I am interesting in knowing if others have tried or succeeded in
implementing remote makes, or if anyone has any suggestions.
--
Ray Lischner        UUCP: {uunet,apollo,decwrl}!mntgfx!lisch
-- 
Ray Lischner        UUCP: {uunet,apollo,decwrl}!mntgfx!lisch