# Makefile for MPI-Spin model of Example 2.1 from
# "MPI: The Complete Reference, vol. 1", 2nd ed.

# We check the assertions (in addition to generic
# properties) for various parameters.   There should
# be no violations.

# Author: Pujan Kafle <kafle@cis.udel.edu>
# Created: 19-jul-2007
# Last modified: 19-jul-2007

PREP        = rm -f pan* *trail mpi-spin-init.c
MS          = $(PREP); ms -noanysource -notest -nocancel -noprobe

PARAMS0 = -np=2 -block -chansize=0 
PARAMS1 = -np=4 -block -chansize=4
PARAMS2 = -np=4 -req=2 -buf=2

all: sendrecv_0 sendrecv_1 sendrecv_2 mpi_sendrecv test

sendrecv_0: sendrecv.prom
	$(MS) $(PARAMS0) sendrecv.prom
	mscc
	./pan -n > test1.txt

sendrecv_1: sendrecv.prom
	$(MS) $(PARAMS1) sendrecv.prom -dl
	mscc -DVECTORSZ=9000
	./pan -n > test2.txt

sendrecv_2: sendrecv.prom
	$(MS) $(PARAMS2) sendrecv.prom -dl
	mscc
	./pan -n > test3.txt

test: test.pl
	chmod 755 test.pl
	./test.pl

mpi_sendrecv: sendrecv.c
	mpicc -o sendrecv sendrecv.c
	mpiexec -n 2 ./sendrecv

clean:
	-rm -f sendrecv pan* *.trail *.out test*.txt mpi-spin-init.c *.err *~ 
