Statistiques
| Révision :

root / BLAS / xGEMM / Makefile @ 245

Historique | Voir | Annoter | Télécharger (4,39 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
CUDASRC=/usr/share/doc/nvidia-cuda-toolkit/examples/
9
THUNKING=fortran_thunking.c
10
CUDASRCINC=fortran_common.h
11
CUDAINC=/usr/include
12
CUDALIB=/usr/lib/x86_64-linux-gnu/
13
CLBLASINC=/usr/include
14
CLBLASLIB=/usr/lib/x86_64-linux-gnu
15
# CLBLASINC=/opt/clBLAS/src
16
# CLBLASLIB=/opt/clBLAS/src/library/
17

    
18
PATCHTHUNKING=patch_thunking.h
19

    
20
GSLINC=/usr/include/gsl
21

    
22
GOTO2=/opt/GotoBLAS2
23

    
24
#OPENBLAS=/usr/lib/openblas-base
25
OPENBLAS=/usr/lib/x86_64-linux-gnu
26

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

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

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

    
41
FORMAT=DOUBLE
42
#FORMAT=FLOAT
43

    
44
#DIRECTIVES=-D$(FORMAT) -DPRINT -DUNIT
45
#DIRECTIVES=-D$(FORMAT) -DUNIT -DRESULTS -DQUIET
46
DIRECTIVES=-DUNIT -DQUIET
47

    
48
all: $(EXECUTABLE)
49

    
50
cblas: $(SOURCE)
51

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

    
55
	$(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DDOUBLE -DCBLAS $(LDFLAGS) \
56
		$(SOURCE) -latlas -lcblas -o $(SOURCE:.c=)_DP_$@
57

    
58
gotoblas: $(SOURCE)
59

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

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

    
66
openblas: $(SOURCE)
67

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

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

    
74
acml: $(SOURCE)
75

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

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

    
84
fblas: $(SOURCE)
85

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

    
89
	$(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DDOUBLE -DFBLAS $(LDFLAGS) \
90
		$(SOURCE) -latlas -lf77blas -o $(SOURCE:.c=)_DP_$@
91

    
92

    
93
gsl: $(SOURCE)
94

    
95
	$(CC) -I$(GSLINC) $(CFLAGS) $(DIRECTIVES) -DFLOAT \
96
		-DGSL $(LDFLAGS) \
97
		$(SOURCE) -lgslcblas -o $(SOURCE:.c=)_SP_$@
98

    
99
	$(CC) -I$(GSLINC) $(CFLAGS) $(DIRECTIVES) -DDOUBLE \
100
		-DGSL $(LDFLAGS) \
101
		$(SOURCE) -lgslcblas -o $(SOURCE:.c=)_DP_$@
102

    
103
clblas: $(SOURCE)
104

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

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

    
113
cublas: $(SOURCE)
114

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

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

    
123
thunking: $(SOURCE)
124

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

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

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

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

    
147
check: $(EXECUTABLE)
148

    
149
	$(SOURCE:.c=)_SP_$(EXECUTABLE) 2 1
150