source: benchmark/Makefile.am@ b4107c8

ADT arm-eh ast-experimental enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since b4107c8 was 90cb6f7, checked in by Peter A. Buhr <pabuhr@…>, 6 years ago

begin updating benchmark build

  • Property mode set to 100644
File size: 14.8 KB
Line 
1######################## -*- Mode: Makefile-Automake -*- ######################
2##
3## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
4##
5## The contents of this file are covered under the licence agreement in the
6## file "LICENCE" distributed with Cforall.
7##
8## Makefile.am --
9##
10## Author : Peter A. Buhr
11## Created On : Sun May 31 09:08:15 2015
12## Last Modified By : Peter A. Buhr
13## Last Modified On : Tue Jan 7 15:37:42 2020
14## Update Count : 70
15###############################################################################
16
17AUTOMAKE_OPTIONS = foreign # do not require all the GNU file names
18ACLOCAL_AMFLAGS = -I automake
19
20# applies to both programs
21include $(top_srcdir)/src/cfa.make
22
23AM_CFLAGS = -O2 -Wall -Wextra -I$(srcdir) -lrt -pthread # -Werror
24AM_CFAFLAGS = -quiet -nodebug
25AM_UPPFLAGS = -quiet -nodebug -multi -std=c++14
26
27BENCH_V_CC = $(__bench_v_CC_$(__quiet))
28BENCH_V_CFA = $(__bench_v_CFA_$(__quiet))
29BENCH_V_CXX = $(__bench_v_CXX_$(__quiet))
30BENCH_V_UPP = $(__bench_v_UPP_$(__quiet))
31BENCH_V_GOC = $(__bench_v_GOC_$(__quiet))
32BENCH_V_RUSTC = $(__bench_v_RUSTC_$(__quiet))
33BENCH_V_JAVAC = $(__bench_v_JAVAC_$(__quiet))
34
35__quiet = verbose
36__bench_v_CC_quiet = @
37__bench_v_CFA_quiet = @
38__bench_v_CXX_quiet = @
39__bench_v_UPP_quiet = @
40__bench_v_GOC_quiet = @
41__bench_v_RUSTC_quiet = @
42__bench_v_JAVAC_quiet = @
43__bench_v_CC_verbose = $(AM_V_CC)
44__bench_v_CFA_verbose = $(AM_V_CFA)
45__bench_v_CXX_verbose = $(AM_V_CXX)
46__bench_v_UPP_verbose = $(AM_V_UPP)
47__bench_v_GOC_verbose = $(AM_V_GOC)
48__bench_v_RUSTC_verbose = $(AM_V_RUSTC)
49__bench_v_JAVAC_verbose = $(AM_V_JAVAC)
50
51
52TOOLSDIR = ${abs_top_builddir}/tools/
53REPEAT = ${abs_top_builddir}/tools/repeat
54STATS = ${abs_top_srcdir}/tools/stat.py
55# NEED AT LEAST 4 DATA VALUES FOR BENCHMARKS BECAUSE THE MAX AND MIN VALUES ARE REMOVED
56repeats = 5 # 31 for benchmarks
57arch = x64
58skipcompile = no
59TIME_FORMAT = "%E"
60PRINT_FORMAT = %20s: #Comments needed for spacing
61
62# Dummy hack tricks
63EXTRA_PROGRAMS = dummy # build but do not install
64dummy_SOURCES = dummyC.c dummyCXX.cpp
65
66dummyC.c:
67 @echo "int main() { return 0; }" > ${@}
68
69dummyCXX.cpp:
70 @echo "int main() { return 0; }" > ${@}
71
72.NOTPARALLEL:
73.PHONY: compile.csv basic.csv ctxswitch.csv mutex.csv signal.csv
74
75## =========================================================================================================
76
77all : basic$(EXEEXT) ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
78
79%.run : %$(EXEEXT) ${REPEAT}
80 @rm -f .result.log
81 @echo "------------------------------------------------------"
82 @echo $<
83 @${REPEAT} ${repeats} ./a.out | tee -a .result.log
84 @${STATS} .result.log
85 @echo "------------------------------------------------------"
86 @rm -f a.out .result.log *.class
87
88%.runquiet :
89 @+make $(basename $@) CFLAGS="-w" __quiet=quiet
90 @taskset -c 1 ./a.out
91 @rm -f a.out
92
93%.make :
94 @printf "${PRINT_FORMAT}" $(basename $(subst compile-,,$@))
95 @+/usr/bin/time -f ${TIME_FORMAT} make $(basename $@) 2>&1
96
97${REPEAT} :
98 @+make -C ${abs_top_builddir}/tools repeat
99
100## =========================================================================================================
101
102FIX_NEW_LINES = cat $@ | tr "\n" "\t" | sed -r 's/\t,/,/' | tr "\t" "\n" > $@
103
104jenkins$(EXEEXT):
105@DOifskipcompile@
106 @+make compile.csv
107 @-+make compile.diff.csv
108@DOendif@
109 @+make basic.csv
110 @-+make basic.diff.csv
111 @+make ctxswitch.csv
112 @-+make ctxswitch.diff.csv
113 @+make mutex.csv
114 @-+make mutex.diff.csv
115 @+make signal.csv
116 @-+make signal.diff.csv
117@DOifskipcompile@
118 cat compile.csv
119 -cat compile.diff.csv
120@DOendif@
121 cat basic.csv
122 -cat basic.diff.csv
123 cat ctxswitch.csv
124 -cat ctxswitch.diff.csv
125 cat mutex.csv
126 -cat mutex.diff.csv
127 cat signal.csv
128 -cat signal.diff.csv
129
130compile.csv:
131 @echo "array,attributes,empty,expression,io,monitor,operators,typeof" > $@
132 @+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-array.make >> $@
133 @+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-attributes.make >> $@
134 @+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-empty.make >> $@
135 @+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-expression.make >> $@
136 @+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-io.make >> $@
137 @+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-monitor.make >> $@
138 @+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-operators.make >> $@
139 @+make TIME_FORMAT='%e' PRINT_FORMAT='' compile-typeof.make >> $@
140 @$(srcdir)/fixcsv.sh $@
141
142basic.csv:
143 @echo "generator,coroutine,thread" > $@
144 @+make basic-cfa_generator.runquiet >> $@ && echo -n ',' >> $@
145 @+make basic-cfa_coroutine.runquiet >> $@ && echo -n ',' >> $@
146 @+make basic-cfa_thread.runquiet >> $@
147 @$(srcdir)/fixcsv.sh $@
148
149ctxswitch.csv:
150 @echo "generator,coroutine,thread" > $@
151 @+make ctxswitch-cfa_generator.runquiet >> $@ && echo -n ',' >> $@
152 @+make ctxswitch-cfa_coroutine.runquiet >> $@ && echo -n ',' >> $@
153 @+make ctxswitch-cfa_thread.runquiet >> $@
154 @$(srcdir)/fixcsv.sh $@
155
156mutex.csv:
157 @echo "1-monitor,2-monitor" > $@
158 @+make mutex-cfa1.runquiet >> $@ && echo -n ',' >> $@
159 @+make mutex-cfa2.runquiet >> $@
160 @$(srcdir)/fixcsv.sh $@
161
162signal.csv:
163 @echo "signal-1,signal-2,waitfor-1,waitfor-2" > $@
164 @+make signal-cfa1.runquiet >> $@ && echo -n ',' >> $@
165 @+make signal-cfa2.runquiet >> $@ && echo -n ',' >> $@
166 @+make waitfor-cfa1.runquiet >> $@ && echo -n ',' >> $@
167 @+make waitfor-cfa2.runquiet >> $@
168 @$(srcdir)/fixcsv.sh $@
169
170%.diff.csv: %.csv
171 @test -e $(srcdir)/baselines/$(arch)/$< || (echo "Error : Missing baseline for ${<}" && false)
172 @$(srcdir)/baselines/calc.py $(srcdir)/baselines/$(arch)/$(<) $(<) > $@
173
174## =========================================================================================================
175
176BASIC_DEPEND = \
177 basic-loop.run \
178 basic-function.run \
179 basic-fetch_add.run \
180 basic-ttst_lock.run \
181 basic-tls-fetch_add.run
182
183basic-loop$(EXEEXT):
184 $(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/loop.c
185
186basic-function$(EXEEXT):
187 $(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/function.c
188
189basic-fetch_add$(EXEEXT):
190 $(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/fetch_add.c
191
192basic-ttst_lock$(EXEEXT):
193 $(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/ttst_lock.c
194
195basic-tls-fetch_add$(EXEEXT):
196 $(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/tls_fetch_add.c
197
198basic$(EXEEXT): $(BASIC_DEPEND)
199
200basic-loop.run : basic-loop$(EXEEXT) ${REPEAT}
201 @rm -f .result.log
202 @echo "------------------------------------------------------"
203 @echo $<
204 @${REPEAT} ${repeats} ./a.out 10000000000 | tee -a .result.log
205 @${STATS} .result.log
206 @echo "------------------------------------------------------"
207 @rm -f a.out .result.log *.class
208
209basic-function.run : basic-function$(EXEEXT) ${REPEAT}
210 @rm -f .result.log
211 @echo "------------------------------------------------------"
212 @echo $<
213 @${REPEAT} ${repeats} ./a.out 5000000000 | tee -a .result.log
214 @${STATS} .result.log
215 @echo "------------------------------------------------------"
216 @rm -f a.out .result.log *.class
217
218basic-%.run : basic-%$(EXEEXT) ${REPEAT}
219 @rm -f .result.log
220 @echo "------------------------------------------------------"
221 @echo $<
222 @${REPEAT} ${repeats} ./a.out 500000000 | tee -a .result.log
223 @${STATS} .result.log
224 @echo "------------------------------------------------------"
225 @rm -f a.out .result.log *.class
226
227## =========================================================================================================
228
229CTXSWITCH_DEPEND = \
230 ctxswitch-pthread.run \
231 ctxswitch-cfa_generator.run \
232 ctxswitch-cfa_coroutine.run \
233 ctxswitch-cfa_thread.run \
234 ctxswitch-cfa_thread2.run \
235 ctxswitch-upp_coroutine.run \
236 ctxswitch-upp_thread.run \
237 ctxswitch-goroutine.run \
238 ctxswitch-rust_thread.run \
239 ctxswitch-nodejs_thread.run \
240 ctxswitch-java_thread.run
241
242if WITH_LIBFIBRE
243CTXSWITCH_DEPEND += \
244 ctxswitch-kos_fibre.run \
245 ctxswitch-kos_fibre2.run
246
247ctxswitch-kos_fibre$(EXEEXT):
248 $(BENCH_V_CXX)$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre.cpp -I$(LIBFIBRE_DIR) -lfibre
249
250ctxswitch-kos_fibre2$(EXEEXT):
251 $(BENCH_V_CXX)$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre
252endif
253
254ctxswitch$(EXEEXT): $(CTXSWITCH_DEPEND)
255
256ctxswitch-pthread$(EXEEXT):
257 $(BENCH_V_CC)$(COMPILE) $(srcdir)/ctxswitch/pthreads.c
258
259ctxswitch-cfa_generator$(EXEEXT):
260 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/ctxswitch/cfa_gen.cfa
261
262ctxswitch-cfa_coroutine$(EXEEXT):
263 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/ctxswitch/cfa_cor.cfa
264
265ctxswitch-cfa_thread$(EXEEXT):
266 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/ctxswitch/cfa_thrd.cfa
267
268ctxswitch-cfa_thread2$(EXEEXT):
269 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/ctxswitch/cfa_thrd2.cfa
270
271ctxswitch-upp_coroutine$(EXEEXT):
272 $(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/ctxswitch/upp_cor.cc
273
274ctxswitch-upp_thread$(EXEEXT):
275 $(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/ctxswitch/upp_thrd.cc
276
277ctxswitch-goroutine$(EXEEXT):
278 $(BENCH_V_GOC)go build -o a.out $(srcdir)/ctxswitch/goroutine.go
279
280ctxswitch-rust_thread$(EXEEXT):
281 $(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/ctxswitch/rust_thrd.rs
282
283ctxswitch-java_thread$(EXEEXT):
284 $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/ctxswitch/JavaThread.java
285 @echo "#!/bin/sh" > a.out
286 @echo "java JavaThread" >> a.out
287 @chmod a+x a.out
288
289ctxswitch-nodejs.run : ctxswitch-nodejs$(EXEEXT) ${REPEAT}
290 @rm -f .result.log
291 @echo "------------------------------------------------------"
292 @echo $<
293 @${REPEAT} ${repeats} node node_cor.js 50000000 | tee -a .result.log
294 @${STATS} .result.log
295 @echo "------------------------------------------------------"
296 @rm -f a.out .result.log *.class
297
298ctxswitch-%.run : ctxswitch-%$(EXEEXT) ${REPEAT}
299 @rm -f .result.log
300 @echo "------------------------------------------------------"
301 @echo $<
302 @${REPEAT} ${repeats} ./a.out 50000000 | tee -a .result.log
303 @${STATS} .result.log
304 @echo "------------------------------------------------------"
305 @rm -f a.out .result.log *.class
306
307## =========================================================================================================
308
309mutex$(EXEEXT) : \
310 mutex-pthread.run \
311 mutex-upp.run \
312 mutex-cfa1.run \
313 mutex-cfa2.run \
314 mutex-cfa4.run \
315 mutex-go.run \
316 mutex-rust.run \
317 mutex-java.run
318
319mutex-pthread$(EXEEXT):
320 $(BENCH_V_CC)$(COMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/pthreads.c
321
322mutex-upp$(EXEEXT):
323 $(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/upp.cc
324
325mutex-cfa1$(EXEEXT):
326 $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/cfa1.cfa
327
328mutex-cfa2$(EXEEXT):
329 $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/cfa2.cfa
330
331mutex-cfa4$(EXEEXT):
332 $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/cfa4.cfa
333
334mutex-go$(EXEEXT):
335 $(BENCH_V_GOC)go build -o a.out $(srcdir)/mutex/goroutine.go
336
337mutex-rust$(EXEEXT):
338 $(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/mutex/rust.rs
339
340mutex-java$(EXEEXT):
341 $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/mutex/JavaThread.java
342 @echo "#!/bin/sh" > a.out
343 @echo "java JavaThread" >> a.out
344 @chmod a+x a.out
345
346## =========================================================================================================
347
348signal$(EXEEXT) : \
349 signal-pthread.run \
350 signal-upp.run \
351 signal-cfa1.run \
352 signal-cfa2.run \
353 signal-cfa4.run \
354 signal-rust.run \
355 signal-java.run
356
357signal-pthread$(EXEEXT):
358 $(BENCH_V_CC)$(COMPILE) -DBENCH_N=5000000 $(srcdir)/schedint/pthreads.c
359
360signal-upp$(EXEEXT):
361 $(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/schedint/upp.cc
362
363signal-cfa1$(EXEEXT):
364 $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/schedint/cfa1.cfa
365
366signal-cfa2$(EXEEXT):
367 $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/schedint/cfa2.cfa
368
369signal-cfa4$(EXEEXT):
370 $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/schedint/cfa4.cfa
371
372signal-rust$(EXEEXT):
373 $(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/schedint/rust.rs
374
375signal-java$(EXEEXT):
376 $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/schedint/JavaThread.java
377 @echo "#!/bin/sh" > a.out
378 @echo "java JavaThread" >> a.out
379 @chmod a+x a.out
380
381## =========================================================================================================
382
383waitfor$(EXEEXT) : \
384 waitfor-upp.run \
385 waitfor-cfa1.run \
386 waitfor-cfa2.run \
387 waitfor-cfa4.run
388
389waitfor-upp$(EXEEXT):
390 $(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedext/upp.cc
391
392waitfor-cfa1$(EXEEXT):
393 $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000 $(srcdir)/schedext/cfa1.cfa
394
395waitfor-cfa2$(EXEEXT):
396 $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000 $(srcdir)/schedext/cfa2.cfa
397
398waitfor-cfa4$(EXEEXT):
399 $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000 $(srcdir)/schedext/cfa4.cfa
400
401## =========================================================================================================
402
403creation$(EXEEXT) : \
404 creation-pthread.run \
405 creation-cfa_coroutine.run \
406 creation-cfa_coroutine_eager.run \
407 creation-cfa_thread.run \
408 creation-upp_coroutine.run \
409 creation-upp_thread.run \
410 creation-goroutine.run \
411 creation-rust.run \
412 creation-java.run
413
414creation-cfa_coroutine$(EXEEXT):
415 $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa
416
417creation-cfa_coroutine_eager$(EXEEXT):
418 $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa -DEAGER
419
420creation-cfa_thread$(EXEEXT):
421 $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_thrd.cfa
422
423creation-upp_coroutine$(EXEEXT):
424 $(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_cor.cc
425
426creation-upp_thread$(EXEEXT):
427 $(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_thrd.cc
428
429creation-pthread$(EXEEXT):
430 $(BENCH_V_CC)$(COMPILE) -DBENCH_N=250000 $(srcdir)/creation/pthreads.c
431
432creation-goroutine$(EXEEXT):
433 $(BENCH_V_GOC)go build -o a.out $(srcdir)/creation/goroutine.go
434
435creation-rust$(EXEEXT):
436 $(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/creation/rust_thrd.rs
437
438creation-java$(EXEEXT):
439 $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/creation/JavaThread.java
440 @echo "#!/bin/sh" > a.out
441 @echo "java JavaThread" >> a.out
442 @chmod a+x a.out
443
444## =========================================================================================================
445
446compile$(EXEEXT) : \
447 compile-array.make \
448 compile-attributes.make \
449 compile-empty.make \
450 compile-expression.make \
451 compile-io.make \
452 compile-monitor.make \
453 compile-operators.make \
454 compile-typeof.make
455
456testdir = $(top_srcdir)/tests
457
458compile-array$(EXEEXT):
459 @$(CFACOMPILE) -fsyntax-only -w $(testdir)/array.cfa
460
461compile-attributes$(EXEEXT):
462 @$(CFACOMPILE) -fsyntax-only -w $(testdir)/attributes.cfa
463
464compile-empty$(EXEEXT):
465 @$(CFACOMPILE) -fsyntax-only -w $(srcdir)/compile/empty.cfa
466
467compile-expression$(EXEEXT):
468 @$(CFACOMPILE) -fsyntax-only -w $(testdir)/expression.cfa
469
470compile-io$(EXEEXT):
471 @$(CFACOMPILE) -fsyntax-only -w $(testdir)/io1.cfa
472
473compile-monitor$(EXEEXT):
474 @$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/monitor.cfa
475
476compile-operators$(EXEEXT):
477 @$(CFACOMPILE) -fsyntax-only -w $(testdir)/operators.cfa
478
479compile-thread$(EXEEXT):
480 @$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/thread.cfa
481
482compile-typeof$(EXEEXT):
483 @$(CFACOMPILE) -fsyntax-only -w $(testdir)/typeof.cfa
Note: See TracBrowser for help on using the repository browser.