Statistiques
| Révision :

root / BLAS / xGEMM / Makefile @ 1

Historique | Voir | Annoter | Télécharger (3,03 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
ACML=/opt/acml
20
ACMLINC=$(ACML)/gfortran64_mp/include
21
ACMLLIB=$(ACML)/gfortran64_mp/lib
22

    
23

    
24
EXECUTABLE=cblas fblas gsl cublas thunking gotoblas acml
25

    
26
FORMAT=DOUBLE
27
#FORMAT=FLOAT
28

    
29
#DIRECTIVES=-D$(FORMAT) -DPRINT -DUNIT
30
#DIRECTIVES=-D$(FORMAT) -DUNIT -DRESULTS -DQUIET
31
DIRECTIVES=-DUNIT -DQUIET
32

    
33
all: $(EXECUTABLE)
34

    
35
cblas: $(SOURCE)
36

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

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

    
43
gotoblas: $(SOURCE)
44

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

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

    
51
acml: $(SOURCE)
52

    
53
	$(CC) -I$(ACMLINC) $(CFLAGS) $(DIRECTIVES) -DFLOAT -DACML $(LDFLAGS) \
54
		$(SOURCE) -L$(ACMLLIB) -lacml_mp -lacml_mv \
55
		-lgomp -lgfortran -lpthread -o $(SOURCE:.c=)_SP_$@
56

    
57
	$(CC) -I$(ACMLINC) $(CFLAGS) $(DIRECTIVES) -DDOUBLE -DACML $(LDFLAGS) \
58
		$(SOURCE) -L$(ACMLLIB) -lacml_mp -lacml_mv \
59
		-lgomp -lgfortran -lpthread -o $(SOURCE:.c=)_DP_$@
60

    
61
fblas: $(SOURCE)
62

    
63
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFLOAT -DFBLAS $(LDFLAGS) \
64
		$(SOURCE) -lf77blas -o $(SOURCE:.c=)_SP_$@
65

    
66
	$(CC) $(CFLAGS) $(DIRECTIVES) -DDOUBLE -DFBLAS $(LDFLAGS) \
67
		$(SOURCE) -lf77blas -o $(SOURCE:.c=)_DP_$@
68

    
69

    
70
gsl: $(SOURCE)
71

    
72
	$(CC) -I$(GSLINC) $(CFLAGS) $(DIRECTIVES) -DFLOAT \
73
		-DGSL $(LDFLAGS) \
74
		$(SOURCE) -lgslcblas -o $(SOURCE:.c=)_SP_$@
75

    
76
	$(CC) -I$(GSLINC) $(CFLAGS) $(DIRECTIVES) -DDOUBLE \
77
		-DGSL $(LDFLAGS) \
78
		$(SOURCE) -lgslcblas -o $(SOURCE:.c=)_DP_$@
79

    
80
cublas: $(SOURCE)
81

    
82
	$(CC) -I$(CUDAINC) -L$(CUDALIB) $(CFLAGS) -DFLOAT \
83
		-DCUBLAS $(LDFLAGS) \
84
		$(DIRECTIVES) $(SOURCE) -lcublas -o $(SOURCE:.c=)_SP_$@
85

    
86
	$(CC) -I$(CUDAINC) -L$(CUDALIB) $(CFLAGS) -DDOUBLE \
87
		-DCUBLAS $(LDFLAGS) \
88
		$(DIRECTIVES) $(SOURCE) -lcublas -o $(SOURCE:.c=)_DP_$@
89

    
90
thunking: $(SOURCE)
91

    
92
	# Copy of source for thunking CUBLAS approach
93
	cp $(CUDASRC)/$(THUNKING) $(CUDASRC)/$(THUNKING:.c=.h) \
94
		$(CUDASRC)/$(CUDASRCINC) .
95
	# Patch Thunking prototypes to compile on Debian Lenny
96
	patch $(CUDASRCINC) $(PATCHTHUNKING)
97
	$(CC) -I$(CUDAINC) $(CFLAGS) -c $(THUNKING)
98

    
99
	$(CC) -I$(CUDAINC) -L$(CUDALIB) $(CFLAGS) -DFLOAT -DTHUNKING \
100
		$(LDFLAGS) $(DIRECTIVES) $(SOURCE) \
101
		$(THUNKING:.c=.o) -lcublas -o $(SOURCE:.c=)_SP_$@
102

    
103
	$(CC) -I$(CUDAINC) -L$(CUDALIB) $(CFLAGS) -DDOUBLE -DTHUNKING \
104
		$(LDFLAGS) $(DIRECTIVES) $(SOURCE) \
105
		$(THUNKING:.c=.o) -lcublas -o $(SOURCE:.c=)_DP_$@
106

    
107
clean: $(SOURCE)
108
	find . -name "$(SOURCE:.c=)_*" -exec rm {} \;
109
	find . -name "$(THUNKING:.c=)*" -exec rm {} \;
110
	find . -name "*~" -exec rm {} \;
111
	find . -name "$(CUDASRCINC)" -exec rm {} \;
112

    
113
check: $(EXECUTABLE)
114

    
115
	$(SOURCE:.c=)_SP_$(EXECUTABLE) 2 1
116