| 1 | #===============================================================================
|
|---|
| 2 | # User Options
|
|---|
| 3 | #===============================================================================
|
|---|
| 4 |
|
|---|
| 5 | COMPILER = gnu
|
|---|
| 6 | OPTIMIZE = yes
|
|---|
| 7 | DEBUG = no
|
|---|
| 8 | PROFILE = no
|
|---|
| 9 | MPI = no
|
|---|
| 10 | PAPI = no
|
|---|
| 11 | VEC_INFO = no
|
|---|
| 12 | VERIFY = no
|
|---|
| 13 | BENCHMARK = no
|
|---|
| 14 | BINARY_DUMP = no
|
|---|
| 15 | BINARY_READ = no
|
|---|
| 16 | CIVL = civl
|
|---|
| 17 |
|
|---|
| 18 | #===============================================================================
|
|---|
| 19 | # Program name & source code list
|
|---|
| 20 | #===============================================================================
|
|---|
| 21 |
|
|---|
| 22 | program = XSBench
|
|---|
| 23 |
|
|---|
| 24 | source = \
|
|---|
| 25 | Main.c \
|
|---|
| 26 | io.c \
|
|---|
| 27 | CalculateXS.c \
|
|---|
| 28 | GridInit.c \
|
|---|
| 29 | XSutils.c \
|
|---|
| 30 | Materials.c
|
|---|
| 31 |
|
|---|
| 32 | obj = $(source:.c=.o)
|
|---|
| 33 |
|
|---|
| 34 | #===============================================================================
|
|---|
| 35 | # Sets Flags
|
|---|
| 36 | #===============================================================================
|
|---|
| 37 |
|
|---|
| 38 | # Standard Flags
|
|---|
| 39 | CFLAGS := -std=gnu99
|
|---|
| 40 |
|
|---|
| 41 | # Linker Flags
|
|---|
| 42 | LDFLAGS = -lm
|
|---|
| 43 |
|
|---|
| 44 | # Regular gcc Compiler
|
|---|
| 45 | ifeq ($(COMPILER),gnu)
|
|---|
| 46 | # CC = gcc
|
|---|
| 47 | CC = gcc-mp-4.8
|
|---|
| 48 | CFLAGS += -fopenmp
|
|---|
| 49 | endif
|
|---|
| 50 |
|
|---|
| 51 | # Intel Compiler
|
|---|
| 52 | ifeq ($(COMPILER),intel)
|
|---|
| 53 | CC = icc
|
|---|
| 54 | CFLAGS += -openmp
|
|---|
| 55 | endif
|
|---|
| 56 |
|
|---|
| 57 | # BG/Q gcc Cross-Compiler
|
|---|
| 58 | ifeq ($(MACHINE),bluegene)
|
|---|
| 59 | CC = mpicc
|
|---|
| 60 | endif
|
|---|
| 61 |
|
|---|
| 62 | # Debug Flags
|
|---|
| 63 | ifeq ($(DEBUG),yes)
|
|---|
| 64 | CFLAGS += -g
|
|---|
| 65 | LDFLAGS += -g
|
|---|
| 66 | endif
|
|---|
| 67 |
|
|---|
| 68 | # Profiling Flags
|
|---|
| 69 | ifeq ($(PROFILE),yes)
|
|---|
| 70 | CFLAGS += -pg
|
|---|
| 71 | LDFLAGS += -pg
|
|---|
| 72 | endif
|
|---|
| 73 |
|
|---|
| 74 | # Optimization Flags
|
|---|
| 75 | ifeq ($(OPTIMIZE),yes)
|
|---|
| 76 | CFLAGS += -O3
|
|---|
| 77 | endif
|
|---|
| 78 |
|
|---|
| 79 | # Compiler Vectorization (needs -O3 flag) information
|
|---|
| 80 | ifeq ($(VEC_INFO),yes)
|
|---|
| 81 | CFLAGS += -ftree-vectorizer-verbose=6
|
|---|
| 82 | endif
|
|---|
| 83 |
|
|---|
| 84 | # PAPI source (you may need to provide -I and -L pointing
|
|---|
| 85 | # to PAPI depending on your installation
|
|---|
| 86 | ifeq ($(PAPI),yes)
|
|---|
| 87 | source += papi.c
|
|---|
| 88 | CFLAGS += -DPAPI
|
|---|
| 89 | #CFLAGS += -I/soft/apps/packages/papi/papi-5.1.1/include
|
|---|
| 90 | #LDFLAGS += -L/soft/apps/packages/papi/papi-5.1.1/lib -lpapi
|
|---|
| 91 | LDFLAGS += -lpapi
|
|---|
| 92 | endif
|
|---|
| 93 |
|
|---|
| 94 | # MPI
|
|---|
| 95 | ifeq ($(MPI),yes)
|
|---|
| 96 | CC = mpicc
|
|---|
| 97 | CFLAGS += -DMPI
|
|---|
| 98 | endif
|
|---|
| 99 |
|
|---|
| 100 | # Verification of results mode
|
|---|
| 101 | ifeq ($(VERIFY),yes)
|
|---|
| 102 | CFLAGS += -DVERIFICATION
|
|---|
| 103 | endif
|
|---|
| 104 |
|
|---|
| 105 | # Adds outer 'benchmarking' loop to do multiple trials for
|
|---|
| 106 | # 1 < threads <= max_threads
|
|---|
| 107 | ifeq ($(BENCHMARK),yes)
|
|---|
| 108 | CFLAGS += -DBENCHMARK
|
|---|
| 109 | endif
|
|---|
| 110 |
|
|---|
| 111 | # Binary dump for file I/O based initialization
|
|---|
| 112 | ifeq ($(BINARY_DUMP),yes)
|
|---|
| 113 | CFLAGS += -DBINARY_DUMP
|
|---|
| 114 | endif
|
|---|
| 115 |
|
|---|
| 116 | # Binary read for file I/O based initialization
|
|---|
| 117 | ifeq ($(BINARY_READ),yes)
|
|---|
| 118 | CFLAGS += -DBINARY_READ
|
|---|
| 119 | endif
|
|---|
| 120 |
|
|---|
| 121 |
|
|---|
| 122 | #===============================================================================
|
|---|
| 123 | # Targets to Build
|
|---|
| 124 | #===============================================================================
|
|---|
| 125 |
|
|---|
| 126 | $(program): $(obj) XSbench_header.h
|
|---|
| 127 | $(CC) $(CFLAGS) $(obj) -o $@ $(LDFLAGS)
|
|---|
| 128 |
|
|---|
| 129 | %.o: %.c
|
|---|
| 130 | $(CC) $(CFLAGS) -c $< -o $@
|
|---|
| 131 |
|
|---|
| 132 | clean:
|
|---|
| 133 | rm -rf $(program) $(obj)
|
|---|
| 134 |
|
|---|
| 135 | edit:
|
|---|
| 136 | vim -p $(source) papi.c XSbench_header.h
|
|---|
| 137 |
|
|---|
| 138 | run:
|
|---|
| 139 | ./$(program)
|
|---|
| 140 |
|
|---|
| 141 | bgqrun:
|
|---|
| 142 | qsub -t 10 -n 1 -O test XSBench
|
|---|
| 143 |
|
|---|
| 144 | civl: $(source) XSbench_header.h civl_extras.cvl Makefile
|
|---|
| 145 | $(CIVL) verify $(source) civl_extras.cvl
|
|---|