
MS     = ms -notest -noprobe -nocancel -noanysource
MSCC   = mscc -DSAFETY

all: simple barrier allreduce reduce pack bcast arithmetic mpsc \
     sendrecv deadlock

simple: simple_1 simple_2 simple_3

barrier: barrier_1 barrier_2

allreduce: allreduce_1 allreduce_2 allreduce_3

reduce: reduce_1 reduce_2 reduce_3

pack: pack_1

pack_bad: pack_bad_1

bcast: bcast_1 bcast_2 bcast_3 bcast_4

arithmetic: arithmetic_0 arithmetic_1

mpsc: mpsc_1

sendrecv: sendrecv_1 sendrecv_2 sendrecv_3 sendrecv_4 sendrecv_5

deadlock: deadlock_1 deadlock_2 deadlock_3

simple_1: Makefile clean simple.prom
	$(MS) -dl -np=2 -buf=2 -req=2 simple.prom
	$(MSCC)
	./pan -n

simple_2: Makefile clean simple.prom
	$(MS) -dl -block -chansize=2 -np=2 simple.prom
	$(MSCC)
	./pan -n

simple_3: Makefile clean simple.prom
	$(MS) -dl -block -chansize=0 -np=2 simple.prom
	$(MSCC)
	./pan -n

barrier_1: clean Makefile barrier.prom
	$(MS) -dl -np=4 -buf=2 -req=4 barrier.prom
	$(MSCC)
	./pan -n

barrier_2: clean Makefile barrier.prom
	$(MS) -dl -np=4 -block -chansize=3 barrier.prom
	$(MSCC)
	./pan -n

allreduce_1: clean Makefile allreduce.prom
	$(MS) -dl -np=4 -buf=2 -req=4 allreduce.prom
	$(MSCC)
	./pan -n

allreduce_2: clean Makefile allreduce.prom
	$(MS) -dl -np=4 -block -chansize=2 allreduce.prom
	$(MSCC)
	./pan -n

allreduce_3: clean Makefile allreduce.prom
	$(MS) -np=5 -block -chansize=0 allreduce.prom
	$(MSCC)
	./pan -n

reduce_1: clean Makefile reduce.prom
	$(MS)  -np=4 -buf=10 -req=4 reduce.prom
	$(MSCC)
	./pan -n

reduce_2: clean Makefile reduce.prom
	$(MS)  -np=4 -block -chansize=2 -dl reduce.prom
	$(MSCC)
	./pan -n

reduce_3: clean Makefile reduce.prom
	$(MS)  -np=4 -block -chansize=0 reduce.prom
	$(MSCC)
	./pan -n

pack_1: clean Makefile pack.prom
	$(MS) -dl -np=2 -buf=4 -req=2 pack.prom
	$(MSCC)
	./pan -n

pack_bad_1: clean Makefile pack_bad.prom
	$(MS) -np=2 -buf=4 -req=2 pack_bad.prom
	$(MSCC)
	./pan -n
	./pan -n -r

bcast_1: clean Makefile bcast.prom
	$(MS) -dl -np=4 -buf=6 -req=4 bcast.prom
	$(MSCC)
	./pan -n

bcast_2: clean Makefile bcast.prom
	$(MS) -dl -np=4 -block -chansize=2 bcast.prom
	$(MSCC)
	./pan -n

bcast_3: clean Makefile bcast.prom
	$(MS) -dl -np=6 -block -chansize=2 bcast.prom
	$(MSCC) -DVECTORSZ=4000
	./pan -n

bcast_4: clean Makefile bcast.prom
	$(MS) -dl -np=10 -block -chansize=0 bcast.prom
	$(MSCC) -DVECTORSZ=3000 -DCOLLAPSE
	./pan -n

arithmetic_0: clean Makefile arithmetic.prom
	$(MS) -np=1 -buf=0 -req=0 -sym=0 arithmetic.prom
	$(MSCC)
	./pan -n
	./pan -r -n

arithmetic_1: clean Makefile arithmetic.prom
	$(MS) -np=1 -buf=0 -req=0 -sym=2 arithmetic.prom
	$(MSCC)
	./pan -n

mpsc_1: clean Makefile mpsc.prom
	$(MS) -DNPRODUCERS=2 -np=3 -buf=1 -req=4 mpsc.prom
	$(MSCC)
	./pan -n

sendrecv_1: clean Makefile sendrecv.prom
	$(MS) -DMPI_SENDRECV -np=3 -buf=3 -req=6 sendrecv.prom
	$(MSCC)
	./pan -n

sendrecv_2: clean Makefile sendrecv.prom
	$(MS) -DMPI_SENDRECV -np=1 -buf=3 -req=2 sendrecv.prom
	$(MSCC)
	./pan -n

sendrecv_3: clean Makefile sendrecv.prom
	$(MS) -DMPI_SENDRECV -np=3 -block -chansize=0 sendrecv.prom
	$(MSCC)
	./pan -n

sendrecv_4: clean Makefile sendrecv.prom
	$(MS) -DMPI_SENDRECV -np=3 -block -chansize=3 -dl sendrecv.prom
	$(MSCC)
	./pan -n

sendrecv_5: clean Makefile sendrecv.prom
	$(MS) -DMPI_SENDRECV -np=1 -block -chansize=1 -dl sendrecv.prom
	$(MSCC)
	./pan -n

deadlock_1: clean Makefile deadlock.prom
	$(MS) -v -np=2 -block -chansize=1 -dl deadlock.prom
	$(MSCC) -v
	./pan -n

deadlock_2: clean Makefile deadlock.prom
	$(MS) -v -np=2 -req=2 -buf=2 -dl deadlock.prom
	$(MSCC) -v
	./pan -n

deadlock_3: clean Makefile deadlock.prom
	$(MS) -v -np=2 -block -chansize=1 -dl deadlock.prom
	$(MSCC) -v
	./pan -n

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