Parallel Make

Privacy & Legal Notice

Currently, we recommend using GNU make's feature for parallel execution. GNU make can be found at /usr/local/bin/gmake on our IBM machines. Note that GNU make's parallel feature can only make use of the CPUs on a single node. Thus, an example make command for use on an eight CPU machine would be

gmake -j 8

While GNU make allows users to execute a parallel make on a single node, the pmake utility was designed to use MPI to coordinate a parallel make across multiple nodes.

Please note that although pmake (described below) is available for use, it is no longer supported by the Development Environment Group.

Important: There are known problems with pmake regarding recursive calls to pmake, as through $(MAKE). Typically, these calls will start a new pmake job.  In some parallel environments this can cause the pmake MPI job to hang.

PMAKE - A Parallel MPI Version of GNU Make

The following are comments provided by pmake developer Rick Johnson:

Pmake is a derivative of GNU Make. It has been modified to use the MPICH message passing interface in order to achieve parallelism when operating on a distributed memory machine. I started with a version of GNU Make from the Intel web site that was targeted for the Paragon system. The various nodes communicate with each other via MPI. I have ported this product to run on the following platforms:

The user of this product specifies the number of processors to use. Pmake uses one of the processors as a "master" node and the remainder as "child" nodes. The Master node performs the usual makefile processing, builds the dependency trees, and then acts as a "taskmaster" for the other nodes. The user uses the -j input option to specify the number of processors. Pmake will cause independent tasks to be run in parallel. This usually consists of the compile step when building a software product. It could, however, perform any tasks in parallel that are determined to be independent.

This product has exhibited near perfect scalability. Given that one of the processors is used as a "master" node and, therefore, does no compiles, the remaining processors scale quite well. The following table illustrates the results I obtained building a code on the IBM SP2:

Pmake Scalability
Number of
Wall-clock Time
(standard make)
4 12
6 8
8 6

A Warning

If your computer has a limited number of compiler licenses, you could have a problem. If you specify more processors than you have licenses, your job will probably abort with some nonsensical license server error message. On the IBM SP2, I had enough licenses, but the IBM Network License Server was not up to the task of checking in and out licenses as rapidly as my job required. I was building a code that has more than 1000 small to medium sized Fortran files. If I specified more than 6 processors, my job aborted with an IBM Network License Server error message.

Source Code Availability

The source code, scripts, and makefiles for pmake are available for downloading. To uncompress the compressed tar file, use uncompress.


Please send your questions or comments about this product to: Chris Chambreau.

Last modified July 7, 2003.
UCRL-MI-126792 Rev. 1

High Performance Computing at LLNL   Lawrence Livermore National Laboratory