Statistiques
| Révision :

root / BLAS / xGEMM / Makefile @ 7

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

1
SOURCE=xGEMM.c
2

    
3
CC=gcc-4.6
4
FC=gfortran-4.6
5
CFLAGS=-Wall -O3
6
LDFLAGS=-lm
7
CUDADIR=/opt/cuda
8
CUDASRC=$(CUDADIR)/src
9
THUNKING=fortran_thunking.c
10
CUDASRCINC=fortran_common.h
11
CUDAINC=$(CUDADIR)/include
12
CUDALIB=$(CUDADIR)/lib64
13

    
14
PATCHTHUNKING=patch_thunking.h
15

    
16
GSLINC=/usr/include/gsl
17

    
18
GOTO2=/opt/GotoBLAS2
19

    
20
OPENBLAS=/usr/lib/openblas-base
21

    
22
ACML=/opt/acml
23
ACMLINC=$(ACML)/gfortran64_mp/include
24
ACMLLIB=$(ACML)/gfortran64_mp/lib
25

    
26
ATLAS=/usr/lib/atlas-base
27

    
28
EXECUTABLE=cblas fblas gsl cublas thunking openblas
29

    
30
FORMAT=DOUBLE
31
#FORMAT=FLOAT
32

    
33
#DIRECTIVES=-D$(FORMAT) -DPRINT -DUNIT
34
#DIRECTIVES=-D$(FORMAT) -DUNIT -DRESULTS -DQUIET
35
DIRECTIVES=-DUNIT -DQUIET
36

    
37
all: $(EXECUTABLE)
38

    
39
cblas: $(SOURCE)
40

    
41
	$(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DFLOAT -DCBLAS $(LDFLAGS) \
42
		$(SOURCE) -latlas -lcblas -o $(SOURCE:.c=)_SP_$@
43

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

    
47
gotoblas: $(SOURCE)
48

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

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

    
55
openblas: $(SOURCE)
56

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

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

    
63
acml: $(SOURCE)
64

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

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

    
73
fblas: $(SOURCE)
74

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

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

    
81

    
82
gsl: $(SOURCE)
83

    
84
	$(CC) -I$(GSLINC) $(CFLAGS) $(DIRECTIVES) -DFLOAT \
85
		-DGSL $(LDFLAGS) \
86
		$(SOURCE) -lgslcblas -o $(SOURCE:.c=)_SP_$@
87

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

    
92
cublas: $(SOURCE)
93

    
94
	$(CC) -I$(CUDAINC) -L$(CUDALIB) $(CFLAGS) -DFLOAT \
95
		-DCUBLAS $(LDFLAGS) \
96
		$(DIRECTIVES) $(SOURCE) -lcublas -o $(SOURCE:.c=)_SP_$@
97

    
98
	$(CC) -I$(CUDAINC) -L$(CUDALIB) $(CFLAGS) -DDOUBLE \
99
		-DCUBLAS $(LDFLAGS) \
100
		$(DIRECTIVES) $(SOURCE) -lcublas -o $(SOURCE:.c=)_DP_$@
101

    
102
thunking: $(SOURCE)
103

    
104
	# Copy of source for thunking CUBLAS approach
105
	cp $(CUDASRC)/$(THUNKING) $(CUDASRC)/$(THUNKING:.c=.h) \
106
		$(CUDASRC)/$(CUDASRCINC) .
107
	# Patch Thunking prototypes to compile on Debian Lenny
108
	$(CC) -DCUBLAS_GFORTRAN -I$(CUDAINC) $(CFLAGS) -c $(THUNKING)
109

    
110
	$(CC) -DCUBLAS_GFORTRAN \
111
		-I$(CUDAINC) -L$(CUDALIB) $(CFLAGS) -DFLOAT -DTHUNKING \
112
		$(LDFLAGS) $(DIRECTIVES) $(SOURCE) \
113
		$(THUNKING:.c=.o) -lcublas -o $(SOURCE:.c=)_SP_$@
114

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

    
120
clean: $(SOURCE)
121
	find . -name "$(SOURCE:.c=)_*" -exec rm {} \;
122
	find . -name "$(THUNKING:.c=)*" -exec rm {} \;
123
	find . -name "*~" -exec rm {} \;
124
	find . -name "$(CUDASRCINC)" -exec rm {} \;
125

    
126
check: $(EXECUTABLE)
127

    
128
	$(SOURCE:.c=)_SP_$(EXECUTABLE) 2 1
129