Statistiques
| Révision :

root / BLAS / xGEMM / Makefile @ 53

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

1
SOURCE=xGEMM.c
2

    
3
CC=gcc-4.7
4
FC=gfortran-4.7
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=/opt/clBLAS/build/include
13
# CLBLASLIB=/opt/clBLAS/build/library/
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

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

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

    
31
EXECUTABLE=cblas fblas gsl cublas thunking openblas acml clblas
32

    
33
FORMAT=DOUBLE
34
#FORMAT=FLOAT
35

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

    
40
all: $(EXECUTABLE)
41

    
42
cblas: $(SOURCE)
43

    
44
	$(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DFLOAT -DCBLAS $(LDFLAGS) \
45
		$(SOURCE) -latlas -lcblas -o $(SOURCE:.c=)_SP_$@
46

    
47
	$(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DDOUBLE -DCBLAS $(LDFLAGS) \
48
		$(SOURCE) -latlas -lcblas -o $(SOURCE:.c=)_DP_$@
49

    
50
gotoblas: $(SOURCE)
51

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

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

    
58
openblas: $(SOURCE)
59

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

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

    
66
acml: $(SOURCE)
67

    
68
	$(CC) -I$(ACMLINC) $(CFLAGS) $(DIRECTIVES) -DFLOAT -DACML $(LDFLAGS) \
69
		$(SOURCE) -L$(ACMLLIB) -lacml_mp \
70
		-lgomp -lgfortran -lpthread -o $(SOURCE:.c=)_SP_$@
71

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

    
76
fblas: $(SOURCE)
77

    
78
	$(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DFLOAT -DFBLAS $(LDFLAGS) \
79
		$(SOURCE) -latlas -lf77blas -o $(SOURCE:.c=)_SP_$@
80

    
81
	$(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DDOUBLE -DFBLAS $(LDFLAGS) \
82
		$(SOURCE) -latlas -lf77blas -o $(SOURCE:.c=)_DP_$@
83

    
84

    
85
gsl: $(SOURCE)
86

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

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

    
95
clblas: $(SOURCE)
96

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

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

    
105
cublas: $(SOURCE)
106

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

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

    
115
thunking: $(SOURCE)
116

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

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

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

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

    
139
check: $(EXECUTABLE)
140

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