-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
129 lines (109 loc) · 3.3 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#############################################################################
# Parameters
COMPILER ?= gnu
MEMORY ?= dynamic
KERNEL ?= openmp
NTIMES ?= 20
STREAM_ARRAY_SIZE ?= 2147483648
# Suggested sizes for Fujitsu A64FX
# Total memory: 24GB
#STREAM_ARRAY_SIZE ?= 1073741824
# Total memory: 6GB (one CMG)
#STREAM_ARRAY_SIZE ?= 268435440
# A convinent stream size: (48[cores] * 32[elem per cache line] * 400000)
#STREAM_ARRAY_SIZE ?= 614400000
#############################################################################
#############################################################################
# Compiler
ifeq (gnu,$(COMPILER))
CC = gcc
CFLAGS = -Ofast -mcpu=native -fopenmp
LD = $(CC)
LDFLAGS = $(CFLAGS)
#HUGETLBFS = LD_PRELOAD=libhugetlbfs.so HUGETLB_MORECORE=2M HUGETLB_VERBOSE=99
OMP_ENV = OMP_NUM_THREADS=64 OMP_PROC_BIND=close
#NUMACTL = numactl -C 0-80 -l
RUN = $(HUGETLBFS) $(OMP_ENV) $(NUMACTL)
else
#----------------------------------------------------------------------------
ifeq (acfl,$(COMPILER))
CC = armclang
CFLAGS = -Ofast -mcpu=native -fopenmp
LD = $(CC)
LDFLAGS = $(CFLAGS)
#HUGETLBFS = LD_PRELOAD=libhugetlbfs.so HUGETLB_MORECORE=2M HUGETLB_VERBOSE=99
OMP_ENV = OMP_NUM_THREADS=64 OMP_PROC_BIND=close
#NUMACTL = numactl -C 0-80 -l
RUN = $(HUGETLBFS) $(OMP_ENV) $(NUMACTL)
else
#----------------------------------------------------------------------------
ifeq (nvidia,$(COMPILER))
CC = nvc
CFLAGS = -O3 -fast -mp -Minfo
LD = $(CC)
LDFLAGS = $(CFLAGS)
#HUGETLBFS = LD_PRELOAD=libhugetlbfs.so HUGETLB_MORECORE=2M HUGETLB_VERBOSE=99
OMP_ENV = OMP_NUM_THREADS=64 OMP_PROC_BIND=close
#NUMACTL = numactl -C 0-80 -l
RUN = $(HUGETLBFS) $(OMP_ENV) $(NUMACTL)
else
#----------------------------------------------------------------------------
ifeq (fujitsu,$(COMPILER))
CC = fcc
CFLAGS = -Kfast,preex -Kopenmp -Kzfill -Kstriping=4
LD = $(CC)
LDFLAGS = $(CFLAGS)
OMP_ENV = OMP_NUM_THREADS=48
#NUMACTL = numactl -C 0-47
FJ_ENV = \
FLIB_SCCR_CNTL=TRUE \
FLIB_HPCFUNC=TRUE \
FLIB_HPCFUNC_INFO=TRUE \
FLIB_FASTOMP=TRUE \
FLIB_BARRIER=HARD \
XOS_MMM_L_PRINT_ENV=on \
XOS_MMM_L_PAGING_POLICY=demand:demand:demand \
XOS_MMM_L_ARENA_LOCK_TYPE=1
RUN = $(FJ_ENV) $(OMP_ENV) $(NUMACTL)
else
#----------------------------------------------------------------------------
$(error Invalid parameter: COMPILER=$(COMPILER))
endif
endif
endif
endif
#############################################################################
#############################################################################
# Machinery -- only edit if you know what you're doing
ifeq (dynamic,$(MEMORY))
STREAM_ARRAY_DYNAMIC = 1
else
ifeq (static,$(MEMORY))
CFLAGS += -mcmodel=large
STREAM_ARRAY_DYNAMIC = 0
else
$(error Invalid parameter: MEMORY=$(MEMORY))
endif
endif
CFLAGS += -DSTREAM_ARRAY_DYNAMIC=$(STREAM_ARRAY_DYNAMIC) -DSTREAM_ARRAY_SIZE=$(STREAM_ARRAY_SIZE) -DNTIMES=$(NTIMES)
ifeq (,$(KERNEL))
EXE = stream.exe
OBJS = stream.o
else
CFLAGS += -DSTREAM_KERNEL=$(KERNEL)
EXE = stream_$(KERNEL).exe
OBJS = stream.o kernel-$(KERNEL).o
endif
EXES = $(EXE)
HDRS = $(wildcard *.h)
.PHONY: all clean run
all: $(EXES)
clean:
rm -f *.o *.exe
run: $(EXE)
$(RUN) ./$^
$(EXE): $(OBJS)
$(LD) $(LDFLAGS) -o $@ $^
%.o: %.c Makefile $(HDRS)
$(CC) -c $(CFLAGS) -o $@ $<
#############################################################################