Statistiques
| Révision :

root / BLAS / xGEMM / Makefile @ 6

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

1
SOURCE=xGEMM.c
2

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

    
13
PATCHTHUNKING=patch_thunking.h
14

    
15
GSLINC=/usr/include/gsl
16

    
17
GOTO2=/opt/GotoBLAS2
18

    
19
OPENBLAS=/opt/OpenBLAS
20

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

    
25

    
26
EXECUTABLE=cblas fblas gsl cublas thunking gotoblas openblas acml
27

    
28
FORMAT=DOUBLE
29
#FORMAT=FLOAT
30

    
31
#DIRECTIVES=-D$(FORMAT) -DPRINT -DUNIT
32
#DIRECTIVES=-D$(FORMAT) -DUNIT -DRESULTS -DQUIET
33
DIRECTIVES=-DUNIT -DQUIET
34

    
35
all: $(EXECUTABLE)
36

    
37
cblas: $(SOURCE)
38

    
39
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFLOAT -DCBLAS $(LDFLAGS) \
40
		$(SOURCE) -lcblas -o $(SOURCE:.c=)_SP_$@
41

    
42
	$(CC) $(CFLAGS) $(DIRECTIVES) -DDOUBLE -DCBLAS $(LDFLAGS) \
43
		$(SOURCE) -lcblas -o $(SOURCE:.c=)_DP_$@
44

    
45
gotoblas: $(SOURCE)
46

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

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

    
53
openblas: $(SOURCE)
54

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

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

    
61
acml: $(SOURCE)
62

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

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

    
71
fblas: $(SOURCE)
72

    
73
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFLOAT -DFBLAS $(LDFLAGS) \
74
		$(SOURCE) -lf77blas -o $(SOURCE:.c=)_SP_$@
75

    
76
	$(CC) $(CFLAGS) $(DIRECTIVES) -DDOUBLE -DFBLAS $(LDFLAGS) \
77
		$(SOURCE) -lf77blas -o $(SOURCE:.c=)_DP_$@
78

    
79

    
80
gsl: $(SOURCE)
81

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

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

    
90
cublas: $(SOURCE)
91

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

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

    
100
thunking: $(SOURCE)
101

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

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

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

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

    
123
check: $(EXECUTABLE)
124

    
125
	$(SOURCE:.c=)_SP_$(EXECUTABLE) 2 1
126