source: benchmark/Makefile.am @ 6e540ea

ADTarm-ehast-experimentalenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since 6e540ea was 6e540ea, checked in by Peter A. Buhr <pabuhr@…>, 4 years ago

additional corrections to harmonize with last benchmark update

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