source: benchmark/Makefile.am@ 3e38e15

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 3e38e15 was dd9e1ca, checked in by Thierry Delisle <tdelisle@…>, 6 years ago

Reverted to nodebug for benchmarks

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