Statistiques
| Révision :

root / BLAS / xGEMM / Makefile @ 147

Historique | Voir | Annoter | Télécharger (4,19 ko)

1
SOURCE=xGEMM.c
2

    
3
CC=gcc
4
FC=gfortran
5
CFLAGS=-Wall -O3 -ffast-math
6
LDFLAGS=-lm
7
CUDASRC=/usr/share/doc/nvidia-cuda-doc/examples/
8
THUNKING=fortran_thunking.c
9
CUDASRCINC=fortran_common.h
10
CUDAINC=/usr/include
11
CUDALIB=/usr/lib/x86_64-linux-gnu/
12
CLBLASINC=/usr/include
13
CLBLASLIB=/usr/lib
14
# CLBLASINC=/opt/clBLAS/src
15
# CLBLASLIB=/opt/clBLAS/src/library/
16

    
17
PATCHTHUNKING=patch_thunking.h
18

    
19
GSLINC=/usr/include/gsl
20

    
21
GOTO2=/opt/GotoBLAS2
22

    
23
#OPENBLAS=/usr/lib/openblas-base
24
OPENBLAS=/usr/lib
25

    
26
ACML=/opt/acml
27
ACMLINC=$(ACML)/gfortran64_mp/include
28
ACMLLIB=$(ACML)/gfortran64_mp/lib
29

    
30
ATLAS=/usr/lib/atlas-base
31

    
32
#EXECUTABLE=cblas fblas gsl cublas thunking openblas acml clblas
33
#EXECUTABLE=cblas fblas gsl cublas thunking openblas clblas
34
#EXECUTABLE=gsl openblas clblas cublas thunking
35
#EXECUTABLE=openblas clblas cublas thunking
36
EXECUTABLE=acml gsl cblas fblas openblas clblas cublas thunking
37

    
38
FORMAT=DOUBLE
39
#FORMAT=FLOAT
40

    
41
#DIRECTIVES=-D$(FORMAT) -DPRINT -DUNIT
42
#DIRECTIVES=-D$(FORMAT) -DUNIT -DRESULTS -DQUIET
43
DIRECTIVES=-DUNIT -DQUIET
44

    
45
all: $(EXECUTABLE)
46

    
47
cblas: $(SOURCE)
48

    
49
	$(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DFLOAT -DCBLAS $(LDFLAGS) \
50
		$(SOURCE) -latlas -lcblas -o $(SOURCE:.c=)_SP_$@
51

    
52
	$(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DDOUBLE -DCBLAS $(LDFLAGS) \
53
		$(SOURCE) -latlas -lcblas -o $(SOURCE:.c=)_DP_$@
54

    
55
gotoblas: $(SOURCE)
56

    
57
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFLOAT -DCBLAS $(LDFLAGS) \
58
		$(SOURCE) $(GOTO2)/libgoto2.a -lpthread -o $(SOURCE:.c=)_SP_$@
59

    
60
	$(CC) $(CFLAGS) $(DIRECTIVES) -DDOUBLE -DCBLAS $(LDFLAGS) \
61
		$(SOURCE) $(GOTO2)/libgoto2.a -lpthread -o $(SOURCE:.c=)_DP_$@
62

    
63
openblas: $(SOURCE)
64

    
65
	$(CC) $(CFLAGS) $(DIRECTIVES) -L/usr/include/openblas -fopenmp -DFLOAT -DCBLAS $(LDFLAGS) \
66
		$(SOURCE) $(OPENBLAS)/libopenblas.a -lpthread -o $(SOURCE:.c=)_SP_$@
67

    
68
	$(CC) $(CFLAGS) $(DIRECTIVES) -L/usr/include/openblas -fopenmp -DDOUBLE -DCBLAS $(LDFLAGS) \
69
		$(SOURCE) $(OPENBLAS)/libopenblas.a -lpthread -o $(SOURCE:.c=)_DP_$@
70

    
71
acml: $(SOURCE)
72

    
73
	$(CC) -I$(ACMLINC) $(CFLAGS) $(DIRECTIVES) -DFLOAT -DACML $(LDFLAGS) \
74
		$(SOURCE) -L$(ACMLLIB) -lacml_mp \
75
		-lgomp -lgfortran -lpthread -o $(SOURCE:.c=)_SP_$@
76

    
77
	$(CC) -I$(ACMLINC) $(CFLAGS) $(DIRECTIVES) -DDOUBLE -DACML $(LDFLAGS) \
78
		$(SOURCE) -L$(ACMLLIB) -lacml_mp \
79
		-lgomp -lgfortran -lpthread -o $(SOURCE:.c=)_DP_$@
80

    
81
fblas: $(SOURCE)
82

    
83
	$(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DFLOAT -DFBLAS $(LDFLAGS) \
84
		$(SOURCE) -latlas -lf77blas -o $(SOURCE:.c=)_SP_$@
85

    
86
	$(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DDOUBLE -DFBLAS $(LDFLAGS) \
87
		$(SOURCE) -latlas -lf77blas -o $(SOURCE:.c=)_DP_$@
88

    
89

    
90
gsl: $(SOURCE)
91

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

    
96
	$(CC) -I$(GSLINC) $(CFLAGS) $(DIRECTIVES) -DDOUBLE \
97
		-DGSL $(LDFLAGS) \
98
		$(SOURCE) -lgslcblas -o $(SOURCE:.c=)_DP_$@
99

    
100
clblas: $(SOURCE)
101

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

    
106
	$(CC) -I$(CLBLASINC) -L$(CLBLASLIB) $(CFLAGS) -DDOUBLE \
107
		-DCLBLAS $(LDFLAGS) \
108
		$(DIRECTIVES) $(SOURCE) -lclBLAS -lOpenCL -o $(SOURCE:.c=)_DP_$@
109

    
110
cublas: $(SOURCE)
111

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

    
116
	$(CC) -I$(CUDAINC) -L$(CUDALIB) $(CFLAGS) -DDOUBLE \
117
		-DCUBLAS $(LDFLAGS) \
118
		$(DIRECTIVES) $(SOURCE) -lcublas -o $(SOURCE:.c=)_DP_$@
119

    
120
thunking: $(SOURCE)
121

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

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

    
133
	$(CC) -DCUBLAS_GFORTRAN \
134
		-I$(CUDAINC) -L$(CUDALIB) $(CFLAGS) -DDOUBLE -DTHUNKING \
135
		$(LDFLAGS) $(DIRECTIVES) $(SOURCE) \
136
		$(THUNKING:.c=.o) -lcublas -o $(SOURCE:.c=)_DP_$@
137

    
138
clean: $(SOURCE)
139
	find . -name "$(SOURCE:.c=)_*" -exec rm {} \;
140
	find . -name "$(THUNKING:.c=)*" -exec rm {} \;
141
	find . -name "*~" -exec rm {} \;
142
	find . -name "$(CUDASRCINC)" -exec rm {} \;
143

    
144
check: $(EXECUTABLE)
145

    
146
	$(SOURCE:.c=)_SP_$(EXECUTABLE) 2 1
147