Statistiques
| Révision :

root / BLAS / xGEMM / Makefile @ 146

Historique | Voir | Annoter | Télécharger (4,18 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=clblas cublas thunking
37
EXECUTABLE=openblas
38

    
39
FORMAT=DOUBLE
40
#FORMAT=FLOAT
41

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

    
46
all: $(EXECUTABLE)
47

    
48
cblas: $(SOURCE)
49

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

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

    
56
gotoblas: $(SOURCE)
57

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

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

    
64
openblas: $(SOURCE)
65

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

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

    
72
acml: $(SOURCE)
73

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

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

    
82
fblas: $(SOURCE)
83

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

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

    
90

    
91
gsl: $(SOURCE)
92

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

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

    
101
clblas: $(SOURCE)
102

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

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

    
111
cublas: $(SOURCE)
112

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

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

    
121
thunking: $(SOURCE)
122

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

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

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

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

    
145
check: $(EXECUTABLE)
146

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