source: benchmark/Makefile.am@ 1def117b

ADT arm-eh ast-experimental enum forall-pointer-decay jacob/cs343-translation new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since 1def117b was c2bc6d5, checked in by Thierry Delisle <tdelisle@…>, 5 years ago

Minor fixes to make files to support dist target

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