Statistiques
| Révision :

root / BLAS / xTRSV / Makefile

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

1
# Makefile designed for Debian Buster
2

    
3
SOURCE=xTRSV.c
4

    
5
CC=gcc
6
FC=gfortran
7
CFLAGS=-Wall -O3
8
LDFLAGS=-lm
9

    
10
CUDAINC?=/usr/include
11
CUDALIB?=/usr/lib/x86_64-linux-gnu/
12
CUDASRC?=/usr/share/doc/nvidia-cuda-toolkit/examples/libcublas
13
THUNKING=fortran_thunking.c
14
CUDASRCINC=fortran_common.h
15

    
16
GSLINC=/usr/include/gsl
17

    
18
# OPENBLAS=/usr/lib/x86_64-linux-gnu
19
# ATLAS=/usr/lib/x86_64-linux-gnu
20

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

    
25
#EXECUTABLE=cblas fblas gsl cublas thunking acml openblas
26
EXECUTABLE=cblas fblas gsl cublas thunking openblas
27

    
28
# FORMAT define the precision of Floating Point numbers
29
# FP32 for simple of 32 bits size
30
# FP64 for double of 64 bits size
31
#FORMAT=FP64
32
FORMAT=FP32
33

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

    
39
all: $(EXECUTABLE)
40

    
41
cblas: $(SOURCE)
42

    
43
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFP32 -DCBLAS $(LDFLAGS) \
44
		$(SOURCE) -latlas -lcblas -o $(SOURCE:.c=)_SP_$@
45

    
46
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFP64 -DCBLAS $(LDFLAGS) \
47
		$(SOURCE) -latlas -lcblas -o $(SOURCE:.c=)_DP_$@
48

    
49
openblas: $(SOURCE)
50

    
51
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFP32 -DCBLAS $(LDFLAGS) \
52
		$(SOURCE) -lopenblas -lpthread -o $(SOURCE:.c=)_SP_$@
53

    
54
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFP64 -DCBLAS $(LDFLAGS) \
55
		$(SOURCE) -lopenblas -lpthread -o $(SOURCE:.c=)_DP_$@
56

    
57
acml: $(SOURCE)
58

    
59
	$(CC) -I$(ACMLINC) $(CFLAGS) $(DIRECTIVES) -DFP32 -DACML $(LDFLAGS) \
60
		$(SOURCE) -L$(ACMLLIB) -lacml_mp -lacml_mv \
61
		-lgomp -lgfortran -lpthread -o $(SOURCE:.c=)_SP_$@
62

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

    
67
fblas: $(SOURCE)
68

    
69
	# ATLAS version
70
	# $(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DFP32 -DFBLAS $(LDFLAGS) \
71
	#  	$(SOURCE) -latlas -lf77blas -o $(SOURCE:.c=)_SP_$@
72

    
73
	# $(CC) -L$(ATLAS) $(CFLAGS) $(DIRECTIVES) -DFP64 -DFBLAS $(LDFLAGS) \
74
	#  	$(SOURCE) -latlas -lf77blas -o $(SOURCE:.c=)_DP_$@
75

    
76
	# OpenBLAS version
77
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFP32 -DFBLAS $(LDFLAGS) \
78
	  	$(SOURCE) -lopenblas -lpthread -o $(SOURCE:.c=)_SP_$@
79

    
80
	$(CC) $(CFLAGS) $(DIRECTIVES) -DFP64 -DFBLAS $(LDFLAGS) \
81
	  	$(SOURCE) -lopenblas -lpthread -o $(SOURCE:.c=)_DP_$@
82

    
83

    
84
gsl: $(SOURCE)
85

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

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

    
92

    
93
cublas: $(SOURCE)
94

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

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

    
101
thunking: $(SOURCE)
102

    
103
# Copy of source for thunking CUBLAS approach
104
	cp $(CUDASRC)/$(THUNKING) $(CUDASRC)/$(THUNKING:.c=.h) \
105
		$(CUDASRC)/$(CUDASRCINC) .
106

    
107
	$(CC) -DCUBLAS_GFORTRAN -I$(CUDAINC) $(CFLAGS) -c $(THUNKING)
108

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

    
113
	$(CC) -DCUBLAS_GFORTRAN -I$(CUDAINC) -L$(CUDALIB) $(CFLAGS) -DTHUNKING \
114
		$(LDFLAGS) $(DIRECTIVES) $(SOURCE) -DFP64 \
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 {} \;