HP XC System Software User's Guide Version 3.2

then \
echo "Making $$i ..."; \
(cd $$i; make); \
echo ""; \
fi; \
done
clean:
@ \
for i in ${HYPRE_DIRS}; \
do \
if [ -d $$i ]; \
then \
echo "Cleaning $$i ..."; \
(cd $$i; make clean); \
fi; \
done
veryclean:
@ \
for i in ${HYPRE_DIRS}; \
do \
if [ -d $$i ]; \
then \
echo "Very-cleaning $$i ..."; \
(cd $$i; make veryclean); \
fi; \
done
11.3.1 Example Procedure 1
Go through the directories serially and have the make procedure within each directory be parallel.
For the purpose of this exercise we are only parallelizing the “make all” component. The “clean”
and “veryclean” components can be parallelized in a similar fashion.
Modified Makefile:
all:
@ \
for i ${HYPRE_DIRS}; \
do \
if [ -d $$i ]; \
then \
echo "Making $$i ..."; \
echo $(PREFIX) $(MAKE) $(MAKE_J) -C $$i; \
$(PREFIX) $(MAKE) $(MAKE_J) -C $$i; \
fi; \
done
By modifying the Makefile to reflect the changes illustrated above, we will now be processing
each directory serially and parallelize the individual makes within each directory. The modified
Makefile is invoked as follows:
$ make PREFIX=srun n1 N1 MAKE_J='-j4'
11.3.2 Example Procedure 2
Go through the directories in parallel and have the make procedure within each directory be
serial.
For the purpose of this exercise we are only parallelizing the “make all” component. The “clean”
and “veryclean” components can be parallelized in a similar fashion.
Modified Makefile:
all:
11.3 Using the GNU Parallel Make Capability 121