1- PAPIDIR? =${PAPI_DIR}
21USEMPI? =false
3- LDFLAGS =-L$( PAPIDIR ) /lib -lpapi -lm -lpthread -ldl -lrt
4- INCFLAGS =-I$( PAPIDIR ) /include
2+ LDFLAGS =-L${PAPI_DIR} /lib -lpapi -lm -lpthread -ldl -lrt
3+ INCFLAGS =-I${PAPI_DIR} /include
54CFLAGS+ =-g -Wall -Wextra
65OPT0 =-O0
76OPT1 =-O1
@@ -31,42 +30,38 @@ ifndef ARCH
3130endif
3231
3332# # Architecture determines vector instruction set.
33+ # Note, we can't use -mavx512fp16 -mavx512bf16 for ANY AVX unless AVX512 is avail.
3434ifeq ($(ARCH ) ,X86)
3535 FLOP+ =-mfma -DX86
36- VECSRC =vec_fma_hp vec_fma_sp vec_fma_dp vec_nonfma_hp vec_nonfma_sp vec_nonfma_dp
37- VEC_META =-DAVX128_AVAIL -DAVX256_AVAIL -DAVX512_AVAIL
38- VEC128 =-mavx -O0 -DX86 $(VEC_META ) -DX86_VEC_WIDTH_128B
39- VEC256 =-mavx -O0 -DX86 $(VEC_META ) -DX86_VEC_WIDTH_256B
40- VEC512 =-mavx512f -O0 -DX86 $(VEC_META ) -DX86_VEC_WIDTH_512B
41- VEC128_FMA =-mfma4 -mfma -O0 -DX86 $(VEC_META ) -DX86_VEC_WIDTH_128B
42- VEC256_FMA =-mfma4 -mfma -O0 -DX86 $(VEC_META ) -DX86_VEC_WIDTH_256B
43- VEC512_FMA =-mfma4 -mfma -mavx512f -O0 -DX86 $(VEC_META ) -DX86_VEC_WIDTH_512B
44- VEC =-mavx -O0 -DX86
45- VEC_FMA =-mfma4 -mfma -O0 -DX86
46- VEC_ALL =$(VEC ) $(VEC_FMA ) -O0 -DX86
36+ VECSRC =vec_dot_bf16 vec_fma_fp16 vec_fma_sp vec_fma_dp vec_nonfma_fp16 vec_nonfma_sp vec_nonfma_dp
37+ VEC_META =-DAVX128_AVAIL -DAVX256_AVAIL -DAVX512_AVAIL -DAVX512_FP16_AVAIL -DAVX512_BF16_AVAIL
38+ VEC128 =-mavx -mavx512vl -mavx512fp16 -mavx512bf16 -O0 -DX86 $(VEC_META ) -DX86_VEC_WIDTH_128B
39+ VEC256 =-mavx -mavx512vl -mavx512fp16 -mavx512bf16 -O0 -DX86 $(VEC_META ) -DX86_VEC_WIDTH_256B
40+ VEC512 =-mavx -mavx512vl -mavx512fp16 -mavx512bf16 -O0 -DX86 $(VEC_META ) -DX86_VEC_WIDTH_512B
41+ VEC128_FMA =-mfma4 -mfma -mavx512vl -mavx512fp16 -mavx512bf16 -O0 -DX86 $(VEC_META ) -DX86_VEC_WIDTH_128B
42+ VEC256_FMA =-mfma4 -mfma -mavx512vl -mavx512fp16 -mavx512bf16 -O0 -DX86 $(VEC_META ) -DX86_VEC_WIDTH_256B
43+ VEC512_FMA =-mfma4 -mfma -mavx512vl -mavx512fp16 -mavx512bf16 -O0 -DX86 $(VEC_META ) -DX86_VEC_WIDTH_512B
44+ VEC_ALL =-mavx -mavx512fp16 -mavx512bf16 -mfma4 -mfma -mavx512f -mavx512fp16 -mavx512bf16 -O0 -DX86 $(VEC_META )
4745 INSTR =-mavx512vl
4846endif
4947ifeq ($(ARCH ) ,POWER)
5048 FLOP+ =-maltivec -DPOWER
51- VECSRC =vec_fma_hp.o vec_fma_sp.o vec_fma_dp.o vec_nonfma_hp.o vec_nonfma_sp.o vec_nonfma_dp.o
52- VEC =-maltivec -DPOWER
53- VEC_FMA =-maltivec -DPOWER
54- VEC_ALL =$(VEC ) -DPOWER
49+ VECSRC =vec_fma_fp16.o vec_fma_sp.o vec_fma_dp.o vec_nonfma_fp16.o vec_nonfma_sp.o vec_nonfma_dp.o
50+ VEC_ALL =-maltivec -DPOWER
5551endif
5652ifeq ($(ARCH ) ,ARM)
57- FLOP+=-march =armv8.2-a+fp16+sve -DARM
58- VECSRC =vec_fma_hp.o vec_fma_sp.o vec_fma_dp.o vec_nonfma_hp.o vec_nonfma_sp.o vec_nonfma_dp.o
59- VEC=-march =armv8.2-a+fp16+sve -O0 -DARM
60- VEC_FMA=-march =armv8.2-a+fp16+sve -O0 -DARM
61- VEC_ALL =$(VEC ) -O0 -DARM
53+ VEC_META =-DBF16_AVAIL -DFP16_AVAIL
54+ FLOP+=-march =armv8.2-a+fp16+bf16+sve -DARM $(VEC_META )
55+ VECSRC =vec_dot_bf16.o vec_fma_fp16.o vec_fma_sp.o vec_fma_dp.o vec_nonfma_fp16.o vec_nonfma_sp.o vec_nonfma_dp.o
56+ VEC_ALL=-march =armv8.2-a+fp16+bf16+sve -O0 -DARM $(VEC_META )
6257endif
6358
6459all : branch.o d_cache eventstock.o flops i_cache instr vector
65- make cat_collect PAPIDIR= $( PAPIDIR )
60+ make cat_collect
6661
6762d_cache : timing_kernels.o prepareArray.o compar.o dcache.o
6863
69- i_cache : icache.o icache_seq_kernel_0 .o
64+ i_cache : icache.o icache_seq_kernel .o
7065
7166vector : weak_symbols.o vec.o vec_scalar_verify.o $(VECSRC )
7267
@@ -92,15 +87,15 @@ flops: flops.c flops.h cat_arch.h
9287 $(CC ) $(CFLAGS ) $(FLOP ) $(OPT1 ) $(INCFLAGS ) -c flops.c -o flops.o
9388
9489icache.o : icache.c icache.h
95- bash gen_seq_dlopen.sh
90+ bash gen_seq_dlopen.sh ${PWD}
9691 $(CC ) $(CFLAGS ) $(OPT0 ) $(INCFLAGS ) -c icache.c -o icache.o
9792
98- icache_seq_kernel_0 .o : icache_seq.c icache_seq.h
93+ icache_seq_kernel .o : icache_seq.c icache_seq.h icache_seq_kernel.c
9994 $(CC ) $(CFLAGS ) $(OPT0 ) $(INCFLAGS ) -c icache_seq.c -o icache_seq.o
100- $(CC ) $(CFLAGS ) $(OPT0 ) $(INCFLAGS ) -fPIC -c icache_seq_kernel.c -o icache_seq_kernel_0 .o
101- $(CC ) $(CFLAGS ) $(OPT0 ) -shared -o icache_seq_kernel_0.so icache_seq_kernel_0 .o
102- bash replicate.sh
103- rm icache_seq_kernel_0 .o
95+ $(CC ) $(CFLAGS ) $(OPT0 ) $(INCFLAGS ) -fPIC -c icache_seq_kernel.c -o icache_seq_kernel .o
96+ $(CC ) $(CFLAGS ) $(OPT0 ) -shared -o icache_seq_kernel_0.so icache_seq_kernel .o
97+ bash replicate.sh ${PWD}
98+ rm ${PWD} /icache_seq_kernel .o
10499
105100instr : instructions.c instr.h
106101 -$(CC ) -c $(CFLAGS ) $(OPT2 ) -ftree-vectorize $(FLOP ) $(INSTR ) $(INCFLAGS ) instructions.c -o instructions.o
@@ -114,48 +109,56 @@ vec.o: vec.c vec.h
114109vec_scalar_verify.o : vec_scalar_verify.c vec_scalar_verify.h cat_arch.h
115110 -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC_ALL ) vec_scalar_verify.c
116111
117- vec_fma_hp .o : vec_fma_hp .c vec_scalar_verify.h
118- -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC_FMA ) vec_fma_hp .c
112+ vec_fma_fp16 .o : vec_fma_fp16 .c vec_scalar_verify.h
113+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC_ALL ) vec_fma_fp16 .c
119114
120- vec_fma_hp : vec_fma_hp.c vec_scalar_verify.h
121- -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC128_FMA ) vec_fma_hp.c -o vec_fma_hp-128B.o
122- -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC256_FMA ) vec_fma_hp.c -o vec_fma_hp-256B.o
123- -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC512_FMA ) vec_fma_hp.c -o vec_fma_hp-512B.o
115+ vec_fma_fp16 : vec_fma_fp16.c vec_scalar_verify.h
116+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC128_FMA ) vec_fma_fp16.c -o vec_fma_fp16-128B.o
117+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC256_FMA ) vec_fma_fp16.c -o vec_fma_fp16-256B.o
118+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC512_FMA ) vec_fma_fp16.c -o vec_fma_fp16-512B.o
119+
120+ vec_dot_bf16.o : vec_dot_bf16.c vec_scalar_verify.h
121+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC_ALL ) vec_dot_bf16.c
122+
123+ vec_dot_bf16 : vec_dot_bf16.c vec_scalar_verify.h
124+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC128_FMA ) vec_dot_bf16.c -o vec_dot_bf16-128B.o
125+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC256_FMA ) vec_dot_bf16.c -o vec_dot_bf16-256B.o
126+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC512_FMA ) vec_dot_bf16.c -o vec_dot_bf16-512B.o
124127
125128vec_fma_sp.o : vec_fma_sp.c vec_scalar_verify.h
126- -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC_FMA ) vec_fma_sp.c
129+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC_ALL ) vec_fma_sp.c
127130
128131vec_fma_sp : vec_fma_sp.c vec_scalar_verify.h
129132 -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC128_FMA ) vec_fma_sp.c -o vec_fma_sp-128B.o
130133 -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC256_FMA ) vec_fma_sp.c -o vec_fma_sp-256B.o
131134 -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC512_FMA ) vec_fma_sp.c -o vec_fma_sp-512B.o
132135
133136vec_fma_dp.o : vec_fma_dp.c vec_scalar_verify.h
134- -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC_FMA ) vec_fma_dp.c
137+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC_ALL ) vec_fma_dp.c
135138
136139vec_fma_dp : vec_fma_dp.c vec_scalar_verify.h
137140 -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC128_FMA ) vec_fma_dp.c -o vec_fma_dp-128B.o
138141 -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC256_FMA ) vec_fma_dp.c -o vec_fma_dp-256B.o
139142 -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC512_FMA ) vec_fma_dp.c -o vec_fma_dp-512B.o
140143
141- vec_nonfma_hp .o : vec_nonfma_hp .c vec_scalar_verify.h
142- -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC ) vec_nonfma_hp .c
144+ vec_nonfma_fp16 .o : vec_nonfma_fp16 .c vec_scalar_verify.h
145+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC_ALL ) vec_nonfma_fp16 .c
143146
144- vec_nonfma_hp : vec_nonfma_hp .c vec_scalar_verify.h
145- -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC128 ) vec_nonfma_hp .c -o vec_nonfma_hp -128B.o
146- -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC256 ) vec_nonfma_hp .c -o vec_nonfma_hp -256B.o
147- -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC512 ) vec_nonfma_hp .c -o vec_nonfma_hp -512B.o
147+ vec_nonfma_fp16 : vec_nonfma_fp16 .c vec_scalar_verify.h
148+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC128 ) vec_nonfma_fp16 .c -o vec_nonfma_fp16 -128B.o
149+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC256 ) vec_nonfma_fp16 .c -o vec_nonfma_fp16 -256B.o
150+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC512 ) vec_nonfma_fp16 .c -o vec_nonfma_fp16 -512B.o
148151
149152vec_nonfma_sp.o : vec_nonfma_sp.c vec_scalar_verify.h
150- -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC ) vec_nonfma_sp.c
153+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC_ALL ) vec_nonfma_sp.c
151154
152155vec_nonfma_sp : vec_nonfma_sp.c vec_scalar_verify.h
153156 -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC128 ) vec_nonfma_sp.c -o vec_nonfma_sp-128B.o
154157 -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC256 ) vec_nonfma_sp.c -o vec_nonfma_sp-256B.o
155158 -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC512 ) vec_nonfma_sp.c -o vec_nonfma_sp-512B.o
156159
157160vec_nonfma_dp.o : vec_nonfma_dp.c vec_scalar_verify.h
158- -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC ) vec_nonfma_dp.c
161+ -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC_ALL ) vec_nonfma_dp.c
159162
160163vec_nonfma_dp : vec_nonfma_dp.c vec_scalar_verify.h
161164 -$(CC ) -c $(CFLAGS ) $(OPT1 ) $(INCFLAGS ) $(VEC128 ) vec_nonfma_dp.c -o vec_nonfma_dp-128B.o
0 commit comments