-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
76 lines (50 loc) · 3.34 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
CC=gcc
CFLAGS=-Wall -g -O3
CXX=g++
CXXFLAGS=-Wall -g -O3
LAPACK_LIBS=-m64 -L${MKLROOT}/lib -Wl,--no-as-needed -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl
test: test/test_kernels_ref test/test_kernels_avx test/test_kernels_avx2
# Actual implementation
optimized/drotc_kernels_ref.o: optimized/drotc_kernels_ref.c optimized/drotc_kernels.h optimized/drotc_params.h
$(CC) -c -o $@ $< $(CFLAGS)
optimized/drotc_kernels_avx.o: optimized/drotc_kernels_avx.c optimized/drotc_kernels.h optimized/drotc_params.h
$(CC) -c -o $@ $< $(CFLAGS) -march=ivybridge
optimized/drotc_kernels_avx2.o: optimized/drotc_kernels_avx2.c optimized/drotc_kernels.h optimized/drotc_params.h
$(CC) -c -o $@ $< $(CFLAGS) -march=skylake
optimized/drotc_kernels_avx512.o: optimized/drotc_kernels_avx512.c optimized/drotc_kernels.h optimized/drotc_params.h
$(CC) -c -o $@ $< $(CFLAGS) -march=icelake-server
optimized/drotc_ref.o: optimized/drotc.c optimized/drotc.h optimized/drotc_kernels.h optimized/drotc_params.h
$(CC) -c -o $@ $< $(CFLAGS)
optimized/drotc_avx.o: optimized/drotc.c optimized/drotc.h optimized/drotc_kernels.h optimized/drotc_params.h
$(CC) -c -o $@ $< $(CFLAGS) -march=ivybridge
optimized/drotc_avx2.o: optimized/drotc.c optimized/drotc.h optimized/drotc_kernels.h optimized/drotc_params.h
$(CC) -c -o $@ $< $(CFLAGS) -march=skylake
optimized/drotc_avx512.o: optimized/drotc.c optimized/drotc.h optimized/drotc_kernels.h optimized/drotc_params.h
$(CC) -c -o $@ $< $(CFLAGS) -march=icelake-server
# Tests
test/test_kernels_ref: test/test_kernels.cpp optimized/drotc_kernels_ref.o
$(CXX) -o $@ $^ $(CXXFLAGS) -lstdc++ -I.
test/test_kernels_avx: test/test_kernels.cpp optimized/drotc_kernels_avx.o
$(CXX) -o $@ $^ $(CXXFLAGS) -lstdc++ -I. -march=ivybridge
test/test_kernels_avx2: test/test_kernels.cpp optimized/drotc_kernels_avx2.o
$(CXX) -o $@ $^ $(CXXFLAGS) -lstdc++ -I. -march=skylake
test/test_kernels_avx512: test/test_kernels.cpp optimized/drotc_kernels_avx512.o
$(CXX) -o $@ $^ $(CXXFLAGS) -lstdc++ -I. -march=icelake-server
test/test_drotc_ref: test/test_drotc.cpp optimized/drotc_kernels_ref.o optimized/drotc_ref.o
$(CXX) -o $@ $^ $(CXXFLAGS) -lstdc++ -I.
test/test_drotc_avx: test/test_drotc.cpp optimized/drotc_kernels_avx.o optimized/drotc_avx.o
$(CXX) -o $@ $^ $(CXXFLAGS) -lstdc++ -I. -march=ivybridge
test/test_drotc_avx2: test/test_drotc.cpp optimized/drotc_kernels_avx2.o optimized/drotc_avx2.o
$(CXX) -o $@ $^ $(CXXFLAGS) -lstdc++ -I. -march=skylake
test/test_drotc_avx512: test/test_drotc.cpp optimized/drotc_kernels_avx512.o optimized/drotc_avx512.o
$(CXX) -o $@ $^ $(CXXFLAGS) -lstdc++ -I. -march=icelake-server
test/profile_drotc_ref: test/profile_drotc.cpp optimized/drotc_kernels_ref.o optimized/drotc_ref.o
$(CXX) -o $@ $^ $(CXXFLAGS) -lstdc++ -I.
test/profile_drotc_avx: test/profile_drotc.cpp optimized/drotc_kernels_avx.o optimized/drotc_avx.o
$(CXX) -o $@ $^ $(CXXFLAGS) -lstdc++ -I. -march=ivybridge
test/profile_drotc_avx2: test/profile_drotc.cpp optimized/drotc_kernels_avx2.o optimized/drotc_avx2.o
$(CXX) -o $@ $^ $(CXXFLAGS) -lstdc++ -I. -march=skylake
test/profile_drotc_avx512: test/profile_drotc.cpp optimized/drotc_kernels_avx512.o optimized/drotc_avx512.o
$(CXX) -o $@ $^ $(CXXFLAGS) -lstdc++ -I. -march=icelake-server
test/profile_gemm: test/profile_gemm.cpp
$(CXX) -o $@ $^ $(CXXFLAGS) -lstdc++ -I. -march=native $(LAPACK_LIBS)