fix warnings
[pluto.git] / examples / common.mk
blob738f9f2d67f47436a3e873703300c78f8bce9b17
2 # common Makefile
4 # Gets included after the local Makefile in an example sub-directory
6 BASEDIR=$(dir $(lastword $(MAKEFILE_LIST)))
8 #CC=icc
9 CC=gcc
11 NPROCS=4
12 NTHREADS=4
13 PLC=$(BASEDIR)../polycc
15 # Intel MKL and AMD ACML library paths
16 MKL=/opt/intel/mkl
17 ACML=/usr/local/acml
19 ifeq ($(CC), icc)
20 OPT_FLAGS := -O3 -xHost -ansi-alias -ipo -fp-model precise
21 PAR_FLAGS := -parallel
22 OMP_FLAGS := -openmp
23 else
24 # for gcc
25 OPT_FLAGS := -O3 -march=native -mtune=native -ftree-vectorize
26 PAR_FLAGS := -ftree-parallelize-loops=$(NTHREADS)
27 OMP_FLAGS := -fopenmp
28 endif
30 CFLAGS += -DTIME
31 LDFLAGS += -lm
32 PLCFLAGS +=
33 TILEFLAGS +=
35 #PERFCTR=perfctr
37 ifdef PERFCTR
38 CFLAGS += -DPERFCTR -L/usr/local/lib64 -lpapi
39 endif
41 PLC=../../polycc
43 all: orig tiled par
45 $(SRC).opt.c: $(SRC).c
46 $(PLC) $(SRC).c $(PLCFLAGS) -o $@
48 $(SRC).tiled.c: $(SRC).c
49 $(PLC) $(SRC).c --tile $(TILEFLAGS) $(PLCFLAGS) -o $@
51 $(SRC).par.c: $(SRC).c
52 $(PLC) $(SRC).c --tile --parallel $(TILEFLAGS) $(PLCFLAGS) -o $@
54 $(SRC).lbpar.c: $(SRC).c
55 $(PLC) $(SRC).c --tile --parallel --partlbtile $(TILEFLAGS) $(PLCFLAGS) -o $@
57 $(SRC).mlbpar.c: $(SRC).c
58 $(PLC) $(SRC).c --tile --parallel --lbtile --multipar $(TILEFLAGS) $(PLCFLAGS) -o $@
61 orig: $(SRC).c
62 $(CC) $(OPT_FLAGS) $(CFLAGS) $(SRC).c -o $@ $(LDFLAGS)
64 orig_par: $(SRC).c
65 $(CC) $(OPT_FLAGS) $(CFLAGS) $(PAR_FLAGS) $(SRC).c -o $@ $(LDFLAGS)
67 opt: $(SRC).opt.c
68 $(CC) $(OPT_FLAGS) $(CFLAGS) $(SRC).opt.c -o $@ $(LDFLAGS)
70 tiled: $(SRC).tiled.c
71 $(CC) $(OPT_FLAGS) $(CFLAGS) $(SRC).tiled.c -o $@ $(LDFLAGS)
73 lbpar: $(SRC).lbpar.c
74 $(CC) $(OPT_FLAGS) $(CFLAGS) $(OMP_FLAGS) $(SRC).lbpar.c -o $@ $(LDFLAGS)
76 mlbpar: $(SRC).mlbpar.c
77 $(CC) $(OPT_FLAGS) $(CFLAGS) $(OMP_FLAGS) $(SRC).mlbpar.c -o $@ $(LDFLAGS)
80 par: $(SRC).par.c
81 $(CC) $(OPT_FLAGS) $(CFLAGS) $(OMP_FLAGS) $(SRC).par.c -o $@ $(LDFLAGS)
83 perf: orig tiled par orig_par
84 rm -f .test
85 ./orig
86 OMP_NUM_THREADS=$(NTHREADS) ./orig_par
87 ./tiled
88 OMP_NUM_THREADS=$(NTHREADS) ./par
90 lbperf: par lbpar
91 rm -f .test
92 OMP_NUM_THREADS=$(NTHREADS) ./par
93 OMP_NUM_THREADS=$(NTHREADS) ./lbpar
96 test: orig tiled par
97 touch .test
98 ./orig 2> out_orig
99 ./tiled 2> out_tiled
100 diff -q out_orig out_tiled
101 OMP_NUM_THREADS=$(NTHREADS) ./par 2> out_par4
102 rm -f .test
103 diff -q out_orig out_par4
104 @echo Success!
106 lbtest: par lbpar mlbpar
107 touch .test
108 OMP_NUM_THREADS=$(NTHREADS) ./par 2> out_par4
109 OMP_NUM_THREADS=$(NTHREADS) ./lbpar 2> out_lbpar4
110 OMP_NUM_THREADS=$(NTHREADS) ./mlbpar 2> out_mlbpar4
111 rm -f .test
112 diff -q out_par4 out_lbpar4
113 diff -q out_par4 out_mlbpar4
114 @echo Success!
116 opt-test: orig opt
117 touch .test
118 ./orig > out_orig
119 ./opt > out_opt
120 rm -f .test
121 diff -q out_orig out_opt
122 @echo Success!
123 rm -f .test
125 clean:
126 rm -f out_* *.lbpar.c *.tiled.c *.opt.c *.par.c *.mlbpar.c orig opt tiled par sched orig_par \
127 hopt hopt *.par2d.c *.out.* \
128 *.kernel.* a.out $(EXTRA_CLEAN) tags tmp* gmon.out *~ .unroll \
129 .vectorize par2d parsetab.py *.body.c *.pluto.c *.par.cloog *.tiled.cloog *.pluto.cloog
131 exec-clean:
132 rm -f out_* opt orig tiled lbtile lbpar sched sched hopt hopt par orig_par *.out.* *.kernel.* a.out \
133 $(EXTRA_CLEAN) tags tmp* gmon.out *~ par2d