diff options
author | Matthias Jung <jungma@eit.uni-kl.de> | 2017-03-01 18:39:56 +0100 |
---|---|---|
committer | Matthias Jung <jungma@eit.uni-kl.de> | 2017-05-18 08:36:56 +0000 |
commit | aa651c7f8321bf96fc88f9a17285225000a753ec (patch) | |
tree | b13240008c970b47bd74a5007e68136155d272fc /ext/systemc/src/sysc/qt/time | |
parent | 595e692de09e1b7cbc5f57ac01da299afc066fdd (diff) | |
download | gem5-aa651c7f8321bf96fc88f9a17285225000a753ec.tar.xz |
ext: Include SystemC 2.3.1 into gem5
In the past it happened several times that some changes in gem5 broke the
SystemC coupling. Recently Accelera has changed the licence for SystemC
from their own licence to Apache2.0, which is compatible with gem5.
However, SystemC usually relies on the Boost library, but I was able to
exchange the boost calls by c++11 alternatives. The recent SystemC version
is placed into /ext and is integrated into gem5's build system. The goal is
to integrate some SystemC tests for the CI in some following patches.
Change-Id: I4b66ec806b5e3cffc1d7c85d3735ff4fa5b31fd0
Reviewed-on: https://gem5-review.googlesource.com/2240
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'ext/systemc/src/sysc/qt/time')
-rw-r--r-- | ext/systemc/src/sysc/qt/time/README.time | 17 | ||||
-rwxr-xr-x | ext/systemc/src/sysc/qt/time/assim | 42 | ||||
-rwxr-xr-x | ext/systemc/src/sysc/qt/time/cswap | 37 | ||||
-rwxr-xr-x | ext/systemc/src/sysc/qt/time/go | 43 | ||||
-rwxr-xr-x | ext/systemc/src/sysc/qt/time/init | 42 | ||||
-rwxr-xr-x | ext/systemc/src/sysc/qt/time/prim | 41 | ||||
-rwxr-xr-x | ext/systemc/src/sysc/qt/time/raw | 58 |
7 files changed, 280 insertions, 0 deletions
diff --git a/ext/systemc/src/sysc/qt/time/README.time b/ext/systemc/src/sysc/qt/time/README.time new file mode 100644 index 000000000..4bb190e18 --- /dev/null +++ b/ext/systemc/src/sysc/qt/time/README.time @@ -0,0 +1,17 @@ +The program `raw', when run in `..' runs the program `run' produced +from `meas.c'. It produces a raw output file (see `../tmp/*.raw'). +`raw' will die with an error if run in the current directory. Note +that some versions of `time' produce output in an unexpected format; +edit them by hand. + +`prim', `init', `cswap' and `go' produce formatted table entries used +in the documentation (in `../doc'). For example, from `..', + + foreach i (tmp/*.raw) + time/prim $i + end + +See notes in the QuickThreads document about the applicability of +these microbenchmark measurements -- in general, you can expect all +QuickThreads operations to be a bit slower when used in a real +application. diff --git a/ext/systemc/src/sysc/qt/time/assim b/ext/systemc/src/sysc/qt/time/assim new file mode 100755 index 000000000..6c4c52183 --- /dev/null +++ b/ext/systemc/src/sysc/qt/time/assim @@ -0,0 +1,42 @@ +#! /bin/awk -f + +BEGIN { + nmach = 0; + + init_test = "1"; + abort_test = "6"; + blocki_test = "7"; + block_test = "8"; +} + +{ + mach = $1 + test = $2 + iter = $3 + time = $6 + $8 + + if (machi[mach] == 0) { + machn[nmach] = mach; + machi[mach] = 1; + ++nmach; + } + + us_per_op = time / iter * 1000000 + times[mach "_" test] = us_per_op; +} + + +END { + for (i=0; i<nmach; ++i) { + m = machn[i]; + init = times[m "_" init_test]; + printf ("init %s | %f\n", m, init); + + init_abort_blocki = times[m "_" abort_test]; + abort_blocki = init_abort_blocki - init; + blocki = times[m "_" blocki_test]; + abort = abort_blocki - blocki; + blockf = times[m "_" block_test]; + printf ("swap %s | %f | %f | %f\n", m, abort, blocki, blockf); + } +} diff --git a/ext/systemc/src/sysc/qt/time/cswap b/ext/systemc/src/sysc/qt/time/cswap new file mode 100755 index 000000000..0ec811bcd --- /dev/null +++ b/ext/systemc/src/sysc/qt/time/cswap @@ -0,0 +1,37 @@ +#! /bin/awk -f + +BEGIN { + purpose = "report time used by int only and int+fp cswaps"; + + nmach = 0; + + test_int = "7"; + test_fp = "8"; +} + +{ + mach = $1 + test = $2 + iter = $3 + time = $6 + $8 + + if (machi[mach] == 0) { + machn[nmach] = mach; + machi[mach] = 1; + ++nmach; + } + + us_per_op = time / iter * 1000000 + times[mach "_" test] = us_per_op; +} + + +END { + for (i=0; i<nmach; ++i) { + m = machn[i]; + + integer = times[m "_" test_int]; + fp = times[m "_" test_fp]; + printf ("%s|%3.1f|%3.1f\n", m, integer, fp); + } +} diff --git a/ext/systemc/src/sysc/qt/time/go b/ext/systemc/src/sysc/qt/time/go new file mode 100755 index 000000000..489d53882 --- /dev/null +++ b/ext/systemc/src/sysc/qt/time/go @@ -0,0 +1,43 @@ +#! /bin/awk -f + +BEGIN { + purpose = "report times used for init/start/stop"; + + nmach = 0; + + test_single = "6"; + test_v0 = "10"; + test_v2 = "11"; + test_v4 = "12"; + test_v8 = "13"; +} + +{ + mach = $1 + test = $2 + iter = $3 + time = $6 + $8 + + if (machi[mach] == 0) { + machn[nmach] = mach; + machi[mach] = 1; + ++nmach; + } + + us_per_op = time / iter * 1000000 + times[mach "_" test] = us_per_op; +} + + +END { + for (i=0; i<nmach; ++i) { + m = machn[i]; + + single = times[m "_" test_single]; + v0 = times[m "_" test_v0]; + v2 = times[m "_" test_v2]; + v4 = times[m "_" test_v4]; + v8 = times[m "_" test_v8]; + printf ("%s|%3.1f|%3.1f|%3.1f|%3.1f|%3.1f\n", m, single, v0, v2, v4, v8); + } +} diff --git a/ext/systemc/src/sysc/qt/time/init b/ext/systemc/src/sysc/qt/time/init new file mode 100755 index 000000000..8bcbf3428 --- /dev/null +++ b/ext/systemc/src/sysc/qt/time/init @@ -0,0 +1,42 @@ +#! /bin/awk -f + +BEGIN { + purpose = "Report time used to initialize a thread." + nmach = 0; + + test_single = "1"; + test_v0 = "14"; + test_v2 = "15"; + test_v4 = "16"; + test_v8 = "17"; +} + +{ + mach = $1 + test = $2 + iter = $3 + time = $6 + $8 + + if (machi[mach] == 0) { + machn[nmach] = mach; + machi[mach] = 1; + ++nmach; + } + + us_per_op = time / iter * 1000000 + times[mach "_" test] = us_per_op; +} + + +END { + for (i=0; i<nmach; ++i) { + m = machn[i]; + + single = times[m "_" test_single]; + v0 = times[m "_" test_v0]; + v2 = times[m "_" test_v2]; + v4 = times[m "_" test_v4]; + v8 = times[m "_" test_v8]; + printf ("%s|%3.1f|%3.1f|%3.1f|%3.1f|%3.1f\n", m, single, v0, v2, v4, v8); + } +} diff --git a/ext/systemc/src/sysc/qt/time/prim b/ext/systemc/src/sysc/qt/time/prim new file mode 100755 index 000000000..22b323f6f --- /dev/null +++ b/ext/systemc/src/sysc/qt/time/prim @@ -0,0 +1,41 @@ +#! /bin/awk -f + +BEGIN { + purpose = "report times for microbenchmarks" + + nmach = 0; + + test_callind = "18"; + test_callimm = "18"; + test_addreg = "20"; + test_loadreg = "21"; +} + +{ + mach = $1 + test = $2 + iter = $3 + time = $6 + $8 + + if (machi[mach] == 0) { + machn[nmach] = mach; + machi[mach] = 1; + ++nmach; + } + + ns_per_op = time / iter * 1000000 + times[mach "_" test] = ns_per_op; +} + + +END { + for (i=0; i<nmach; ++i) { + m = machn[i]; + + ind = times[m "_" test_callind]; + imm = times[m "_" test_callimm]; + add = times[m "_" test_addreg]; + load = times[m "_" test_loadreg]; + printf ("%s|%1.3f|%1.3f|%1.3f|%1.3f\n", m, ind, imm, add, load); + } +} diff --git a/ext/systemc/src/sysc/qt/time/raw b/ext/systemc/src/sysc/qt/time/raw new file mode 100755 index 000000000..96ae10ad1 --- /dev/null +++ b/ext/systemc/src/sysc/qt/time/raw @@ -0,0 +1,58 @@ +#! /bin/csh + +rm -f timed + +set init=1 +set runone=6 +set blockint=7 +set blockfloat=8 +set vainit0=14 +set vainit2=15 +set vainit4=16 +set vainit8=17 +set vastart0=10 +set vastart2=11 +set vastart4=12 +set vastart8=13 +set bench_regcall=18 +set bench_immcall=19 +set bench_add=20 +set bench_load=21 + +source configuration + +echo -n $config_machine $init $config_init +/bin/time run $init $config_init +echo -n $config_machine $runone $config_runone +/bin/time run $runone $config_runone +echo -n $config_machine $blockint $config_blockint +/bin/time run $blockint $config_blockint +echo -n $config_machine $blockfloat $config_blockfloat +/bin/time run $blockfloat $config_blockfloat + +echo -n $config_machine $vainit0 $config_vainit0 +/bin/time run $vainit0 $config_vainit0 +echo -n $config_machine $vainit2 $config_vainit2 +/bin/time run $vainit2 $config_vainit2 +echo -n $config_machine $vainit4 $config_vainit4 +/bin/time run $vainit4 $config_vainit4 +echo -n $config_machine $vainit8 $config_vainit8 +/bin/time run $vainit8 $config_vainit8 + +echo -n $config_machine $vastart0 $config_vastart0 +/bin/time run $vastart0 $config_vastart0 +echo -n $config_machine $vastart2 $config_vastart2 +/bin/time run $vastart2 $config_vastart2 +echo -n $config_machine $vastart4 $config_vastart4 +/bin/time run $vastart4 $config_vastart4 +echo -n $config_machine $vastart8 $config_vastart8 +/bin/time run $vastart8 $config_vastart8 + +echo -n $config_machine $bench_regcall $config_bcall_reg +/bin/time run $bench_regcall $config_bcall_reg +echo -n $config_machine $bench_immcall $config_bcall_imm +/bin/time run $bench_immcall $config_bcall_imm +echo -n $config_machine $bench_add $config_b_add +/bin/time run $bench_add $config_b_add +echo -n $config_machine $bench_load $config_b_load +/bin/time run $bench_load $config_b_load |