Introduction
Introduction Statistics Contact Development Disclaimer Help
tMakefile - numeric - C++ library with numerical algorithms
git clone git://src.adamsgaard.dk/numeric
Log
Files
Refs
LICENSE
---
tMakefile (5230B)
---
1 # Compare speed of different programming languages
2 # in a matrix multiplication algorithm: AB=C.
3 # A is uniform with the cell values '2', B should contain
4 # pseudorandom numbers.
5 # Initialization of A, B and C in the same loop is allowed,
6 # but the multiplication should be done in a separate loop.
7 # Matrix dimensions are specified as a command line argument.
8
9 MATRIXDIMS_SLOW = 8 16 32 64 128 256
10 MATRIXDIMS = $(MATRIXDIMS_SLOW) 512 1024
11 MATRIXDIMS_FAST = $(MATRIXDIMS) 2048 4096
12 #PREFIXCMD = nice -n 10 \gtime -ao # For OSX with GNU Time
13 #PREFIXCMD = nice -n -10 time -ao # For Linux
14 PREFIXCMD = time -ao # For Linux
15
16 CC=gcc
17 CXX=g++
18 CFLAGS=-Wall -O2 -march=native -ffast-math
19 CXXFLAGS=-Wall -O2 -march=native -ffast-math
20
21 performance.png: plot.gp lua-arrofarrs.dat lua-linarr.dat luajit-arrofar…
22 gnuplot -e "platform='$(shell uname -norm)'; threads='$(shell ./…
23
24 # Lua: Matrices as arrays of arrays
25 lua-arrofarrs.dat: lua-arrofarrs.lua
26 # lua-arrofars.lua
27 @rm -f $@
28 @for dims in $(MATRIXDIMS_SLOW); do \
29 $(PREFIXCMD) $@ -f "$$dims %e" lua $< $$dims; \
30 echo $$dims; \
31 done
32
33 # Lua: Matrices as linear arrays
34 lua-linarr.dat: lua-linarr.lua
35 # lua-linarr.lua
36 @rm -f $@
37 @for dims in $(MATRIXDIMS_SLOW); do \
38 $(PREFIXCMD) $@ -f "$$dims %e" lua $< $$dims; \
39 echo $$dims; \
40 done
41
42 # LuaJIT: Matrices as arrays of arrays
43 luajit-arrofarrs.dat: lua-arrofarrs.lua
44 # luajit-arrofars.lua
45 @rm -f $@
46 @for dims in $(MATRIXDIMS); do \
47 $(PREFIXCMD) $@ -f "$$dims %e" luajit $< $$dims; \
48 echo $$dims; \
49 done
50
51 # LuaJIT: Matrices as linear arrays
52 luajit-linarr.dat: lua-linarr.lua
53 # LuaJIT lua-linarr.lua
54 @rm -f $@
55 @for dims in $(MATRIXDIMS); do \
56 $(PREFIXCMD) $@ -f "$$dims %e" luajit $< $$dims; \
57 echo $$dims; \
58 done
59
60 # C: Array of arrays
61 c-arrofarrs.dat: c-arrofarrs
62 # c-arrofarrs
63 @rm -f $@
64 @for dims in $(MATRIXDIMS); do \
65 $(PREFIXCMD) $@ -f "$$dims %e" ./$< $$dims; \
66 echo $$dims; \
67 done
68
69 # C: Matrices as linear arrays
70 c-linarr.dat: c-linarr
71 # c-linarr
72 @rm -f $@
73 @for dims in $(MATRIXDIMS); do \
74 $(PREFIXCMD) $@ -f "$$dims %e" ./$< $$dims; \
75 echo $$dims; \
76 done
77
78 # C: Array of arrays, OpenMP
79 c-omp-arrofarrs.dat: c-omp-arrofarrs
80 # c-omp-arrofarrs
81 @rm -f $@
82 @for dims in $(MATRIXDIMS_FAST); do \
83 $(PREFIXCMD) $@ -f "$$dims %e" ./$< $$dims; \
84 echo $$dims; \
85 done
86
87 # C: Matrices as linear arrays, OpenMP
88 c-omp-linarr.dat: c-omp-linarr
89 # c-omp-linarr
90 @rm -f $@
91 @for dims in $(MATRIXDIMS_FAST); do \
92 $(PREFIXCMD) $@ -f "$$dims %e" ./$< $$dims; \
93 echo $$dims; \
94 done
95
96 c-omp-arrofarrs: c-arrofarrs.c
97 $(CC) $(CFLAGS) -fopenmp $< -o $@
98
99 c-omp-linarr: c-linarr.c
100 $(CC) $(CFLAGS) -fopenmp $< -o $@
101
102 # C: GSL CBLAS library
103 c-gsl-cblas.dat: c-gsl-cblas
104 # c-gsl-cblas
105 @rm -f $@
106 @for dims in $(MATRIXDIMS_FAST); do \
107 $(PREFIXCMD) $@ -f "$$dims %e" ./$< $$dims; \
108 echo $$dims; \
109 done
110
111 c-gsl-cblas: c-gsl-cblas.c
112 $(CC) $(CFLAGS) -lgslcblas $< -o $@
113
114 # Julia, native arrays
115 julia.dat: julia.jl
116 # julia.jl
117 @rm -f $@
118 @for dims in $(MATRIXDIMS_FAST); do \
119 $(PREFIXCMD) $@ -f "$$dims %e" julia $< $$dims; \
120 echo $$dims; \
121 done
122
123 # C++: Vector of vectors
124 cpp-vectorofvectors.dat: cpp-vectorofvectors
125 # cpp-vectorofvectors
126 @rm -f $@
127 @for dims in $(MATRIXDIMS); do \
128 $(PREFIXCMD) $@ -f "$$dims %e" ./$< $$dims; \
129 echo $$dims; \
130 done
131
132 # C++: Linear vectors
133 cpp-linvectors.dat: cpp-linvectors
134 # cpp-linvectors
135 @rm -f $@
136 @for dims in $(MATRIXDIMS); do \
137 $(PREFIXCMD) $@ -f "$$dims %e" ./$< $$dims; \
138 echo $$dims; \
139 done
140
141 # C++: Eigen
142 cpp-eigen.dat: cpp-eigen
143 # cpp-eigen
144 @rm -f $@
145 @for dims in $(MATRIXDIMS_FAST); do \
146 $(PREFIXCMD) $@ -f "$$dims %e" ./$< $$dims; \
147 echo $$dims; \
148 done
149
150 # C++: Armadillo
151 cpp-armadillo.dat: cpp-armadillo
152 # cpp-armadillo
153 @rm -f $@
154 @for dims in $(MATRIXDIMS_FAST); do \
155 $(PREFIXCMD) $@ -f "$$dims %e" ./$< $$dims; \
156 echo $$dims; \
157 done
158
159 cpp-armadillo: cpp-armadillo.cpp
160 $(CXX) $(CXXFLAGS) -larmadillo $< -o $@
161
162 # Python: Numpy module
163 python-numpy.dat: python-numpy.py
164 # python-numpy.py
165 @rm -f $@
166 @for dims in $(MATRIXDIMS_FAST); do \
167 $(PREFIXCMD) $@ -f "$$dims %e" python $< $$dims; \
168 echo $$dims; \
169 done
170
171 # Octave
172 octave.dat: octave.m
173 # octave.m
174 @rm -f $@
175 @for dims in $(MATRIXDIMS_FAST); do \
176 $(PREFIXCMD) $@ -f "$$dims %e" octave -qf $< $$dims; \
177 echo $$dims; \
178 done
179
180 # CUDA using CUBLAS
181 cuda-cublas.dat: cuda-cublas
182 @rm -f $@
183 @for dims in $(MATRIXDIMS_FAST); do \
184 $(PREFIXCMD) $@ -f "$$dims %e" ./$< $$dims; \
185 echo $$dims; \
186 done
187
188 cuda-cublas: cuda-cublas.cu
189 nvcc -lcublas -lcudart -m64 -gencode arch=compute_20,code=sm_20 …
190
191 # Fortran 90
192 fortran90.dat: fortran90
193 # fortran90.f
194
195 fortran90: fortran90.f
196 gfortran -Wall -O3 $< -o $@
197
198 clean:
199 $(RM) *.o
200 $(RM) *.dat
201 $(RM) *.png
202 $(RM) c-arrofarrs c-linarr
203 $(RM) c-omp-arrofarrs c-omp-linarr
204 $(RM) c-gsl-cblas
205 $(RM) cpp-vectorofvectors cpp-linvectors
206
207 edit:
208 vim -p Makefile plot.gp
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.