Statistiques
| Révision :

root / BLAS / xGEMM / Makefile @ 265

Historique | Voir | Annoter | Télécharger (3,97 ko)

1
# Makefile designed for Debian Buster
2

    
3
SOURCE=xGEMM.c
4

    
5
CC=gcc
6
FC=gfortran
7
CFLAGS=-Wall -O3 -ffast-math
8
LDFLAGS=-lm
9

    
10
CLBLASINC=/usr/include
11
CLBLASLIB=/usr/lib/x86_64-linux-gnu
12

    
13
CUDALIB?=/usr/lib/x86_64-linux-gnu/
14
CUDAINC?=/usr/include
15
CUDASRC?=/usr/share/doc/nvidia-cuda-toolkit/examples/libcublas
16
THUNKING=fortran_thunking.c
17
CUDASRCINC=fortran_common.h
18

    
19
GSLINC=/usr/include/gsl
20

    
21
# OPENBLAS=/usr/lib/x86_64-linux-gnu
22
# ATLAS=/usr/lib/x86_64-linux-gnu
23

    
24
ACML=/opt/acml
25
ACMLINC=$(ACML)/gfortran64_mp/include
26
ACMLLIB=$(ACML)/gfortran64_mp/lib
27

    
28
#EXECUTABLE=gsl cblas fblas openblas clblas cublas acml thunking
29
EXECUTABLE=gsl cblas fblas openblas clblas cublas thunking
30

    
31
# FORMAT define the precision of Floating Point numbers
32
# FP32 for simple of 32 bits size
33
# FP64 for double of 64 bits size
34
FORMAT=FP64
35
#FORMAT=FP32
36

    
37
#DIRECTIVES=-D$(FORMAT) -DPRINT -DUNIT
38
#DIRECTIVES=-D$(FORMAT) -DUNIT -DRESULTS -DQUIET
39
DIRECTIVES=-DUNIT -DQUIET
40

    
41
all: $(EXECUTABLE)
42

    
43
cblas: $(SOURCE)
44

    
45
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFP32 -DCBLAS $(LDFLAGS) \
46
		$(SOURCE) -latlas -lcblas -o $(SOURCE:.c=)_SP_$@
47

    
48
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFP64 -DCBLAS $(LDFLAGS) \
49
		$(SOURCE) -latlas -lcblas -o $(SOURCE:.c=)_DP_$@
50

    
51
openblas: $(SOURCE)
52

    
53
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFP32 -DCBLAS $(LDFLAGS) \
54
		$(SOURCE) -lopenblas -lpthread -o $(SOURCE:.c=)_SP_$@
55

    
56
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFP64 -DCBLAS $(LDFLAGS) \
57
		$(SOURCE) -lopenblas -lpthread -o $(SOURCE:.c=)_DP_$@
58

    
59
acml: $(SOURCE)
60

    
61
	$(CC) -I$(ACMLINC) $(CFLAGS) $(DIRECTIVES) -DFP32 -DACML $(LDFLAGS) \
62
		$(SOURCE) -L$(ACMLLIB) -lacml_mp \
63
		-lgomp -lgfortran -lpthread -o $(SOURCE:.c=)_SP_$@
64

    
65
	$(CC) -I$(ACMLINC) $(CFLAGS) $(DIRECTIVES) -DFP64 -DACML $(LDFLAGS) \
66
		$(SOURCE) -L$(ACMLLIB) -lacml_mp \
67
		-lgomp -lgfortran -lpthread -o $(SOURCE:.c=)_DP_$@
68

    
69
fblas: $(SOURCE)
70

    
71
	# ATLAS version
72
	# $(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DFP32 -DFBLAS $(LDFLAGS) \
73
	# 	$(SOURCE) -latlas -lf77blas -o $(SOURCE:.c=)_SP_$@
74

    
75
	# $(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DFP64 -DFBLAS $(LDFLAGS) \
76
	# 	$(SOURCE) -latlas -lf77blas -o $(SOURCE:.c=)_DP_$@
77

    
78
	# OpenBLAS version
79
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFP32 -DFBLAS $(LDFLAGS) \
80
		$(SOURCE) -lopenblas -lpthread -o $(SOURCE:.c=)_SP_$@
81

    
82
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFP64 -DFBLAS $(LDFLAGS) \
83
		$(SOURCE) -lopenblas -lpthread -o $(SOURCE:.c=)_DP_$@
84

    
85

    
86
gsl: $(SOURCE)
87

    
88
	$(CC) -I$(GSLINC) $(CFLAGS) $(DIRECTIVES) -DFP32 \
89
		-DGSL $(LDFLAGS) \
90
		$(SOURCE) -lgslcblas -o $(SOURCE:.c=)_SP_$@
91

    
92
	$(CC) -I$(GSLINC) $(CFLAGS) $(DIRECTIVES) -DFP64 \
93
		-DGSL $(LDFLAGS) \
94
		$(SOURCE) -lgslcblas -o $(SOURCE:.c=)_DP_$@
95

    
96
clblas: $(SOURCE)
97

    
98
	$(CC) -I$(CLBLASINC) -L$(CLBLASLIB) $(CFLAGS) -DFP32 \
99
		-DCLBLAS $(LDFLAGS) \
100
		$(DIRECTIVES) $(SOURCE) -lclBLAS -lOpenCL -o $(SOURCE:.c=)_SP_$@
101

    
102
	$(CC) -I$(CLBLASINC) -L$(CLBLASLIB) $(CFLAGS) -DFP64 \
103
		-DCLBLAS $(LDFLAGS) \
104
		$(DIRECTIVES) $(SOURCE) -lclBLAS -lOpenCL -o $(SOURCE:.c=)_DP_$@
105

    
106
cublas: $(SOURCE)
107

    
108
	$(CC) -I$(CUDAINC) -L$(CUDALIB) $(CFLAGS) -DFP32 \
109
		-DCUBLAS $(LDFLAGS) \
110
		$(DIRECTIVES) $(SOURCE) -lcublas -o $(SOURCE:.c=)_SP_$@
111

    
112
	$(CC) -I$(CUDAINC) -L$(CUDALIB) $(CFLAGS) -DFP64 \
113
		-DCUBLAS $(LDFLAGS) \
114
		$(DIRECTIVES) $(SOURCE) -lcublas -o $(SOURCE:.c=)_DP_$@
115

    
116
thunking: $(SOURCE)
117

    
118
	# Copy of source for thunking CUBLAS approach
119
	cp $(CUDASRC)/$(THUNKING) $(CUDASRC)/$(THUNKING:.c=.h) \
120
		$(CUDASRC)/$(CUDASRCINC) .
121
	# Patch Thunking prototypes to compile on Debian Lenny
122
	$(CC) -DCUBLAS_GFORTRAN -I$(CUDAINC) $(CFLAGS) -c $(THUNKING)
123

    
124
	$(CC) -DCUBLAS_GFORTRAN \
125
		-I$(CUDAINC) -L$(CUDALIB) $(CFLAGS) -DFP32 -DTHUNKING \
126
		$(LDFLAGS) $(DIRECTIVES) $(SOURCE) \
127
		$(THUNKING:.c=.o) -lcublas -o $(SOURCE:.c=)_SP_$@
128

    
129
	$(CC) -DCUBLAS_GFORTRAN \
130
		-I$(CUDAINC) -L$(CUDALIB) $(CFLAGS) -DFP64 -DTHUNKING \
131
		$(LDFLAGS) $(DIRECTIVES) $(SOURCE) \
132
		$(THUNKING:.c=.o) -lcublas -o $(SOURCE:.c=)_DP_$@
133

    
134
clean: $(SOURCE)
135
	find . -name "$(SOURCE:.c=)_*" -exec rm {} \;
136
	find . -name "$(THUNKING:.c=)*" -exec rm {} \;
137
	find . -name "*~" -exec rm {} \;
138
	find . -name "$(CUDASRCINC)" -exec rm {} \;
139

    
140
check: $(EXECUTABLE)
141

    
142
	$(SOURCE:.c=)_SP_$(EXECUTABLE) 2 1
143