gem_wsim: Rip out userspace balancing
Subsystems (2)
PATCH 1/11 gem_wsim: Rip out userspace balancing
From: Tvrtko Ursulin <[email protected]>
Evaluation of userspace load balancing options was how this tool started but since we have settled on doing it in the kernel.
Tomorrow we will want to update the tool for new engine interfaces and all this legacy code will just be a distraction.
Rip out everything not related to explicit load balancing implemented via context engine maps and adjust the workloads to use it.
--- benchmarks/Makefile.am | 2 +- benchmarks/Makefile.sources | 6 - benchmarks/ewma.h | 71 - benchmarks/gem_wsim.c | 1394 +---------------- benchmarks/ilog2.h | 104 -- benchmarks/meson.build | 6 +- benchmarks/wsim/media-1080p-player.wsim | 2 + benchmarks/wsim/media_1n2_480p.wsim | 12 +- benchmarks/wsim/media_1n2_asy.wsim | 8 +- benchmarks/wsim/media_1n3_480p.wsim | 16 +- benchmarks/wsim/media_1n3_asy.wsim | 8 + benchmarks/wsim/media_1n4_480p.wsim | 20 +- benchmarks/wsim/media_1n4_asy.wsim | 10 + benchmarks/wsim/media_1n5_480p.wsim | 24 +- benchmarks/wsim/media_1n5_asy.wsim | 12 + benchmarks/wsim/media_load_balance_17i7.wsim | 10 +- benchmarks/wsim/media_load_balance_19.wsim | 4 +- .../wsim/media_load_balance_4k12u7.wsim | 2 + .../wsim/media_load_balance_fhd26u7.wsim | 16 +- benchmarks/wsim/media_load_balance_hd01.wsim | 34 +- .../wsim/media_load_balance_hd06mp2.wsim | 6 +- benchmarks/wsim/media_load_balance_hd12.wsim | 6 +- .../wsim/media_load_balance_hd17i4.wsim | 8 +- benchmarks/wsim/media_mfe2_480p.wsim | 12 +- benchmarks/wsim/media_mfe3_480p.wsim | 18 +- benchmarks/wsim/media_mfe4_480p.wsim | 24 +- benchmarks/wsim/media_nn_1080p.wsim | 4 + benchmarks/wsim/media_nn_1080p_s1.wsim | 4 +- benchmarks/wsim/media_nn_1080p_s2.wsim | 2 + benchmarks/wsim/media_nn_1080p_s3.wsim | 2 + benchmarks/wsim/media_nn_480p.wsim | 4 + benchmarks/wsim/vcs_balanced.wsim | 52 +- scripts/Makefile.am | 2 +- scripts/media-bench.pl | 736 --------- 34 files changed, 314 insertions(+), 2327 deletions(-) delete mode 100644 benchmarks/ewma.h delete mode 100644 benchmarks/ilog2.h delete mode 100755 scripts/media-bench.pl
benchmarks/Makefile.am +1 -1
@@ -25,4 +25,4 @@ gem_latency_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS) gem_latency_LDADD = $(LDADD) -lpthread gem_syslatency_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS) gem_syslatency_LDADD = $(LDADD) -lpthread -gem_wsim_LDADD = $(LDADD) $(top_builddir)/lib/libigt_perf.la -lpthread +gem_wsim_LDADD = $(LDADD) -lpthread
benchmarks/Makefile.sources +0 -6
@@ -19,12 +19,6 @@ benchmarks_prog_list = \ vgem_mmap \ $(NULL) -gem_wsim_SOURCES = \ - gem_wsim.c \ - ewma.h \ - ilog2.h \ - $(NULL) - LIBDRM_INTEL_BENCHMARKS = \ intel_upload_blit_large \ intel_upload_blit_large_gtt \
benchmarks/ewma.h deleted +0 -71
71 lines not on this page · raw message
benchmarks/gem_wsim.c +78 -1316
1,826 lines not on this page · raw message
benchmarks/ilog2.h deleted +0 -104
104 lines not on this page · raw message
benchmarks/meson.build +1 -5
@@ -11,6 +11,7 @@ benchmark_progs = [ 'gem_prw', 'gem_set_domain', 'gem_syslatency', + 'gem_wsim', 'kms_vblank', 'prime_lookup', 'vgem_mmap',
@@ -34,8 +35,3 @@ foreach prog : benchmark_progs install_dir : benchmarksdir, dependencies : igt_deps) endforeach - -executable('gem_wsim', 'gem_wsim.c', - install : true, - install_dir : benchmarksdir, - dependencies : igt_deps + [ lib_igt_perf ])
benchmarks/wsim/media-1080p-player.wsim +2 -0
@@ -1,3 +1,5 @@ +M.1.VCS +B.1 1.VCS.5000-10000.0.0 2.RCS.1000-2000.-1.0 P.3.1
benchmarks/wsim/media_1n2_480p.wsim +9 -3
@@ -1,9 +1,15 @@ -1.VCS.12000-15000.0.0 +M.10.VCS +B.10 +M.11.VCS +B.11 +M.12.VCS +B.12 +10.VCS.12000-15000.0.0 2.RCS.1000-2200.-1.0 3.RCS.1000-1400.-1.0 3.RCS.10000-12000.0.0 -3.VCS.2500-3500.-1.0 +11.VCS.2500-3500.-1.0 4.RCS.1000-2200.-5.0 5.RCS.1000-1400.-1.0 5.RCS.10000-12000.0.0 -5.VCS.2500-3500.-1.1 +12.VCS.2500-3500.-1.1
benchmarks/wsim/media_1n2_asy.wsim +5 -3
@@ -1,9 +1,11 @@ -1.VCS.12000-15000.0.0 +M.10.VCS +B.10 +10.VCS.12000-15000.0.0 2.RCS.1000-2200.-1.0 3.RCS.1000-1400.-1.0 3.RCS.10000-12000.0.0 -3.VCS.2500-3500.-1.0 +11.VCS.2500-3500.-1.0 4.RCS.400-800.-5.0 5.RCS.500-700.-1.0 5.RCS.5000-6000.0.0 -5.VCS.1200-1500.-1.1 +12.VCS.1200-1500.-1.1
benchmarks/wsim/media_1n3_480p.wsim +12 -4
@@ -1,13 +1,21 @@ -1.VCS.12000-15000.0.0 +M.10.VCS +B.10 +M.11.VCS +B.11 +M.12.VCS +B.12 +M.13.VCS +B.13 +10.VCS.12000-15000.0.0 2.RCS.1000-2200.-1.0 3.RCS.1000-1400.-1.0 3.RCS.10000-12000.0.0 -3.VCS.2500-3500.-1.0 +11.VCS.2500-3500.-1.0 4.RCS.1000-2200.-5.0 5.RCS.1000-1400.-1.0 5.RCS.10000-12000.0.0 -5.VCS.2500-3500.-1.0 +12.VCS.2500-3500.-1.0 6.RCS.1000-2200.-9.0 7.RCS.1000-1400.-1.0 7.RCS.10000-12000.0.0 -7.VCS.2500-3500.-1.1 +13.VCS.2500-3500.-1.1
benchmarks/wsim/media_1n3_asy.wsim +8 -0
@@ -1,3 +1,11 @@ +M.10.VCS +B.10 +M.11.VCS +B.11 +M.12.VCS +B.12 +M.13.VCS +B.13 1.VCS.12000-15000.0.0 2.RCS.1000-2200.-1.0 3.RCS.1000-1400.-1.0
benchmarks/wsim/media_1n4_480p.wsim +15 -5
@@ -1,17 +1,27 @@ -1.VCS.12000-15000.0.0 +M.10.VCS +B.10 +M.11.VCS +B.11 +M.12.VCS +B.12 +M.13.VCS +B.13 +M.14.VCS +B.14 +10.VCS.12000-15000.0.0 2.RCS.1000-2200.-1.0 3.RCS.1000-1400.-1.0 3.RCS.10000-12000.0.0 -3.VCS.2500-3500.-1.0 +11.VCS.2500-3500.-1.0 4.RCS.1000-2200.-5.0 5.RCS.1000-1400.-1.0 5.RCS.10000-12000.0.0 -5.VCS.2500-3500.-1.0 +12.VCS.2500-3500.-1.0 6.RCS.1000-2200.-9.0 7.RCS.1000-1400.-1.0 7.RCS.10000-12000.0.0 -7.VCS.2500-3500.-1.0 +13.VCS.2500-3500.-1.0 8.RCS.1000-2200.-13.0 9.RCS.1000-1400.-1.0 9.RCS.10000-12000.0.0 -9.VCS.2500-3500.-1.1 +14.VCS.2500-3500.-1.1
benchmarks/wsim/media_1n4_asy.wsim +10 -0
@@ -1,3 +1,13 @@ +M.10.VCS +B.10 +M.11.VCS +B.11 +M.12.VCS +B.12 +M.13.VCS +B.13 +M.14.VCS +B.14 1.VCS.12000-15000.0.0 2.RCS.1000-2200.-1.0 3.RCS.1000-1400.-1.0
benchmarks/wsim/media_1n5_480p.wsim +18 -6
@@ -1,21 +1,33 @@ -1.VCS.12000-15000.0.0 +M.10.VCS +B.10 +M.11.VCS +B.11 +M.12.VCS +B.12 +M.13.VCS +B.13 +M.14.VCS +B.14 +M.15.VCS +B.15 +10.VCS.12000-15000.0.0 2.RCS.1000-2200.-1.0 3.RCS.1000-1400.-1.0 3.RCS.10000-12000.0.0 -3.VCS.2500-3500.-1.0 +11.VCS.2500-3500.-1.0 4.RCS.1000-2200.-5.0 5.RCS.1000-1400.-1.0 5.RCS.10000-12000.0.0 -5.VCS.2500-3500.-1.0 +12.VCS.2500-3500.-1.0 6.RCS.1000-2200.-9.0 7.RCS.1000-1400.-1.0 7.RCS.10000-12000.0.0 -7.VCS.2500-3500.-1.0 +13.VCS.2500-3500.-1.0 8.RCS.1000-2200.-13.0 9.RCS.1000-1400.-1.0 9.RCS.10000-12000.0.0 -9.VCS.2500-3500.-1.0 +14.VCS.2500-3500.-1.0 10.RCS.1000-2200.-17.0 11.RCS.1000-1400.-1.0 11.RCS.10000-12000.0.0 -11.VCS.2500-3500.-1.1 +15.VCS.2500-3500.-1.1
benchmarks/wsim/media_1n5_asy.wsim +12 -0
@@ -1,3 +1,15 @@ +M.10.VCS +B.10 +M.11.VCS +B.11 +M.12.VCS +B.12 +M.13.VCS +B.13 +M.14.VCS +B.14 +M.15.VCS +B.15 1.VCS.12000-15000.0.0 2.RCS.2000-3000.-1.0 3.RCS.500-900.-1.0
benchmarks/wsim/media_load_balance_17i7.wsim +6 -4
@@ -1,7 +1,9 @@ +M.1.VCS +B.1 1.VCS.2800-3200.0.1 -1.RCS.900-1100.-1.0 -1.RCS.3600-3800.0.0 -1.RCS.900-1100.-2.0 +2.RCS.900-1100.-1.0 +2.RCS.3600-3800.0.0 +2.RCS.900-1100.-2.0 1.VCS.2200-2400.-2.0 -1.RCS.4500-4900.-1.0 +2.RCS.4500-4900.-1.0 1.VCS.500-700.-1.1
benchmarks/wsim/media_load_balance_19.wsim +3 -1
@@ -1,3 +1,5 @@ +M.1.VCS +B.1 0.VECS.1400-1500.0.0 0.RCS.1000-1500.-1.0 s.-2
@@ -5,6 +7,6 @@ s.-2 1.VCS.1300-1400.0.1 0.VECS.1400-1500.0.0 0.RCS.100-300.-1.1 -1.RCS.1300-1500.0.0 +2.RCS.1300-1500.-3.0 1.VCS.100-300.-1.1 1.VCS.900-1400.0.1
benchmarks/wsim/media_load_balance_4k12u7.wsim +2 -0
@@ -1,3 +1,5 @@ +M.1.VCS +B.1 1.VCS.4000-6000.0.0 2.RCS.400-800.-1.0 3.RCS.1900-2200.-1.0
benchmarks/wsim/media_load_balance_fhd26u7.wsim +9 -7
@@ -1,25 +1,27 @@ +M.3.VCS +B.3 1.VCS1.1200-1800.0.0 1.VCS1.1900-2100.0.0 2.RCS.1500-2000.-1.0 -2.VCS.1400-1800.-1.1 +3.VCS.1400-1800.-1.1 1.VCS1.1900-2100.-1.0 2.RCS.1500-2000.-1.0 -2.VCS.1400-1800.-1.1 +3.VCS.1400-1800.-1.1 1.VCS1.1900-2100.-1.0 2.RCS.200-400.-1.0 2.RCS.1500-2000.0.0 -2.VCS.1400-1800.-1.1 +3.VCS.1400-1800.-1.1 1.VCS1.1900-2100.-1.0 2.RCS.1500-2000.-1.0 -2.VCS.1400-1800.-1.1 +3.VCS.1400-1800.-1.1 1.VCS1.1900-2100.-1.0 2.RCS.200-400.-1.0 2.RCS.1500-2000.0.0 -2.VCS.1400-1800.-1.1 +3.VCS.1400-1800.-1.1 1.VCS1.1900-2100.-1.0 2.RCS.1500-2000.-1.0 -2.VCS.1400-1800.-1.1 +3.VCS.1400-1800.-1.1 1.VCS1.1900-2100.-1.0 2.RCS.1500-2000.-1.0 2.RCS.1500-2000.0.0 -2.VCS.1400-1800.-1.1 +3.VCS.1400-1800.-1.1
benchmarks/wsim/media_load_balance_hd01.wsim +19 -15
@@ -1,23 +1,27 @@ +M.1.VCS +B.1 +M.3.VCS +B.3 1.VCS.1400-1900.0.0 -1.RCS.1200-1600.-1.0 -1.RCS.1000-1400.-1.0 -2.VCS.800-1000.-1.0 +2.RCS.1200-1600.-1.0 +2.RCS.1000-1400.-1.0 +3.VCS.800-1000.-1.0 1.VCS.1400-1900.-4.0 -1.RCS.1200-1600.-1.0 -1.RCS.1000-1400.-1.0 -2.VCS.800-1000.-1.0 +2.RCS.1200-1600.-1.0 +2.RCS.1000-1400.-1.0 +3.VCS.800-1000.-1.0 1.VCS.1400-1900.-4.0 -1.RCS.1200-1600.-1.0 -1.RCS.1000-1400.-1.0 -2.VCS.800-1000.-1.0 +2.RCS.1200-1600.-1.0 +2.RCS.1000-1400.-1.0 +3.VCS.800-1000.-1.0 1.VCS.1400-1900.-4.0 -1.RCS.1200-1600.-1.0 -1.RCS.1000-1400.-1.0 -2.VCS.800-1000.-1.0 +2.RCS.1200-1600.-1.0 +2.RCS.1000-1400.-1.0 +3.VCS.800-1000.-1.0 1.VCS.1400-1900.-4.0 -1.RCS.1200-1600.-1.0 -1.RCS.1000-1400.-1.0 -2.VCS.800-1000.-1.0 +2.RCS.1200-1600.-1.0 +2.RCS.1000-1400.-1.0 +3.VCS.800-1000.-1.0 s.-17 s.-14 s.-11
benchmarks/wsim/media_load_balance_hd06mp2.wsim +5 -1
@@ -1,4 +1,8 @@ +M.1.VCS +B.1 +M.4.VCS +B.4 1.VCS.900-1700.0.0 2.RCS.100-400.-1.0 3.RCS.800-900.-1.0 -3.VCS.100-200.-1.1 +4.VCS.100-200.-1.1
benchmarks/wsim/media_load_balance_hd12.wsim +5 -1
@@ -1,4 +1,8 @@ +M.1.VCS +B.1 +M.4.VCS +B.4 1.VCS.850-1300.0.0 2.RCS.50-250.-1.0 3.RCS.400-800.-1.0 -3.VCS.100-200.-1.1 +4.VCS.100-200.-1.1
benchmarks/wsim/media_load_balance_hd17i4.wsim +6 -2
@@ -1,7 +1,11 @@ +M.1.VCS +B.1 +M.3.VCS +B.3 1.VCS.900-1400.0.0 2.RCS.200-300.-1.0 2.RCS.1000-2000.0.0 2.RCS.1000-2000.0.0 -2.VCS.800-1000.-1.0 -1.RCS.2800-3100.-1.0 +3.VCS.800-1000.-1.0 +4.RCS.2800-3100.-1.0 1.VCS.800-1000.-1.1
benchmarks/wsim/media_mfe2_480p.wsim +10 -2
@@ -1,3 +1,11 @@ +M.1.VCS +B.1 +M.4.VCS +B.4 +M.7.VCS +B.7 +M.8.VCS +B.8 1.VCS.12000-15000.0.0 2.RCS.1000-2200.-1.0 3.RCS.800-1600.-1.0
@@ -5,5 +13,5 @@ 5.RCS.1000-2200.-1.0 6.RCS.800-1600.-1.0 6.RCS.10000-12000.-4.0 -6.VCS.2500-3500.-1.0 -3.VCS.2500-3500.-2.1 +7.VCS.2500-3500.-1.0 +8.VCS.2500-3500.-2.1
benchmarks/wsim/media_mfe3_480p.wsim +15 -3
@@ -1,3 +1,15 @@ +M.1.VCS +B.1 +M.4.VCS +B.4 +M.7.VCS +B.7 +M.10.VCS +B.10 +M.11.VCS +B.11 +M.12.VCS +B.12 1.VCS.12000-15000.0.0 2.RCS.1000-2200.-1.0 3.RCS.800-1600.-1.0
@@ -8,6 +20,6 @@ 8.RCS.1000-2200.-1.0 9.RCS.800-1600.-1.0 9.RCS.10000-12000.-7/-4.0 -9.VCS.2500-3500.-1.0 -3.VCS.2500-3500.-2.0 -6.VCS.2500-3500.-3.1 +10.VCS.2500-3500.-1.0 +11.VCS.2500-3500.-2.0 +12.VCS.2500-3500.-3.1
benchmarks/wsim/media_mfe4_480p.wsim +20 -4
@@ -1,3 +1,19 @@ +M.1.VCS +B.1 +M.4.VCS +B.4 +M.7.VCS +B.7 +M.10.VCS +B.10 +M.13.VCS +B.13 +M.14.VCS +B.14 +M.15.VCS +B.15 +M.16.VCS +B.16 1.VCS.12000-15000.0.0 2.RCS.1000-2200.-1.0 3.RCS.800-1600.-1.0
@@ -11,7 +27,7 @@ 11.RCS.1000-2200.-1.0 12.RCS.800-1600.-1.0 12.RCS.10000-12000.-4/-7/-10.0 -12.VCS.2500-3500.-1.0 -3.VCS.2500-3500.-2.0 -6.VCS.2500-3500.-3.0 -9.VCS.2500-3500.-4.1 +13.VCS.2500-3500.-1.0 +14.VCS.2500-3500.-2.0 +15.VCS.2500-3500.-3.0 +16.VCS.2500-3500.-4.1
benchmarks/wsim/media_nn_1080p.wsim +4 -0
@@ -1,3 +1,7 @@ +M.1.VCS +B.1 +M.3.VCS +B.3 1.VCS.13000-17000.0.0 2.RCS.2000-4000.-1.0 3.RCS.3000-5000.-1.0
benchmarks/wsim/media_nn_1080p_s1.wsim +3 -1
@@ -1,3 +1,5 @@ +M.4.VCS +B.4 f 1.VCS1.6500-8000.f-1.0 1.VCS2.6500-8000.f-2.0
@@ -5,4 +7,4 @@ a.-3 2.RCS.2000-4000.-2/-3.0 3.RCS.3000-5000.-1.0 3.RCS.23000-27000.0.0 -3.VCS.16000-20000.-1.1 +4.VCS.16000-20000.-1.1
benchmarks/wsim/media_nn_1080p_s2.wsim +2 -0
@@ -1,3 +1,5 @@ +M.1.VCS +B.1 1.VCS.13000-17000.0.0 2.RCS.2000-4000.-1.0 3.RCS.3000-5000.-1.0
benchmarks/wsim/media_nn_1080p_s3.wsim +2 -0
@@ -1,3 +1,5 @@ +M.1.VCS +B.1 1.VCS.13000-17000.0.0 2.RCS.2000-4000.-1.0 3.RCS.3000-5000.-1.0
benchmarks/wsim/media_nn_480p.wsim +4 -0
@@ -1,3 +1,7 @@ +M.1.VCS +B.1 +M.3.VCS +B.3 1.VCS.12000-15000.0.0 2.RCS.1000-2200.-1.0 3.RCS.1000-1400.-1.0
benchmarks/wsim/vcs_balanced.wsim +27 -25
53 lines not on this page · raw message
scripts/Makefile.am +1 -1
@@ -1,2 +1,2 @@ -dist_noinst_SCRIPTS = intel-gfx-trybot who.sh run-tests.sh trace.pl media-bench.pl +dist_noinst_SCRIPTS = intel-gfx-trybot who.sh run-tests.sh trace.pl noinst_PYTHON = throttle.py
scripts/media-bench.pl deleted +0 -736
496 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 6 lines
2.20.1 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
Part of the diff is not shown here. View the raw message.
PATCH 2/11 gem_wsim: Buffer objects working sets and complex dependencies
From: Tvrtko Ursulin <[email protected]>
Add support for defining buffer object working sets and targetting them as data dependencies. For more information please see the README file.
v2:
* More robustness in parsing here and there. (Chris)
--- benchmarks/gem_wsim.c | 475 +++++++++++++++++++++--- benchmarks/wsim/README | 59 +++ benchmarks/wsim/cloud-gaming-60fps.wsim | 11 + benchmarks/wsim/composited-ui.wsim | 7 + 4 files changed, 498 insertions(+), 54 deletions(-) create mode 100644 benchmarks/wsim/cloud-gaming-60fps.wsim create mode 100644 benchmarks/wsim/composited-ui.wsim
benchmarks/gem_wsim.c +421 -54
@@ -88,14 +88,21 @@ enum w_typeLOAD_BALANCE ,BOND ,TERMINATE , -SSEU +SSEU , + WORKINGSET, +}; + +struct dep_entry { +int target; +bool write; +int working_set;/* -1 = step dependecy, >= 0 working set id */ };struct deps {int nr;bool submit_fence; -int *list; +struct dep_entry *list; }; struct w_arg {
@@ -110,6 +117,14 @@ struct bond {enum intel_engine_id master; }; +struct working_set { +int id; +bool shared; +unsigned int nr; +uint32_t *handles; +unsigned long *sizes; +}; +struct workload ;struct w_step
@@ -143,6 +158,7 @@ struct w_stepenum intel_engine_id bond_master; };int sseu; +struct working_set working_set; };/* Implementation details */
@@ -193,6 +209,9 @@ struct workloadunsigned int nr_ctxs;struct ctx *ctx_list; +struct working_set **working_sets;/* array indexed by set id */ +int max_working_set_id; +int sync_timeline;uint32_t sync_seqno;
@@ -281,11 +300,129 @@ print_engine_calibrations(void)printf ("\n" ); } +static void add_dep (struct deps *deps,struct dep_entry entry) +{ + deps->list =realloc (deps->list,sizeof (*deps->list) * (deps->nr +1 )); +igt_assert (deps->list); + + deps->list[deps->nr++] = entry; +} + +static int +parse_working_set_deps (struct workload *wrk, +struct deps *deps, +struct dep_entry _entry, +char *str) +{ +/* +* 1 - target handle index in the specified working set. +* 2-4 - range +*/ +struct dep_entry entry = _entry; +char *s; + + s =index (str,'-' ); +if (s) { +int from, to; + + from =atoi (str); +if (from <0 ) +return -1 ; + + to =atoi (++s); +if (to <=0 ) +return -1 ; + +if (to <= from) +return -1 ; + +for (entry.target = from; entry.target <= to; entry.target++) +add_dep (deps, entry); + }else { + entry.target =atoi (str); +if (entry.target <0 ) +return -1 ; + +add_dep (deps, entry); + } + +return 0 ; +} + +static int +parse_dependency (unsigned int nr_steps,struct w_step *w,char *str) +{ +struct dep_entry entry = { .working_set =-1 }; +bool submit_fence = false; +char *s; + +switch (str[0 ]) { +case '-' : +if (str[1 ] <'0' || str[1 ] >'9' ) +return -1 ; + + entry.target =atoi (str); +if (entry.target >0 || ((int )nr_steps + entry.target) <0 ) +return -1 ; + +add_dep (&w->data_deps, entry); + +break ; +case 's' : + submit_fence = true; +/* Fall-through. */ +case 'f' : +/* Multiple fences not yet supported. */ +igt_assert_eq (w->fence_deps.nr,0 ); + + entry.target =atoi (++str); +if (entry.target >0 || ((int )nr_steps + entry.target) <0 ) +return -1 ; + +add_dep (&w->fence_deps, entry); + + w->fence_deps.submit_fence = submit_fence; +break ; +case 'w' : + entry.write = true; +/* Fall-through. */ +case 'r' : +/* +* [rw]N-<str> +* r1-<str> or w2-<str>, where N is working set id. +*/ + s =index (++str,'-' ); +if (!s) +return -1 ; + + entry.working_set =atoi (str); +if (entry.working_set <0 ) +return -1 ; + +if (parse_working_set_deps (w->wrk, &w->data_deps, entry, ++s)) +return -1 ; + +break ; +default : +return -1 ; + }; + +return 0 ; +} +static int parse_dependencies (unsigned int nr_steps,struct w_step *w,char *_desc) {char *desc =strdup (_desc);char *token, *tctx =NULL , *tstart = desc; +int ret =0 ; + +/* +* Skip when no dependencies to avoid having to detect +* non-sensical "0/0/..." below. +*/ +if (!strcmp (_desc,"0" )) + goto out;igt_assert (desc);igt_assert (!w->data_deps.nr && w->data_deps.nr == w->fence_deps.nr);
@@ -293,47 +430,17 @@ parse_dependencies(unsigned int nr_steps, struct w_step *w, char *_desc) w->data_deps.list == w->fence_deps.list);while ((token =strtok_r (tstart,"/" , &tctx)) !=NULL ) { -bool submit_fence = false; -char *str = token; -struct deps *deps; -int dep; - tstart =NULL ; -if (str[0 ] =='-' || (str[0 ] >='0' && str[0 ] <='9' )) { - deps = &w->data_deps; - }else { -if (str[0 ] =='s' ) - submit_fence = true; -else if (str[0 ] !='f' ) -return -1 ; - - deps = &w->fence_deps; - str++; - } - - dep =atoi (str); -if (dep >0 || ((int )nr_steps + dep) <0 ) { -if (deps->list) -free (deps->list); -return -1 ; - } - -if (dep <0 ) { - deps->nr++; -/* Multiple fences not yet supported. */ -igt_assert (deps->nr ==1 || deps != &w->fence_deps); - deps->list =realloc (deps->list, -sizeof (*deps->list) * deps->nr); -igt_assert (deps->list); - deps->list[deps->nr -1 ] = dep; - deps->submit_fence = submit_fence; - } + ret =parse_dependency (nr_steps, w, token); +if (ret) +break ; } +out:free (desc); -return 0 ; +return ret; } static void __attribute__((format(printf, 1, 2)))
@@ -624,6 +731,101 @@ static int parse_engine_map(struct w_step *step, const char *_str)return 0 ; } +static unsigned long parse_size (char *str) +{ +const unsigned int len =strlen (str); +unsigned int mult =1 ; +long val; + +/* "1234567890[gGmMkK]" */ + +if (len ==0 ) +return 0 ; + +switch (str[len -1 ]) { +case 'g' : +case 'G' : + mult *=1024 ; +/* Fall-throuogh. */ +case 'm' : +case 'M' : + mult *=1024 ; +/* Fall-throuogh. */ +case 'k' : +case 'K' : + mult *=1024 ; + + str[len -1 ] =0 ; +/* Fall-throuogh. */ + + case '0' ... '9': +break ; +default : +return 0 ;/* Unrecognized non-digit. */ + } + + val =atol (str); +if (val <=0 ) +return 0 ; + +return val * mult; +} + +static int add_buffers (struct working_set *set,char *str) +{ +/* +* 4096 +* 4k +* 4m +* 4g +* 10n4k - 10 4k batches +*/ +unsigned long *sizes, size; +int add, i; +char *n; + + n =index (str,'n' ); +if (n) { + *n =0 ; + add =atoi (str); +if (add <=0 ) +return -1 ; + str = ++n; + }else { + add =1 ; + } + + size =parse_size (str); +if (!size) +return -1 ; + + sizes =realloc (set->sizes, (set->nr + add) *sizeof (*sizes)); +if (!sizes) +return -1 ; + +for (i =0 ; i < add; i++) + sizes[set->nr + i] = size; + + set->nr += add; + set->sizes = sizes; + +return 0 ; +} + +static int parse_working_set (struct working_set *set,char *str) +{ +char *token, *tctx =NULL , *tstart = str; + +while ((token =strtok_r (tstart,"/" , &tctx))) { + tstart =NULL ; + +if (add_buffers (set, token)) +return -1 ; + } + +return 0 ; +} +static uint64_t engine_list_mask (const char *_str) {uint64_t mask =0 ;
@@ -644,6 +846,8 @@ static uint64_t engine_list_mask(const char *_str)return mask; } +static void allocate_working_set (struct working_set *set); +#define int_field (_STEP_, _FIELD_, _COND_, _ERR_) \ if ((field = strtok_r(fstart, ".", &fctx))) { \ tmp = atoi(field); \
@@ -661,7 +865,7 @@ parse_workload(struct w_arg *arg, unsigned int flags, struct workload *app_w)char *desc =strdup (arg->desc);char *_token, *token, *tctx =NULL , *tstart = desc;char *field, *fctx =NULL , *fstart; -struct w_step step, *steps =NULL ; +struct w_step step, *w, *steps =NULL ;unsigned int valid;int i, j, tmp;
@@ -851,6 +1055,28 @@ parse_workload(struct w_arg *arg, unsigned int flags, struct workload *app_w) step.type =BOND ; goto add_step; + }else if (!strcmp (field,"w" ) || !strcmp (field,"W" )) { +unsigned int nr =0 ; + + step.working_set.shared = field[0 ] =='W' ; + +while ((field =strtok_r (fstart,"." , &fctx))) { + tmp =atoi (field); +if (nr ==0 ) { + step.working_set.id = tmp; + }else { + tmp =parse_working_set (&step.working_set, + field); +check_arg (tmp <0 , +"Invalid working set at step %u!\n" , + nr_steps); + } + + nr++; + } + + step.type =WORKINGSET ; + goto add_step; }if (!field) {
@@ -975,6 +1201,8 @@ add_step: wrk->steps = steps; wrk->prio = arg->prio; wrk->sseu = arg->sseu; + wrk->max_working_set_id =-1 ; + wrk->working_sets =NULL ;free (desc);
@@ -984,7 +1212,7 @@ add_step:*/ for (i =0 ; i < nr_steps; i++) {for (j =0 ; j < steps[i].fence_deps.nr; j++) { - tmp = steps[i].idx + steps[i].fence_deps.list[j]; + tmp = steps[i].idx + steps[i].fence_deps.list[j].target; check_arg(tmp < 0 || tmp >= i || (steps[tmp].type != BATCH && steps[tmp].type != SW_FENCE),
@@ -1003,6 +1231,51 @@ add_step: } } +/* +* Check no duplicate working set ids. +*/ +for (i =0 , w = wrk->steps; i < wrk->nr_steps; i++, w++) { +struct w_step *w2; + +if (w->type !=WORKINGSET ) +continue ; + +for (j =0 , w2 = wrk->steps; j < wrk->nr_steps; w2++, j++) { +if (j == i) +continue ; +if (w2->type !=WORKINGSET ) +continue ; + +check_arg (w->working_set.id == w2->working_set.id, +"Duplicate working set id at %u!\n" , j); + } + } + +/* +* Allocate shared working sets. +*/ +for (i =0 , w = wrk->steps; i < wrk->nr_steps; i++, w++) { +if (w->type ==WORKINGSET && w->working_set.shared) +allocate_working_set (&w->working_set); + } + + wrk->max_working_set_id =-1 ; +for (i =0 , w = wrk->steps; i < wrk->nr_steps; i++, w++) { +if (w->type ==WORKINGSET && + w->working_set.shared && + w->working_set.id > wrk->max_working_set_id) + wrk->max_working_set_id = w->working_set.id; + } + + wrk->working_sets =calloc (wrk->max_working_set_id +1 , +sizeof (*wrk->working_sets)); +igt_assert (wrk->working_sets); + +for (i =0 , w = wrk->steps; i < wrk->nr_steps; i++, w++) { +if (w->type ==WORKINGSET && w->working_set.shared) + wrk->working_sets[w->working_set.id] = &w->working_set; + } +return wrk; }
@@ -1024,6 +1297,18 @@ clone_workload(struct workload *_wrk)memcpy (wrk->steps, _wrk->steps,sizeof (struct w_step ) * wrk->nr_steps); + wrk->max_working_set_id = _wrk->max_working_set_id; +if (wrk->max_working_set_id >=0 ) { + wrk->working_sets =calloc (wrk->max_working_set_id +1 , +sizeof (*wrk->working_sets)); +igt_assert (wrk->working_sets); + +memcpy (wrk->working_sets, + _wrk->working_sets, + (wrk->max_working_set_id +1 ) * +sizeof (*wrk->working_sets)); + } +/* Check if we need a sw sync timeline. */ for (i =0 ; i < wrk->nr_steps; i++) {if (wrk->steps[i].type ==SW_FENCE ) {
@@ -1222,17 +1507,36 @@ alloc_step_batch(struct workload *wrk, struct w_step *w)igt_assert (j < nr_obj);for (i =0 ; i < w->data_deps.nr; i++) { -igt_assert (w->data_deps.list[i] <=0 ); -if (w->data_deps.list[i]) { -int dep_idx = w->idx + w->data_deps.list[i]; +struct dep_entry *entry = &w->data_deps.list[i]; +uint32_t dep_handle; +if (entry->working_set ==-1 ) { +int dep_idx = w->idx + entry->target; + +igt_assert (entry->target <=0 );igt_assert (dep_idx >=0 && dep_idx < w->idx);igt_assert (wrk->steps[dep_idx].type ==BATCH ); - w->obj[j].handle = wrk->steps[dep_idx].obj[0 ].handle; - j++; -igt_assert (j < nr_obj); + dep_handle = wrk->steps[dep_idx].obj[0 ].handle; + }else { +struct working_set *set; + +igt_assert (entry->working_set <= + wrk->max_working_set_id); + + set = wrk->working_sets[entry->working_set]; + +igt_assert (set->nr); +igt_assert (entry->target < set->nr); +igt_assert (set->sizes[entry->target]); + + dep_handle = set->handles[entry->target]; } + + w->obj[j].flags = entry->write ?EXEC_OBJECT_WRITE :0 ; + w->obj[j].handle = dep_handle; + j++; +igt_assert (j < nr_obj); }if (w->unbound_duration)
@@ -1391,10 +1695,22 @@ static size_t sizeof_engines_bond(int count) engines[count]); } +static void allocate_working_set (struct working_set *set) +{ +unsigned int i; + + set->handles =calloc (set->nr,sizeof (*set->handles)); +igt_assert (set->handles); + +for (i =0 ; i < set->nr; i++) + set->handles[i] =gem_create (fd, set->sizes[i]); +} +#define alloca0 (sz) ({ size_t sz__ = (sz); memset(alloca(sz__), 0, sz__); })static int prepare_workload (unsigned int id,struct workload *wrk) { +struct working_set **sets;uint32_t share_vm =0 ;int max_ctx =-1 ;struct w_step *w;
@@ -1629,6 +1945,51 @@ static int prepare_workload(unsigned int id, struct workload *wrk) } } +/* +* Allocate working sets. +*/ +for (i =0 , w = wrk->steps; i < wrk->nr_steps; i++, w++) { +if (w->type ==WORKINGSET && !w->working_set.shared) +allocate_working_set (&w->working_set); + } + +/* +* Map of working set ids. +*/ + wrk->max_working_set_id =-1 ; +for (i =0 , w = wrk->steps; i < wrk->nr_steps; i++, w++) { +if (w->type ==WORKINGSET && + w->working_set.id > wrk->max_working_set_id) + wrk->max_working_set_id = w->working_set.id; + } + + sets = wrk->working_sets; + wrk->working_sets =calloc (wrk->max_working_set_id +1 , +sizeof (*wrk->working_sets)); +igt_assert (wrk->working_sets); + +for (i =0 , w = wrk->steps; i < wrk->nr_steps; i++, w++) { +struct working_set *set; + +if (w->type !=WORKINGSET ) +continue ; + +if (!w->working_set.shared) { + set = &w->working_set; + }else { +igt_assert (sets); + + set = sets[w->working_set.id]; +igt_assert (set->shared); +igt_assert (set->sizes); + } + + wrk->working_sets[w->working_set.id] = set; + } + +if (sets) +free (sets); +/* * Allocate batch buffers. */
@@ -1698,7 +2059,7 @@ do_eb(struct workload *wrk, struct w_step *w, enum intel_engine_id engine) 2 * sizeof(uint32_t));for (i =0 ; i < w->fence_deps.nr; i++) { -int tgt = w->idx + w->fence_deps.list[i]; +int tgt = w->idx + w->fence_deps.list[i].target;/* TODO: fence merging needed to support multiple inputs */ igt_assert (i ==0 );
@@ -1729,14 +2090,18 @@ static void sync_deps(struct workload *wrk, struct w_step *w)unsigned int i;for (i =0 ; i < w->data_deps.nr; i++) { +struct dep_entry *entry = &w->data_deps.list[i];int dep_idx; -igt_assert (w->data_deps.list[i] <=0 ); +if (entry->working_set ==-1 ) +continue ; + +igt_assert (entry->target <=0 ); -if (!w->data_deps.list[i]) +if (!entry->target)continue ; - dep_idx = w->idx + w->data_deps.list[i]; + dep_idx = w->idx + entry->target;igt_assert (dep_idx >=0 && dep_idx < w->idx);igt_assert (wrk->steps[dep_idx].type ==BATCH );
@@ -1836,11 +2201,6 @@ static void *run_workload(void *data)MI_BATCH_BUFFER_END ;__sync_synchronize ();continue ; - }else if (w->type ==PREEMPTION || - w->type ==ENGINE_MAP || - w->type ==LOAD_BALANCE || - w->type ==BOND ) { -continue ; }else if (w->type ==SSEU ) {if (w->sseu != wrk->ctx_list[w->context *2 ].sseu) { wrk->ctx_list[w->context * 2].sseu =
@@ -1848,6 +2208,13 @@ static void *run_workload(void *data) w->sseu); }continue ; + }else if (w->type ==PREEMPTION || + w->type ==ENGINE_MAP || + w->type ==LOAD_BALANCE || + w->type ==BOND || + w->type ==WORKINGSET ) { +/* No action for these at execution time. */ +continue ; }if (do_sleep || w->type ==PERIOD ) {
benchmarks/wsim/README +59 -0
74 lines not on this page · raw message
benchmarks/wsim/cloud-gaming-60fps.wsim new file +11 -0
@@ -0,0 +1,11 @@ +w.1.10n8m +w.2.3n16m +1.RCS.500-1500.r1-0-4/w2-0.0 +1.RCS.500-1500.r1-5-9/w2-1.0 +1.RCS.500-1500.r2-0-1/w2-2.0 +M.2.VCS +B.2 +3.RCS.500-1500.r2-2.0 +2.DEFAULT.2000-4000.-1.0 +4.VCS1.250-750.-1.1 +p.16667
benchmarks/wsim/composited-ui.wsim new file +7 -0
@@ -0,0 +1,7 @@ +w.1.10n8m/3n16m +W.2.16m +1.RCS.200-600.r1-0-4/w1-10.0 +1.RCS.200-600.r1-5-9/w1-11.0 +1.RCS.400-800.r1-10-11/w1-12.0 +3.BCS.200-800.r1-12/w2-0.1 +p.16667
Signature · 6 lines
2.20.1 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
Re: [igt-dev] [PATCH i-g-t 02/11] gem_wsim: Buffer objects working sets and complex dependencies
Quoting Tvrtko Ursulin (2020-06-18 11:47:38)
Quoted 9 lines
From: Tvrtko Ursulin <[email protected]>
Add support for defining buffer object working sets and targetting them as data dependencies. For more information please see the README file.
v2:
* More robustness in parsing here and there. (Chris)Signed-off-by Tvrtko Ursulin <[email protected]>
Is there a tag for "please don't make me read more of the parser"?
-Chris
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH 3/11 gem_wsim: Show workload timing stats
In reply to Tvrtko UrsulinFrom: Tvrtko Ursulin <[email protected]>
Show average/min/max workload iteration and dropped period stats when 'p' command is used.
--- benchmarks/gem_wsim.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-)
benchmarks/gem_wsim.c +15 -4
@@ -2117,7 +2117,8 @@ static void *run_workload(void *data)struct w_step *w;int throttle =-1 ;int qd_throttle =-1 ; -int count; +int count, missed =0 ; +unsigned long time_tot =0 , time_min =ULONG_MAX , time_max =0 ;int i;clock_gettime (CLOCK_MONOTONIC , &t_start);
@@ -2137,12 +2138,19 @@ static void *run_workload(void *data) do_sleep = w->delay; }else if (w->type ==PERIOD ) {struct timespec now; +int elapsed;clock_gettime (CLOCK_MONOTONIC , &now); - do_sleep = w->period - -elapsed_us (&wrk->repeat_start, &now); + elapsed =elapsed_us (&wrk->repeat_start, &now); + do_sleep = w->period - elapsed; + time_tot += elapsed; +if (elapsed < time_min) + time_min = elapsed; +if (elapsed > time_max) + time_max = elapsed;if (do_sleep <0 ) { -if (verbose >1 ) + missed++; +if (verbose >2 )printf ("%u: Dropped period @ %u/%u (%dus late)!\n" , wrk->id, count, i, do_sleep);continue ;
@@ -2296,6 +2304,9 @@ static void *run_workload(void *data)printf ("%c%u: %.3fs elapsed (%d cycles, %.3f workloads/s)." , wrk->background ?' ' :'*' , wrk->id, t, count, count / t); +if (time_tot) +printf (" Time avg/min/max=%lu/%lu/%luus; %u missed." , + time_tot / count, time_min, time_max, missed);putchar ('\n' ); }
Signature · 6 lines
2.20.1 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
Re: [igt-dev] [PATCH i-g-t 03/11] gem_wsim: Show workload timing stats
Quoting Tvrtko Ursulin (2020-06-18 11:47:39)
Quoted 6 lines
From: Tvrtko Ursulin <[email protected]>
Show average/min/max workload iteration and dropped period stats when 'p' command is used.
Signed-off-by Tvrtko Ursulin <[email protected]>
-Chris
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH 4/11 gem_wsim: Move BO allocation to a helper
In reply to Tvrtko UrsulinFrom: Tvrtko Ursulin <[email protected]>
--- benchmarks/gem_wsim.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-)
benchmarks/gem_wsim.c +10 -4
@@ -1490,6 +1490,11 @@ get_ctxid(struct workload *wrk, struct w_step *w)return wrk->ctx_list[w->context].id; } +static uint32_t alloc_bo (int i915,unsigned long size) +{ +return gem_create (i915, size); +} +static void alloc_step_batch (struct workload *wrk,struct w_step *w) {
@@ -1501,7 +1506,7 @@ alloc_step_batch(struct workload *wrk, struct w_step *w) w->obj =calloc (nr_obj,sizeof (*w->obj));igt_assert (w->obj); - w->obj[j].handle =gem_create (fd,4096 ); + w->obj[j].handle =alloc_bo (fd,4096 ); w->obj[j].flags =EXEC_OBJECT_WRITE ; j++;igt_assert (j < nr_obj);
@@ -1546,7 +1551,8 @@ alloc_step_batch(struct workload *wrk, struct w_step *w)else w->bb_sz =get_bb_sz (w, w->duration.max); - w->bb_handle = w->obj[j].handle =gem_create (fd, w->bb_sz + (w->unbound_duration ?4096 :0 )); + w->bb_handle = w->obj[j].handle = +alloc_bo (fd, w->bb_sz + (w->unbound_duration ?4096 :0 ));init_bb (w); w->obj[j].relocation_count =terminate_bb (w);
@@ -1703,7 +1709,7 @@ static void allocate_working_set(struct working_set *set)igt_assert (set->handles);for (i =0 ; i < set->nr; i++) - set->handles[i] =gem_create (fd, set->sizes[i]); + set->handles[i] =alloc_bo (fd, set->sizes[i]); }#define alloca0 (sz) ({ size_t sz__ = (sz); memset(alloca(sz__), 0, sz__); })
@@ -2339,7 +2345,7 @@ static unsigned long calibrate_nop(unsigned int tolerance_pct, struct intel_exec do { struct timespec t_start; - obj.handle = gem_create(fd, size); + obj.handle = alloc_bo(fd, size); gem_write(fd, obj.handle, size - sizeof(bbe), &bbe, sizeof(bbe)); gem_execbuf(fd, &eb);
Signature · 6 lines
2.20.1 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
Re: [igt-dev] [PATCH i-g-t 04/11] gem_wsim: Move BO allocation to a helper
Quoting Tvrtko Ursulin (2020-06-18 11:47:40)
Quoted 3 lines
From: Tvrtko Ursulin <[email protected]>
Signed-off-by Tvrtko Ursulin <[email protected]>
-Chris
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH 5/11 gem_wsim: Support random buffer sizes
In reply to Tvrtko UrsulinFrom: Tvrtko Ursulin <[email protected]>
See README for more details.
v2:
* No need to mess with flags. (Chris)
--- benchmarks/gem_wsim.c | 69 +++++++++++++++++++++++++++++++++--------- benchmarks/wsim/README | 4 +++ 2 files changed, 59 insertions(+), 14 deletions(-)
benchmarks/gem_wsim.c +55 -14
@@ -117,12 +117,18 @@ struct bond {enum intel_engine_id master; }; +struct work_buffer_size { +unsigned long size; +unsigned long min; +unsigned long max; +}; +struct working_set {int id;bool shared;unsigned int nr;uint32_t *handles; -unsigned long *sizes; +struct work_buffer_size *sizes; };struct workload ;
@@ -203,6 +209,7 @@ struct workloadbool print_stats;uint32_t bb_prng; +uint32_t bo_prng;struct timespec repeat_start;
@@ -779,10 +786,12 @@ static int add_buffers(struct working_set *set, char *str)* 4m * 4g * 10n4k - 10 4k batches +* 4096-16k - random size in range */ -unsigned long *sizes, size; +struct work_buffer_size *sizes; +unsigned long min_sz, max_sz; +char *n, *max =NULL ;int add, i; -char *n; n =index (str,'n' );if (n) {
@@ -795,16 +804,34 @@ static int add_buffers(struct working_set *set, char *str) add =1 ; } - size =parse_size (str); -if (!size) + n =index (str,'-' ); +if (n) { + *n =0 ; + max = ++n; + } + + min_sz =parse_size (str); +if (!min_sz)return -1 ; +if (max) { + max_sz =parse_size (max); +if (!max_sz) +return -1 ; + }else { + max_sz = min_sz; + } + sizes =realloc (set->sizes, (set->nr + add) *sizeof (*sizes));if (!sizes)return -1 ; -for (i =0 ; i < add; i++) - sizes[set->nr + i] = size; +for (i =0 ; i < add; i++) { +struct work_buffer_size *sz = &sizes[set->nr + i]; + sz->min = min_sz; + sz->max = max_sz; + sz->size =0 ; + } set->nr += add; set->sizes = sizes;
@@ -846,7 +873,7 @@ static uint64_t engine_list_mask(const char *_str)return mask; } -static void allocate_working_set (struct working_set *set); +static void allocate_working_set (struct workload *wrk,struct working_set *set);#define int_field (_STEP_, _FIELD_, _COND_, _ERR_) \ if ((field = strtok_r(fstart, ".", &fctx))) { \
@@ -1203,6 +1230,7 @@ add_step: wrk->sseu = arg->sseu; wrk->max_working_set_id =-1 ; wrk->working_sets =NULL ; + wrk->bo_prng = (flags &SYNCEDCLIENTS ) ? master_prng :rand ();free (desc);
@@ -1256,7 +1284,7 @@ add_step:*/ for (i =0 , w = wrk->steps; i < wrk->nr_steps; i++, w++) {if (w->type ==WORKINGSET && w->working_set.shared) -allocate_working_set (&w->working_set); +allocate_working_set (wrk, &w->working_set); } wrk->max_working_set_id =-1 ;
@@ -1533,7 +1561,7 @@ alloc_step_batch(struct workload *wrk, struct w_step *w)igt_assert (set->nr);igt_assert (entry->target < set->nr); -igt_assert (set->sizes[entry->target]); +igt_assert (set->sizes[entry->target].size); dep_handle = set->handles[entry->target]; }
@@ -1701,15 +1729,27 @@ static size_t sizeof_engines_bond(int count) engines[count]); } -static void allocate_working_set (struct working_set *set) +static unsigned long +get_buffer_size (struct workload *wrk,const struct work_buffer_size *sz) +{ +if (sz->min == sz->max) +return sz->min; +else +return sz->min +hars_petruska_f54_1_random (&wrk->bo_prng) % + (sz->max +1 - sz->min); +} + +static void allocate_working_set (struct workload *wrk,struct working_set *set) {unsigned int i; set->handles =calloc (set->nr,sizeof (*set->handles));igt_assert (set->handles); -for (i =0 ; i < set->nr; i++) - set->handles[i] =alloc_bo (fd, set->sizes[i]); +for (i =0 ; i < set->nr; i++) { + set->sizes[i].size =get_buffer_size (wrk, &set->sizes[i]); + set->handles[i] =alloc_bo (fd, set->sizes[i].size); + } }#define alloca0 (sz) ({ size_t sz__ = (sz); memset(alloca(sz__), 0, sz__); })
@@ -1724,6 +1764,7 @@ static int prepare_workload(unsigned int id, struct workload *wrk) wrk->id = id; wrk->bb_prng = (wrk->flags &SYNCEDCLIENTS ) ? master_prng :rand (); + wrk->bo_prng = (wrk->flags &SYNCEDCLIENTS ) ? master_prng :rand (); wrk->run = true;/*
@@ -1956,7 +1997,7 @@ static int prepare_workload(unsigned int id, struct workload *wrk)*/ for (i =0 , w = wrk->steps; i < wrk->nr_steps; i++, w++) {if (w->type ==WORKINGSET && !w->working_set.shared) -allocate_working_set (&w->working_set); +allocate_working_set (wrk, &w->working_set); }/*
benchmarks/wsim/README +4 -0
@@ -307,11 +307,15 @@ For size a byte size can be given, or suffix 'k', 'm' or 'g' can be used (case insensitive). Prefix in the format of "<int>n<size>" can also be given to create multiple objects of the same size. +Ranges can also be specified using the <min>-<max> syntax. + Examples: w.1.4k - Working set 1 with a single 4KiB object in it. W.2.2M/32768 - Working set 2 with one 2MiB and one 32768 byte object. w.3.10n4k/2n20000 - Working set 3 with ten 4KiB and two 20000 byte objects. + w.4.4n4k-1m - Working set 4 with four objects of random size between 4KiB and + 1MiB. Working set objects can be referenced as data dependency targets using the new 'r'/'w' syntax. Simple example:
Signature · 6 lines
2.20.1 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
Re: [Intel-gfx] [igt-dev] [PATCH i-g-t 05/11] gem_wsim: Support random buffer sizes
Quoting Tvrtko Ursulin (2020-06-18 11:47:41)
Quoted 8 lines
From: Tvrtko Ursulin <[email protected]>
See README for more details.
v2:
* No need to mess with flags. (Chris)Signed-off-by Tvrtko Ursulin <[email protected]>
-Chris
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 6/11 gem_wsim: Support scaling workload batch durations
In reply to Tvrtko UrsulinFrom: Tvrtko Ursulin <[email protected]>
-f <float> on the command line can be used to scale batch buffer durations in all parsed workloads.
--- benchmarks/gem_wsim.c | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-)
benchmarks/gem_wsim.c +30 -7
@@ -41,6 +41,7 @@#include <assert.h> #include <limits.h> #include <pthread.h> +#include <math.h> #include "intel_chipset.h" #include "intel_reg.h"
@@ -875,6 +876,11 @@ static uint64_t engine_list_mask(const char *_str)static void allocate_working_set (struct workload *wrk,struct working_set *set); +static long __duration (long dur,double scale) +{ +return round (scale * dur); +} +#define int_field (_STEP_, _FIELD_, _COND_, _ERR_) \ if ((field = strtok_r(fstart, ".", &fctx))) { \ tmp = atoi(field); \
@@ -885,7 +891,8 @@ static void allocate_working_set(struct workload *wrk, struct working_set *set); } \static struct workload * -parse_workload (struct w_arg *arg,unsigned int flags,struct workload *app_w) +parse_workload (struct w_arg *arg,unsigned int flags,double scale_dur, +double scale_time,struct workload *app_w) {struct workload *wrk;unsigned int nr_steps =0 ;
@@ -1151,7 +1158,7 @@ parse_workload(struct w_arg *arg, unsigned int flags, struct workload *app_w) tmpl ==LONG_MAX ,"Invalid duration at step %u!\n" , nr_steps); - step.duration.min = tmpl; + step.duration.min =__duration (tmpl, scale_dur);if (sep && *sep =='-' ) { tmpl =strtol (sep +1 ,NULL ,10 );
@@ -1161,7 +1168,8 @@ parse_workload(struct w_arg *arg, unsigned int flags, struct workload *app_w) tmpl ==LONG_MAX ,"Invalid duration range at step %u!\n" , nr_steps); - step.duration.max = tmpl; + step.duration.max =__duration (tmpl, + scale_dur); }else { step.duration.max = step.duration.min; }
@@ -1197,6 +1205,9 @@ parse_workload(struct w_arg *arg, unsigned int flags, struct workload *app_w) step.type =BATCH ; add_step: +if (step.type ==DELAY ) + step.delay =__duration (step.delay, scale_time); + step.idx = nr_steps++; step.request =-1 ; steps =realloc (steps,sizeof (step) * nr_steps);
@@ -2508,7 +2519,9 @@ static void print_help(void)" command line. Subsequent -s switches it off.\n" " -S Synchronize the sequence of random batch durations between\n" " clients.\n" -" -d Sync between data dependencies in userspace." +" -d Sync between data dependencies in userspace.\n" +" -f <scale> Scale factor for batch durations.\n" +" -F <scale> Scale factor for delays." ); }
@@ -2570,6 +2583,8 @@ int main(int argc, char **argv)struct w_arg *w_args =NULL ;unsigned int tolerance_pct =1 ;int exitcode =EXIT_FAILURE ; +double scale_time =1.0f ; +double scale_dur =1.0f ;int prio =0 ;double t;int i, c;
@@ -2590,7 +2605,7 @@ int main(int argc, char **argv) master_prng =time (NULL );while ((c =getopt (argc, argv, -"ThqvsSdc:n:r:w:W:a:t:p:I:" )) !=-1 ) { +"ThqvsSdc:n:r:w:W:a:t:p:I:f:F:" )) !=-1 ) {switch (c) {case 'W' :if (master_workload >=0 ) {
@@ -2701,6 +2716,12 @@ int main(int argc, char **argv)case 'I' : master_prng =strtol (optarg,NULL ,0 );break ; +case 'f' : + scale_dur =atof (optarg); +break ; +case 'F' : + scale_time =atof (optarg); +break ;case 'h' :print_help (); goto out;
@@ -2758,7 +2779,8 @@ int main(int argc, char **argv)if (append_workload_arg) {struct w_arg arg = {NULL , append_workload_arg,0 }; - app_w =parse_workload (&arg, flags,NULL ); + app_w =parse_workload (&arg, flags, scale_dur, scale_time, +NULL );if (!app_w) {wsim_err ("Failed to parse append workload!\n" ); goto err;
@@ -2776,7 +2798,8 @@ int main(int argc, char **argv) goto err; } - wrk[i] =parse_workload (&w_args[i], flags, app_w); + wrk[i] =parse_workload (&w_args[i], flags, scale_dur, + scale_time, app_w);if (!wrk[i]) {wsim_err ("Failed to parse workload %u!\n" , i); goto err;
Signature · 6 lines
2.20.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [igt-dev] [PATCH i-g-t 06/11] gem_wsim: Support scaling workload batch durations
Quoting Tvrtko Ursulin (2020-06-18 11:47:42)
Quoted 6 lines
From: Tvrtko Ursulin <[email protected]>
-f <float> on the command line can be used to scale batch buffer durations in all parsed workloads.
Signed-off-by Tvrtko Ursulin <[email protected]>
-Chris
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH 7/11 gem_wsim: Log max and active working set sizes in verbose mode
In reply to Tvrtko UrsulinFrom: Tvrtko Ursulin <[email protected]>
It is useful to know how much memory workload is allocating.
--- benchmarks/gem_wsim.c | 100 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 95 insertions(+), 5 deletions(-)
benchmarks/gem_wsim.c +95 -5
@@ -874,7 +874,8 @@ static uint64_t engine_list_mask(const char *_str)return mask; } -static void allocate_working_set (struct workload *wrk,struct working_set *set); +static unsigned long +allocate_working_set (struct workload *wrk,struct working_set *set);static long __duration (long dur,double scale) {
@@ -1294,8 +1295,14 @@ add_step:* Allocate shared working sets. */ for (i =0 , w = wrk->steps; i < wrk->nr_steps; i++, w++) { -if (w->type ==WORKINGSET && w->working_set.shared) -allocate_working_set (wrk, &w->working_set); +if (w->type ==WORKINGSET && w->working_set.shared) { +unsigned long total = +allocate_working_set (wrk, &w->working_set); + +if (verbose >1 ) +printf ("%u: %lu bytes in shared working set %u\n" , + wrk->id, total, w->working_set.id); + } } wrk->max_working_set_id =-1 ;
@@ -1750,8 +1757,10 @@ get_buffer_size(struct workload *wrk, const struct work_buffer_size *sz) (sz->max +1 - sz->min); } -static void allocate_working_set (struct workload *wrk,struct working_set *set) +static unsigned long +allocate_working_set (struct workload *wrk,struct working_set *set) { +unsigned long total =0 ;unsigned int i; set->handles =calloc (set->nr,sizeof (*set->handles));
@@ -1760,7 +1769,82 @@ static void allocate_working_set(struct workload *wrk, struct working_set *set)for (i =0 ; i < set->nr; i++) { set->sizes[i].size =get_buffer_size (wrk, &set->sizes[i]); set->handles[i] =alloc_bo (fd, set->sizes[i].size); + total += set->sizes[i].size; + } + +return total; +} + +static bool +find_dep (struct dep_entry *deps,unsigned int nr,struct dep_entry dep) +{ +unsigned int i; + +for (i =0 ; i < nr; i++) { +if (deps[i].working_set == dep.working_set && + deps[i].target == dep.target) +return true; } + +return false; +} + +static void measure_active_set (struct workload *wrk) +{ +unsigned long total =0 , batch_sizes =0 ; +struct dep_entry *deps =NULL ; +unsigned int nr =0 , i, j; +struct w_step *w; + +if (verbose <3 ) +return ; + +for (i =0 , w = wrk->steps; i < wrk->nr_steps; i++, w++) { +if (w->type !=BATCH ) +continue ; + + batch_sizes += w->bb_sz; + +for (j =0 ; j < w->data_deps.nr; j++) { +struct dep_entry *dep = &w->data_deps.list[j]; +struct dep_entry _dep = *dep; + +if (dep->working_set ==-1 && dep->target <0 ) { +int idx = w->idx + dep->target; + +igt_assert (idx >=0 && idx < w->idx); +igt_assert (wrk->steps[idx].type ==BATCH ); + + _dep.target = wrk->steps[idx].obj[0 ].handle; + } + +if (!find_dep (deps, nr, _dep)) { +if (dep->working_set ==-1 ) { + total +=4096 ; + }else { +struct working_set *set; + +igt_assert (dep->working_set <= + wrk->max_working_set_id); + + set = wrk->working_sets[dep->working_set]; +igt_assert (set->nr); +igt_assert (dep->target < set->nr); +igt_assert (set->sizes[dep->target].size); + + total += set->sizes[dep->target].size; + } + + deps =realloc (deps, (nr +1 ) *sizeof (*deps)); + deps[nr++] = *dep; + } + } + } + +free (deps); + +printf ("%u: %lu bytes active working set in %u buffers. %lu in batch buffers.\n" , + wrk->id, total, nr, batch_sizes); }#define alloca0 (sz) ({ size_t sz__ = (sz); memset(alloca(sz__), 0, sz__); })
@@ -1768,6 +1852,7 @@ static void allocate_working_set(struct workload *wrk, struct working_set *set)static int prepare_workload (unsigned int id,struct workload *wrk) {struct working_set **sets; +unsigned long total =0 ;uint32_t share_vm =0 ;int max_ctx =-1 ;struct w_step *w;
@@ -2008,9 +2093,12 @@ static int prepare_workload(unsigned int id, struct workload *wrk)*/ for (i =0 , w = wrk->steps; i < wrk->nr_steps; i++, w++) {if (w->type ==WORKINGSET && !w->working_set.shared) -allocate_working_set (wrk, &w->working_set); + total +=allocate_working_set (wrk, &w->working_set); } +if (verbose >2 ) +printf ("%u: %lu bytes in working sets.\n" , wrk->id, total); +/* * Map of working set ids. */
@@ -2058,6 +2146,8 @@ static int prepare_workload(unsigned int id, struct workload *wrk)alloc_step_batch (wrk, w); } +measure_active_set (wrk); +return 0 ; }
Signature · 6 lines
2.20.1 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH 8/11 gem_wsim: Snippet of a workload extracted from carchase
In reply to Tvrtko UrsulinFrom: Tvrtko Ursulin <[email protected]>
Some frames from the middle of a demo with corresponding buffers.
--- benchmarks/wsim/carchasepart.wsim | 184 ++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 benchmarks/wsim/carchasepart.wsim
benchmarks/wsim/carchasepart.wsim new file +45 -0
@@ -0,0 +1,184 @@ +w.0.118n8192 +w.1.69n12288 +w.10.145n131072 +w.11.1n163840 +w.12.3n196608 +w.13.2n229376 +w.14.2n262144 +w.15.7n327680 +w.16.2n393216 +w.17.9n458752 +w.18.30n524288 +w.19.1n655360 +w.2.74n16384 +w.20.2n917504 +w.21.1n1048576 +w.22.33n1310720 +w.23.1n1572864 +w.24.24n1835008 +w.25.117n2097152 +w.26.1n2621440 +w.27.2n3670016 +w.28.4n4194304 +w.29.3n6291456 +w.3.123n20480 +w.30.1n7340032 +w.31.1n8388608 +w.32.20n10485760 +w.33.4n12582912 +w.34.3n14680064 +w.35.1n25165824 +w.4.19n24576 +w.5.2n32768 +w.6.2n40960 +w.7.4n49152 +w.8.2n65536 +w.9.9n81920 +1.RCS.5736.r0-58/r3-80/r22-31/r3-41/r3-42/r9-4/w27-1/r3-18/r22-1/r9-5/r0-32/r3-6/r32-8/r3-78/r3-113/r0-107/w28-0/r3-98/r3-91/w28-1/r3-93/w32-14/r32-0/r33-2/w32-16.0 +2.RCS.1000.r9-4/r3-41/r3-42/r32-16/r3-93/w4-16/r0-3/w3-122/r3-91/r0-58.0 +2.RCS.5950.r9-4/r33-2/r3-6/r22-31/r3-42/w0-103/w0-106/r3-41/r2-54.0 +1.RCS.14562.r0-58/r3-80/r22-31/r3-41/r3-42/r9-4/w32-18/r3-18/r22-1/r9-5/r3-98/r32-14/r3-93/r33-2/r3-6/r32-16/r3-122/r3-106/r3-78/r2-54/r0-107/w32-7/w32-11/w32-2/r33-0/r25-116/r0-106/r16-0/r28-3/r0-3/r0-111/r22-32/r10-58/r4-13/r4-3/r4-1.0 +1.RCS.6494.r3-80/r22-31/r3-41/r3-42/r9-4/w9-5/r0-71/r0-58/w32-19/r3-18/r22-1/r3-78/r3-88/r22-5/r22-14/r22-6/r22-29/r22-7/r22-12/r22-18/r22-28/r22-3/r22-0/r3-75/r3-104/w3-64/r0-60/r22-20/r25-99/r22-16/r21-0/r22-21/r0-97/r22-27/r0-98/r22-4/r0-84/r3-47/w28-2/r0-107/w8-0/r0-48.0 +d.36394 +2.RCS.2207.r9-4/r28-2/r3-42/r22-31/w8-0/r2-47/r20-0/w22-23/r3-47/r3-95/r0-58/w22-10/r3-80.0 +d.17275 +1.RCS.1000.r3-47/w27-0/r0-58/r3-80/r22-31/r3-42/r9-4/w34-0/r3-18/r3-41/r21-0/r9-5/r3-78/r25-4/r3-104/r3-23/r30-0/r3-88/r22-27/r22-1/r25-45/r3-50/r22-12/r22-22/r22-3/r22-0/r25-56/r3-4/r22-15/r25-113/r3-7/r22-18/r25-60/r3-81/r25-21/r3-89/r18-5/r3-93/r17-8/r25-28/r25-87/r25-9/r25-13/r25-42/r25-90/r22-16/r34-2/r3-15/w3-64/r0-67/r25-99/r25-73/r3-6/r25-40/r3-90/r22-20/r0-45/r3-110/w32-17/w32-16/w32-3/w32-1/w33-2/r28-2/r3-98/r3-85/r25-48/r3-12/r25-104/r24-23/r3-87/r3-108/r3-26/r3-96/r22-5/r22-14/r3-49/r3-103/r22-6/r3-68/r3-112/r22-29/r22-28/r25-14/r25-44/r25-19/r3-67/r25-111/r18-4/r3-66/r18-17/r4-5/r25-68/r25-86/r25-26/r25-67/r3-37/r25-0/r22-7/r25-59/r25-71/r25-101/r25-75/r25-20/r25-91/r3-2/r3-117/r3-33/r22-2/r25-55/r25-66/r25-24/r25-105/r25-61/r25-11/r25-51/r25-64/r25-70/r18-19/r18-26/r18-21/r25-81/r25-78/r25-37/r25-50/r25-102/r25-35/r18-18/r18-13/r18-12/r3-69/r3-19/r3-100/r22-21/r25-22/r3-29/r25-93/r18-2/r18-14/r18-3/r22-10/r18-23/r18-7/r18-11/r3-73/r8-0/r25-92/r25-41/w33-3/r0-107/w19-0.
0
+d.2101
+1.RCS.32763.r9-4/r3-18/r3-47/r22-3/r22-31/w19-0/r3-98/r33-3/r3-6/r32-3/r3-78/r3-80/r3-73/r0-107/r0-58/r3-110/w31-0/w33-2/r32-19/r3-114/w32-4/w29-1/w32-8/r9-5/r32-17/r32-1/r30-0/r3-104/r35-0/r34-1/r34-0/r3-92/r34-2/r22-12/r22-1/w32-0/r3-75/r3-118/r3-70/r3-1/r3-113/r22-29/r22-14/r3-109/r3-28/r3-79/r22-7/r3-8/r4-5/r3-85/r3-115/r3-55/r3-13/r3-59/r22-2.0
+d.1788
+2.RCS.33594.r9-4/r0-26/r3-110/w7-2/r3-47/r0-109/r0-75/w6-1/r0-29/w7-0/r0-68/w7-1/r0-58/r32-8/r3-6/r22-31/w0-2/r3-113/r9-5/w0-32.0
+1.RCS.5573.r0-58/r3-80/r22-31/r3-47/r3-110/r9-4/w27-1/r3-18/r22-1/r9-5/r0-32/r3-6/r32-8/r3-78/r3-113/r0-107/w28-0/r3-98/r3-91/w28-1/r3-93/r3-60/w32-14/r32-0/r33-2/w32-16.0
+2.RCS.1000.r9-4/r3-60/r3-110/r32-16/r3-93/w4-16/r0-3/w3-122/r3-91/r0-58.0
+2.RCS.5826.r9-4/r33-2/r3-6/r22-31/r3-110/w0-103/w0-22/r3-60/r2-54.0
+1.RCS.14378.r0-58/r3-80/r22-31/r3-60/r3-110/r9-4/w32-18/r3-18/r3-47/r22-1/r9-5/r3-98/r32-14/r3-93/r33-2/r3-6/r32-16/r3-122/r3-106/r3-78/r2-54/r0-107/w32-7/w32-11/w32-2/r33-0/r25-116/r0-22/r16-0/r28-3/r0-3/r0-111/r22-32/r10-58/r4-13/r4-3/r4-1.0
+1.RCS.6218.r3-80/r22-31/r3-60/r3-110/r9-4/w9-5/r0-53/r0-58/w32-19/r3-18/r3-47/r22-1/r3-78/r3-88/r22-5/r22-14/r22-6/r22-29/r22-7/r22-12/r22-18/r22-28/r22-3/r22-0/r3-75/r3-104/w3-64/r0-115/r22-20/r25-99/r22-16/r21-0/r22-21/r0-35/r22-27/r0-19/r22-4/r0-92/w28-2/r0-107/r3-0/w8-0/r0-76.0
+d.36049
+2.RCS.2085.r9-4/r28-2/r3-0/r22-31/w8-0/r2-9/r20-0/w22-23/r3-60/r3-95/r0-58/w22-10/r3-80.0
+d.12310 +1.RCS.1000.r3-60/w27-0/r0-58/r3-80/r22-31/r3-0/r9-4/w34-0/r3-18/r3-47/r21-0/r9-5/r3-78/r25-4/r3-104/r3-23/r30-0/r3-88/r22-27/r22-1/r25-45/r3-50/r22-12/r22-22/r22-3/r22-0/r25-56/r3-4/r22-15/r25-113/r3-7/r22-18/r25-60/r3-81/r25-21/r3-89/r18-5/r3-93/r17-8/r25-28/r25-87/r25-9/r25-13/r25-42/r25-90/r22-16/r34-2/r3-15/w3-64/r0-88/r25-99/r25-73/r3-6/r25-40/r3-90/r22-20/r0-71/w32-17/w32-16/w32-3/w32-1/w33-2/r28-2/r3-98/r3-85/r25-48/r3-12/r25-104/r24-23/r3-87/r3-108/r3-26/r3-96/r22-5/r22-14/r3-49/r3-103/r22-6/r3-68/r3-112/r22-29/r22-28/r25-14/r25-44/r25-19/r3-67/r25-111/r18-4/r3-66/r18-17/r4-5/r25-68/r25-86/r25-26/r25-67/r3-37/r25-0/r22-7/r25-59/r25-71/r25-101/r25-75/r25-20/r25-91/r3-2/r3-117/r3-33/r22-2/r25-55/r25-66/r25-24/r25-105/r25-61/r25-11/r25-51/r25-64/r25-70/r18-19/r18-26/r18-21/r25-81/r25-78/r25-37/r25-50/r25-102/r25-35/r18-18/r18-13/r18-12/r3-69/r3-19/r3-100/r22-21/r25-22/r3-29/r25-93/r18-2/r18-14/r18-3/r22-10/r18-23/r18-7/r18-11/r3-73/r8-0/r25-92/r25-41/w33-3/r0-107/w19-0.0 +d.3238
+1.RCS.32454.r9-4/r3-18/r3-60/r22-3/r22-31/w19-0/r3-98/r33-3/r3-6/r32-3/r3-78/r3-80/r3-73/r0-107/r0-58/r3-0/w31-0/w33-2/r32-19/r3-114/w32-4/w29-1/r3-74/w32-8/r9-5/r32-17/r32-1/r30-0/r3-104/r35-0/r34-1/r34-0/r3-92/r34-2/r22-12/r22-1/w32-0/r3-75/r3-118/r3-70/r3-1/r3-113/r22-29/r22-14/r3-109/r3-28/r3-79/r22-7/r3-8/r4-5/r3-85/r3-115/r3-55/r3-13/r3-59/r22-2.0
+d.3160
+2.RCS.33268.r9-4/r0-60/r3-0/w7-2/r3-60/r0-109/r3-74/r0-97/w6-1/r0-98/w7-0/r0-84/w7-1/r0-58/r32-8/r3-6/r22-31/w0-2/r3-113/r9-5/w0-32.0
+1.RCS.5675.r0-58/r3-80/r22-31/r3-74/r3-0/r9-4/w27-1/r3-18/r3-60/r22-1/r9-5/r0-32/r3-6/r32-8/r3-78/r3-113/r0-107/w28-0/r3-98/r3-91/w28-1/r3-93/w32-14/r32-0/r33-2/w32-16.0
+d.1148
+2.RCS.1000.r9-4/r3-74/r3-0/r32-16/r3-93/w4-16/r0-3/w3-122/r3-91/r0-58.0
+2.RCS.5911.r9-4/r33-2/r3-6/r22-31/r3-0/w0-103/w0-48/r3-74/r2-54.0
+1.RCS.13981.r0-58/r3-80/r22-31/r3-74/r3-0/r9-4/w32-18/r3-18/r3-60/r22-1/r9-5/r3-98/r32-14/r3-93/r33-2/r3-6/r32-16/r3-122/r3-106/r3-78/r2-54/r0-107/w32-7/w32-11/w32-2/r33-0/r25-116/r0-48/r16-0/r28-3/r0-3/r0-111/r22-32/r10-58/r4-13/r4-3/r4-1.0
+1.RCS.6208.r3-80/r22-31/r3-74/r3-0/r9-4/w9-5/r0-67/r0-58/w32-19/r3-18/r3-60/r22-1/r3-78/r3-88/r22-5/r22-14/r22-6/r22-29/r22-7/r22-12/r22-18/r22-28/r22-3/r22-0/r3-75/r3-104/w3-64/r0-45/r22-20/r25-99/r22-16/r21-0/r0-64/r3-42/r22-21/r22-27/r0-42/r22-4/r0-52/w28-2/r0-107/w8-0/r0-87.0
+d.41148
+2.RCS.2070.r9-4/r28-2/r3-42/r22-31/w8-0/r2-47/r20-0/w22-23/r3-74/r3-95/r0-58/w22-10/r3-80.0
+d.18190 +1.RCS.1000.r3-74/w27-0/r0-58/r3-80/r22-31/r3-42/r9-4/w34-0/r3-18/r3-60/r21-0/r9-5/r3-78/r25-4/r3-104/r3-23/r30-0/r3-88/r22-27/r22-1/r25-45/r3-50/r22-12/r22-22/r22-3/r22-0/r25-56/r3-4/r22-15/r25-113/r3-7/r22-18/r25-60/r3-81/r25-21/r3-89/r18-5/r3-93/r17-8/r25-28/r25-87/r25-9/r25-13/r25-42/r25-90/r22-16/r34-2/r3-15/w3-64/r0-106/r25-99/r25-73/r3-6/r25-40/r3-90/r22-20/r0-53/r3-31/w32-17/w32-16/w32-3/w32-1/w33-2/r28-2/r3-98/r3-85/r25-48/r3-12/r25-104/r24-23/r3-49/r3-103/r3-96/r22-6/r22-14/r3-87/r3-108/r3-26/r22-5/r22-29/r3-68/r3-112/r22-28/r25-14/r25-44/r25-19/r3-67/r25-111/r18-4/r3-66/r18-17/r4-5/r25-68/r25-86/r25-26/r25-67/r3-37/r25-0/r25-59/r25-71/r25-101/r25-75/r25-20/r25-91/r22-7/r3-2/r3-117/r3-33/r22-2/r25-55/r25-66/r25-24/r25-105/r25-61/r25-11/r25-51/r25-64/r25-70/r25-81/r25-78/r25-37/r25-50/r25-102/r25-35/r18-18/r18-13/r18-12/r3-69/r3-19/r3-100/r18-19/r18-26/r18-21/r22-21/r25-22/r3-29/r25-93/r22-10/r18-23/r18-7/r18-11/r3-73/r8-0/r25-92/r25-41/w33-3/r0-107/w19-0.0 +d.1071
+1.RCS.31421.r0-58/r3-80/r22-31/r3-31/r3-42/r9-4/w31-0/r3-18/r22-3/r3-98/r19-0/r3-6/w33-2/r32-19/r3-114/r0-107/w32-4/r3-78/w29-1/w32-8/r9-5/r32-17/r32-3/r32-1/r30-0/r3-104/r35-0/r34-1/r34-0/r3-92/r34-2/r22-12/r22-1/w32-0/r3-75/r3-118/r3-70/r3-1/r3-113/r22-29/r22-14/r3-109/r3-28/r3-79/r22-7/r3-8/r4-5/r3-85/r3-115/r3-55/r3-13/r3-59/r22-2.0
+d.1795
+2.RCS.32222.r9-4/r0-115/r3-42/w7-2/r3-74/r0-109/r3-31/r0-35/w6-1/r0-19/w7-0/r0-92/w7-1/r0-58/r32-8/r3-6/r22-31/w0-2/r3-113/r9-5/w0-32.0
+1.RCS.5663.r0-58/r3-80/r22-31/r3-31/r3-42/r9-4/w27-1/r3-18/r22-1/r9-5/r0-32/r3-6/r32-8/r3-78/r3-113/r0-107/w28-0/r3-98/r3-91/w28-1/r3-93/r3-110/w32-14/r32-0/r33-2/w32-16.0
+2.RCS.1000.r9-4/r3-31/r3-110/r32-16/r3-93/w4-16/r0-3/w3-122/r3-91/r0-58.0
+2.RCS.5878.r9-4/r33-2/r3-6/r22-31/r3-110/w0-103/w0-76/r3-31/r2-54.0
+1.RCS.14059.r0-58/r3-80/r22-31/r3-31/r3-110/r9-4/w32-18/r3-18/r22-1/r9-5/r3-98/r32-14/r3-93/r33-2/r3-6/r32-16/r3-122/r3-106/r3-78/r2-54/r0-107/w32-7/w32-11/w32-2/r33-0/r25-116/r0-76/r16-0/r28-3/r0-3/r0-111/r22-32/r10-58/r4-13/r4-3/r4-1.0
+1.RCS.6168.r3-80/r22-31/r3-31/r3-110/r9-4/w9-5/r0-88/r0-58/w32-19/r3-18/r22-1/r3-78/r3-88/r22-5/r22-14/r22-6/r22-29/r22-7/r22-12/r22-18/r22-28/r22-3/r22-0/r3-75/r3-104/w3-64/r0-71/r22-20/r25-99/r22-16/r21-0/r0-26/r22-21/r0-75/r3-20/r22-4/r22-27/r0-29/w28-2/r0-107/w8-0/r0-68.0
+d.32708
+2.RCS.2145.r9-4/r28-2/r3-110/r22-31/w8-0/r2-9/r20-0/w22-23/r3-20/r3-95/r0-58/w22-10/r3-80.0
+d.11843 +1.RCS.1000.r3-20/w27-0/r0-58/r3-80/r22-31/r3-110/r9-4/w34-0/r3-18/r3-31/r21-0/r9-5/r3-78/r25-4/r3-104/r3-23/r30-0/r3-88/r22-27/r22-1/r25-45/r3-50/r22-12/r22-22/r22-3/r22-0/r25-56/r3-4/r22-15/r25-113/r3-7/r22-18/r25-60/r3-81/r25-21/r3-89/r18-5/r3-93/r17-8/r25-28/r25-87/r25-9/r25-13/r25-42/r25-90/r22-16/r34-2/r3-15/w3-64/r0-22/r25-99/r25-73/r3-6/r25-40/r3-90/r22-20/r0-67/w32-17/w32-16/w32-3/w32-1/w33-2/r28-2/r3-98/r3-85/r25-48/r3-12/r25-104/r3-87/r3-108/r3-26/r3-96/r22-5/r22-14/r22-29/r3-68/r3-112/r3-103/r3-49/r22-6/r22-28/r25-14/r25-44/r25-19/r3-67/r25-111/r18-4/r3-66/r18-17/r4-5/r25-68/r25-86/r25-26/r25-59/r25-71/r25-101/r25-67/r3-37/r25-0/r22-7/r25-75/r25-20/r25-91/r3-2/r3-117/r3-33/r22-2/r25-55/r25-66/r25-24/r25-105/r25-61/r25-11/r25-51/r25-64/r25-70/r18-19/r18-26/r18-21/r25-81/r25-78/r25-37/r25-50/r25-102/r25-35/r9-2/r18-18/r18-13/r18-12/r3-69/r3-19/r3-100/r22-21/r25-82/r25-77/r25-33/r25-22/r3-29/r25-93/r22-10/r18-23/r18-7/r18-11/r3-73/r8-0/r25-92/r25-41/w33-3/r0-107/w19-0.0 +d.3354
+1.RCS.31662.r0-58/r3-80/r22-31/r3-20/r3-110/r9-2/w31-0/r3-18/r22-3/r3-98/r19-0/r3-6/w33-2/r32-19/r3-114/r0-107/w32-4/r3-78/w29-1/w32-8/r9-5/r32-17/r32-3/r32-1/r30-0/r3-104/r35-0/r34-1/r34-0/r3-92/r34-2/r22-12/r22-1/w32-0/r3-75/r3-118/r3-70/r3-1/r3-113/r22-29/r22-14/r3-109/r3-28/r3-79/r22-7/r3-8/r4-5/r3-85/r3-115/r3-55/r3-13/r3-59/r22-2.0
+d.2763
+2.RCS.32465.r0-58/r9-2/r0-45/r3-110/w7-2/r3-20/r0-109/r0-64/w6-1/r0-42/w7-0/r0-52/w7-1/r32-8/r3-6/r22-31/w0-2/r3-113/r9-5/w0-32.0
+1.RCS.5493.r0-58/r3-80/r22-31/r3-20/r3-110/r9-2/w27-1/r3-18/r22-1/r9-5/r0-32/r3-6/r32-8/r3-78/r3-113/r0-107/w28-0/r3-98/r3-91/r3-0/w28-1/r3-93/r3-41/w32-14/r32-0/r33-2/w32-16.0
+2.RCS.1000.r9-2/r3-41/r3-0/r32-16/r3-93/w4-16/r0-3/w3-122/r3-91/r0-58.0
+2.RCS.5680.r9-2/r33-2/r3-6/r22-31/r3-0/w0-103/w0-87/r3-41/r2-54.0
+1.RCS.13742.r0-58/r3-80/r22-31/r3-41/r3-0/r9-2/w32-18/r3-18/r3-20/r22-1/r9-5/r3-98/r32-14/r3-93/r33-2/r3-6/r32-16/r3-122/r3-106/r3-78/r2-54/r0-107/w32-7/w32-11/w32-2/r33-0/r25-116/r0-87/r16-0/r28-3/r0-3/r0-111/r22-32/r10-58/r4-13/r4-3/r4-1.0
+1.RCS.5993.r3-80/r22-31/r3-41/r3-0/r9-2/w9-5/r0-106/r0-58/w32-19/r3-18/r3-20/r22-1/r3-78/r3-88/r22-5/r22-14/r22-6/r22-29/r22-7/r22-12/r22-18/r22-28/r22-3/r22-0/r3-75/r3-104/w3-64/r0-53/r22-20/r25-99/r22-16/r21-0/r0-60/r22-21/r0-97/r22-27/r0-98/r22-4/w28-2/r0-107/w8-0/r0-84.0
+d.37477
+2.RCS.1875.r9-2/r28-2/r3-0/r22-31/w8-0/r2-47/r20-0/w22-23/r3-41/r3-95/r0-58/w22-10/r3-80.0
+d.12907 +1.RCS.1000.r3-41/w27-0/r0-58/r3-80/r22-31/r3-0/r9-2/w34-0/r3-18/r3-20/r21-0/r9-5/r3-78/r25-4/r3-104/r3-23/r30-0/r3-88/r22-27/r22-1/r25-45/r3-50/r22-12/r22-22/r22-3/r22-0/r25-56/r3-4/r22-15/r25-113/r3-7/r22-18/r25-60/r3-81/r25-21/r3-89/r18-5/r3-93/r17-8/r25-28/r25-87/r25-9/r25-13/r25-42/r25-90/r22-16/r34-2/r3-15/w3-64/r0-48/r25-99/r25-73/r3-6/r25-40/r3-90/r22-20/r0-88/w32-17/w32-16/w32-3/w32-1/w33-2/r28-2/r3-98/r3-87/r3-108/r3-26/r3-96/r22-5/r22-14/r22-29/r3-68/r3-112/r3-103/r3-49/r3-12/r22-6/r3-85/r25-104/r22-28/r25-14/r25-44/r25-19/r3-67/r25-111/r18-4/r3-66/r18-17/r4-5/r25-68/r25-86/r25-26/r25-59/r25-71/r25-101/r25-67/r3-37/r25-0/r25-75/r25-20/r25-91/r22-7/r3-2/r3-117/r3-33/r22-2/r25-55/r25-66/r25-24/r25-105/r25-61/r25-11/r25-51/r25-64/r25-70/r25-81/r25-78/r25-37/r25-50/r25-102/r25-35/r18-18/r18-13/r18-12/r3-69/r3-19/r3-100/r18-19/r18-26/r18-21/r22-21/r25-82/r25-77/r25-33/r25-22/r3-29/r25-93/r22-10/r25-110/r25-62/r25-72/r22-9/r8-0/r18-23/r18-7/r18-11/r3-73/r25-92/r25-41/w33-3/r0-10
7/w19-0/w31-0.0
+d.3000
+1.RCS.33546.r9-2/r3-18/r3-41/r22-3/r22-31/w31-0/r3-98/r19-0/r3-6/w33-2/r32-19/r3-0/r3-80/r3-114/r0-107/r0-58/w32-4/r3-47/r3-78/r3-42/w29-1/w32-8/r9-5/r32-17/r32-3/r32-1/r30-0/r3-104/r35-0/r34-1/r34-0/r3-92/r34-2/r22-12/r22-1/w32-0/r3-75/r3-118/r3-70/r3-1/r3-113/r22-29/r22-14/r3-109/r3-28/r3-79/r22-7/r3-8/r4-5/r3-85/r3-115/r3-55/r3-13/r3-59/r22-2.0
+d.3250
+2.RCS.34417.r9-2/r0-71/r3-42/w7-2/r3-41/r0-109/r3-47/r0-26/w6-1/r0-75/w7-0/r0-29/w7-1/r0-58/r32-8/r3-6/r22-31/w0-2/r3-113/r9-5/w0-32.0
+1.RCS.5575.r0-58/r3-80/r22-31/r3-47/r3-42/r9-2/w27-1/r3-18/r3-41/r22-1/r9-5/r0-32/r3-6/r32-8/r3-78/r3-113/r0-107/w28-0/r3-98/r3-91/w28-1/r3-93/w32-14/r32-0/r33-2/w32-16.0
+2.RCS.1000.r9-2/r3-47/r3-42/r32-16/r3-93/w4-16/r0-3/w3-122/r3-91/r0-58.0
+2.RCS.5743.r9-2/r33-2/r3-6/r22-31/r3-42/w0-103/w0-68/r3-47/r2-54.0
+1.RCS.13966.r0-58/r3-80/r22-31/r3-47/r3-42/r9-2/w32-18/r3-18/r3-41/r22-1/r9-5/r3-98/r32-14/r3-93/r33-2/r3-6/r32-16/r3-122/r3-106/r3-78/r2-54/r0-107/w32-7/w32-11/w32-2/r33-0/r25-116/r0-68/r16-0/r28-3/r0-3/r0-111/r22-32/r10-58/r4-13/r4-3/r4-1.0
+1.RCS.6056.r3-80/r22-31/r3-47/r3-42/r9-2/w9-5/r0-22/r0-58/w32-19/r3-18/r3-41/r22-1/r3-78/r3-88/r22-5/r22-14/r22-6/r22-29/r22-7/r22-12/r22-18/r22-28/r22-3/r22-0/r3-75/r3-104/w3-64/r0-67/r22-20/r25-99/r22-16/r21-0/r0-115/r22-21/r0-35/r22-27/r0-19/w28-2/r0-107/w8-0/r0-92.0
+d.36302
+2.RCS.1862.r9-2/r28-2/r3-42/r22-31/w8-0/r2-9/r20-0/w22-23/r3-47/r3-95/r0-58/w22-10/r3-80.0
+d.15703 +1.RCS.1000.r3-47/w27-0/r0-58/r3-80/r22-31/r3-42/r9-2/w34-0/r3-18/r3-41/r21-0/r9-5/r3-78/r25-4/r3-104/r3-23/r30-0/r3-88/r22-27/r22-1/r25-45/r3-50/r22-12/r22-22/r22-3/r22-0/r25-56/r3-4/r22-15/r25-113/r3-7/r22-18/r25-60/r3-81/r25-21/r3-89/r18-5/r3-93/r17-8/r25-28/r25-87/r25-9/r25-13/r25-42/r25-90/r22-16/r34-2/r3-15/w3-64/r0-76/r25-99/r25-73/r3-6/r25-40/r3-90/r22-20/r0-106/r3-60/w32-17/r3-27/w32-16/w32-3/w32-1/w33-2/r28-2/r3-98/r3-87/r3-108/r3-26/r3-96/r22-5/r22-14/r22-29/r3-68/r3-112/r3-103/r3-49/r3-12/r22-6/r3-85/r25-104/r22-28/r25-14/r25-44/r25-19/r3-67/r25-111/r18-4/r3-66/r18-17/r4-5/r25-68/r25-86/r25-26/r25-59/r25-71/r25-101/r25-67/r3-37/r25-0/r25-75/r25-20/r25-91/r22-7/r3-2/r3-117/r3-33/r22-2/r25-55/r25-66/r25-24/r25-105/r25-61/r25-11/r25-51/r25-64/r25-70/r25-81/r25-78/r25-37/r25-50/r25-102/r25-35/r18-18/r18-13/r18-12/r3-69/r3-19/r3-100/r18-19/r18-26/r18-21/r22-21/r25-82/r25-77/r25-33/r25-22/r3-29/r25-93/r22-10/r25-110/r25-62/r25-72/r22-9/r8-0/r18-23/r18-7/r18-11/r3-73/r25-92/r25-
41/w33-3/r0-107/w19-0/w31-0.0
+d.2669
+1.RCS.33805.r9-2/r3-18/r3-60/r22-3/r22-31/w31-0/r3-98/r19-0/r3-6/w33-2/r32-19/r3-27/r3-80/r3-114/r0-107/r0-58/w32-4/r3-78/w29-1/w32-8/r9-5/r32-17/r32-3/r32-1/r30-0/r3-104/r35-0/r34-1/r34-0/r3-92/r34-2/r22-12/r22-1/w32-0/r3-75/r3-118/r3-70/r3-1/r3-113/r22-29/r22-14/r3-109/r3-28/r3-79/r22-7/r3-8/r4-5/r3-85/r3-115/r3-55/r3-13/r3-59/r22-2.0
+d.2564
+2.RCS.34680.r9-2/r0-53/r3-27/w7-2/r3-47/r0-109/r3-60/r0-60/w6-1/r0-97/w7-0/r0-98/w7-1/r0-58/r32-8/r3-6/r22-31/w0-2/r3-113/r9-5/w0-32.0
+1.RCS.5597.r0-58/r3-80/r22-31/r3-60/r3-27/r9-2/w27-1/r3-18/r22-1/r9-5/r0-32/r3-6/r32-8/r3-78/r3-113/r0-107/w28-0/r3-98/r3-91/w28-1/r3-93/w32-14/r32-0/r33-2/w32-16.0
+2.RCS.1000.r9-2/r3-60/r3-27/r32-16/r3-93/w4-16/r0-3/w3-122/r3-91/r0-58.0
+2.RCS.5780.r9-2/r33-2/r3-6/r22-31/r3-27/w0-103/w0-84/r3-60/r2-54.0
+1.RCS.14008.r0-58/r3-80/r22-31/r3-60/r3-27/r9-2/w32-18/r3-18/r22-1/r9-5/r3-98/r32-14/r3-93/r33-2/r3-6/r32-16/r3-122/r3-106/r3-78/r2-54/r0-107/w32-7/w32-11/w32-2/r33-0/r25-116/r0-84/r16-0/r28-3/r0-3/r0-111/r22-32/r10-58/r4-13/r4-3/r4-1.0
+1.RCS.6132.r3-80/r22-31/r3-60/r3-27/r9-2/w9-5/r0-48/r0-58/w32-19/r3-18/r22-1/r3-78/r3-88/r22-5/r22-14/r22-6/r22-29/r22-7/r22-12/r22-18/r22-28/r22-3/r22-0/r3-75/r3-104/w3-64/r0-88/r22-20/r25-99/r22-16/r21-0/r0-45/r22-21/r0-64/r3-74/r22-27/r0-42/w28-2/r0-107/w8-0/r0-52.0
+d.37446
+2.RCS.1900.r9-2/r28-2/r3-27/r22-31/w8-0/r2-47/r20-0/w22-23/r3-74/r3-95/r0-58/w22-10/r3-80.0
+d.18811 +1.RCS.1000.r3-74/w27-0/r0-58/r3-80/r22-31/r3-27/r9-2/w34-0/r3-18/r3-60/r21-0/r9-5/r3-78/r25-4/r3-104/r3-23/r30-0/r3-88/r22-27/r22-1/r25-45/r3-50/r22-12/r22-22/r22-3/r22-0/r25-56/r3-4/r22-15/r25-113/r3-7/r22-18/r25-60/r3-81/r25-21/r3-89/r18-5/r3-93/r17-8/r25-28/r25-87/r25-9/r25-13/r25-42/r25-90/r22-16/r34-2/r3-15/w3-64/r0-87/r25-99/r25-73/r3-6/r25-40/r3-90/r22-20/r3-110/r0-22/w32-17/w32-16/w32-3/w32-1/w33-2/r28-2/r3-98/r3-87/r3-108/r3-26/r3-96/r22-5/r22-14/r22-29/r3-68/r3-112/r3-103/r3-49/r3-12/r22-6/r3-85/r25-104/r22-28/r25-14/r25-44/r25-19/r3-67/r25-111/r18-4/r3-66/r18-17/r4-5/r25-68/r25-86/r25-26/r25-59/r25-71/r25-101/r25-67/r3-37/r25-0/r25-75/r25-20/r25-91/r22-7/r3-2/r3-117/r3-33/r22-2/r25-55/r25-66/r25-24/r25-105/r25-61/r25-11/r25-51/r25-64/r25-70/r25-81/r25-78/r25-37/r25-50/r25-102/r25-35/r18-18/r18-13/r18-12/r3-69/r3-19/r3-100/r18-19/r18-26/r18-21/r22-21/r25-82/r25-77/r25-33/r25-22/r3-29/r25-93/r22-10/r25-110/r25-62/r25-72/r22-9/r8-0/r18-23/r18-7/r18-11/r3-73/r25-92/r25-41/w33
-3/r0-107/w19-0/w31-0.0
+d.1865
+1.RCS.34308.r9-2/r3-18/r3-74/r22-3/r22-31/w31-0/r3-98/r19-0/r3-6/w33-2/r32-19/r3-110/r3-80/r3-114/r0-107/r0-58/w32-4/r3-78/w29-1/w32-8/r9-5/r32-17/r32-3/r32-1/r30-0/r3-104/r35-0/r34-1/r34-0/r3-92/r34-2/r22-12/r22-1/w32-0/r3-75/r3-118/r3-70/r3-1/r3-113/r22-29/r22-14/r3-109/r3-28/r3-79/r22-7/r3-8/r4-5/r3-85/r3-115/r3-55/r3-13/r3-59/r22-2.0
+d.1284
+2.RCS.35212.r9-2/r0-67/r3-110/w7-2/r3-74/r0-109/r0-115/w6-1/r0-35/w7-0/r0-19/w7-1/r0-58/r32-8/r3-6/r22-31/w0-2/r3-113/r9-5/w0-32.0
+1.RCS.5686.r0-58/r3-80/r22-31/r3-74/r3-110/r9-2/w27-1/r3-18/r22-1/r9-5/r0-32/r3-6/r32-8/r3-78/r3-113/r0-107/w28-0/r3-98/r3-91/w28-1/r3-31/r3-93/w32-14/r32-0/r33-2/w32-16.0
+2.RCS.1000.r9-2/r3-31/r3-110/r32-16/r3-93/w4-16/r0-3/w3-122/r3-91/r0-58.0
+2.RCS.5791.r9-2/r33-2/r3-6/r22-31/r3-110/w0-103/w0-92/r3-31/r2-54.0
+1.RCS.14049.r0-58/r3-80/r22-31/r3-31/r3-110/r9-2/w32-18/r3-18/r3-74/r22-1/r9-5/r3-98/r32-14/r3-93/r33-2/r3-6/r32-16/r3-122/r3-106/r3-78/r2-54/r0-107/w32-7/w32-11/w32-2/r33-0/r25-116/r0-92/r16-0/r28-3/r0-3/r0-111/r22-32/r10-58/r4-13/r4-3/r4-1.0
+1.RCS.6085.r3-80/r22-31/r3-31/r3-110/r9-2/w9-5/r0-76/r0-58/w32-19/r3-18/r3-74/r22-1/r3-78/r3-88/r22-5/r22-14/r22-6/r22-29/r22-7/r22-12/r22-18/r22-28/r22-3/r22-0/r3-75/r3-104/w3-64/r0-106/r22-20/r25-99/r22-16/r21-0/r0-71/r0-26/r22-27/r0-75/w28-2/r0-107/r3-0/w8-0/r0-29.0
+d.34977
+2.RCS.1794.r9-2/r28-2/r3-0/r22-31/w8-0/r2-9/r20-0/w22-23/r3-31/r3-95/r0-58/w22-10/r3-80.0
+d.11049 +1.RCS.32894.r3-31/w27-0/r0-58/r3-80/r22-31/r3-0/r9-2/w34-0/r3-18/r3-74/r21-0/r9-5/r3-78/r25-4/r3-104/r3-23/r30-0/r3-88/r22-27/r22-1/r25-45/r3-50/r22-12/r22-22/r22-3/r22-0/r25-56/r3-4/r22-15/r25-113/r3-7/r22-18/r25-60/r3-81/r25-21/r3-89/r18-5/r3-93/r17-8/r25-28/r25-87/r25-9/r25-13/r25-42/r25-90/r22-16/r34-2/r3-15/w3-64/r0-68/r25-99/r25-73/r3-6/r25-40/r3-90/r22-20/r0-48/w32-17/w32-16/w32-3/w32-1/w33-2/r28-2/r3-98/r3-87/r3-108/r3-26/r3-96/r22-5/r22-14/r22-29/r3-68/r3-112/r3-103/r3-49/r3-12/r22-6/r3-85/r25-104/r22-28/r25-14/r25-44/r25-19/r3-67/r18-17/r4-5/r18-4/r3-2/r3-117/r3-33/r22-2/r25-81/r25-78/r25-37/r25-50/r25-102/r25-35/r22-7/r18-18/r18-13/r18-12/r3-69/r3-19/r3-100/r18-19/r18-26/r18-21/r25-105/r25-61/r25-11/r25-75/r25-20/r25-91/r25-51/r25-64/r25-70/r25-55/r25-66/r25-24/r25-111/r3-66/r25-68/r25-86/r25-26/r22-21/r25-82/r25-77/r25-33/r22-10/r25-110/r25-62/r25-72/r22-9/r8-0/r18-23/r18-7/r18-11/r3-73/r25-92/r25-41/w33-3/r0-107/w19-0/w31-0/r32-19/r3-20/r3-114/w32-4/w29-1/w32-8/r35-0/r3
4-1/r3-92/w32-0.0
+d.5753
+2.RCS.33634.r9-2/r0-88/r3-0/w7-2/r3-31/r0-109/r3-20/r0-45/w6-1/r0-64/w7-0/r0-42/w7-1/r0-58/r32-8/r3-6/r22-31/w0-2/r3-113/r9-5/w0-32.0
+d.1325
+1.RCS.6527.r9-2/r3-18/r3-31/r3-20/r22-1/r22-31/r9-5/r3-78/w32-0/r3-98/r3-75/r3-104/r3-118/r3-6/r3-70/r30-0/r35-0/r34-1/r34-0/r32-19/r3-0/r3-1/r3-113/w33-2/r22-29/r22-14/r3-109/r3-28/r3-79/r22-7/r0-58/r3-80/w27-1/r0-32/r32-8/r0-107/w28-0/r3-91/w28-1/r3-93/w32-14/w32-16.0
+d.2261
+2.RCS.1000.r9-2/r3-20/r3-0/r32-16/r3-93/w4-16/r0-3/w3-122/r3-91/r0-58.0
+2.RCS.6788.r9-2/r33-2/r3-6/r22-31/r3-0/w0-103/w0-52/r3-20/r2-54.0
+1.RCS.13974.r0-58/r3-80/r22-31/r3-20/r3-0/r9-2/w32-18/r3-18/r3-31/r22-14/r9-5/r3-98/r32-14/r3-93/r33-2/r3-6/r32-16/r3-122/r3-106/r3-78/r2-54/r0-107/w32-7/w32-11/w32-2/r33-0/r25-116/r0-52/r16-0/r28-3/r0-3/r0-111/r22-32/r10-58/r4-13/r4-3/r4-1.0
+1.RCS.6098.r3-80/r22-31/r3-20/r3-0/r9-2/w9-5/r0-87/r0-58/w32-19/r3-18/r3-31/r22-14/r3-78/r3-42/r3-88/r22-5/r22-6/r22-29/r22-7/r22-1/r22-12/r22-18/r22-28/r22-3/r22-0/r3-75/r3-104/w3-64/r0-22/r22-20/r25-99/r22-16/r21-0/r0-53/r0-60/r0-97/w28-2/r0-107/w8-0/r0-98.0
+d.39039
+2.RCS.1753.r9-2/r28-2/r3-42/r22-31/w8-0/r2-47/r20-0/w22-23/r3-20/r3-95/r0-58/w22-10/r3-80.0
+d.14507 +1.RCS.31161.r3-20/w27-0/r0-58/r3-80/r22-31/r3-42/r9-2/w34-0/r3-18/r3-31/r21-0/r9-5/r3-78/r25-4/r3-104/r3-23/r30-0/r3-88/r22-27/r22-1/r25-45/r3-50/r22-12/r22-22/r22-3/r22-0/r25-56/r3-4/r22-15/r25-113/r3-7/r22-18/r25-60/r3-81/r25-21/r3-89/r18-5/r3-93/r17-8/r25-28/r25-87/r25-9/r25-13/r25-42/r25-90/r22-16/r34-2/r3-15/w3-64/r0-84/r25-40/r3-90/r22-20/r0-76/r3-41/w32-17/w32-16/w32-3/w32-1/w33-2/r28-2/r3-98/r3-87/r3-108/r3-26/r3-96/r22-29/r22-14/r3-68/r3-112/r3-103/r22-5/r3-49/r3-12/r22-6/r3-85/r25-14/r3-6/r25-104/r22-28/r25-44/r25-19/r3-67/r18-17/r4-5/r18-4/r25-111/r3-66/r25-81/r25-78/r25-37/r25-50/r25-102/r25-35/r22-7/r18-18/r18-13/r18-12/r3-69/r3-19/r3-100/r18-19/r18-26/r18-21/r3-2/r3-117/r3-33/r22-2/r25-51/r25-64/r25-70/r25-105/r25-61/r25-11/r25-75/r25-20/r25-91/r25-55/r25-66/r25-24/r25-68/r25-86/r25-26/r22-21/r25-82/r25-77/r25-33/r22-10/r25-110/r25-62/r25-72/r22-9/r8-0/r18-23/r18-7/r18-11/r3-73/r25-99/r25-73/r25-92/r25-41/w33-3/r0-107/w19-0/w31-0/r32-19/r3-114/w32-4/w29-1/w32-8/r35-0/r
34-1/r3-92.0
+d.3932
+2.RCS.31979.r9-2/r0-106/r3-42/w7-2/r3-20/r0-109/r3-41/r0-71/w6-1/r0-26/w7-0/r0-75/w7-1/r0-58/r32-8/r3-6/r22-31/w0-2/r3-113/r9-5/w0-32.0
+d.1568
+1.RCS.6364.r0-58/r3-80/r22-31/r3-41/r3-42/r9-2/w32-0/r3-18/r22-1/r9-5/r3-78/r3-98/r3-75/r3-104/r3-118/r3-6/r3-70/r30-0/r35-0/r34-1/r34-0/r32-19/r3-1/r3-113/w33-2/r22-29/r22-14/r3-109/r3-28/r3-79/r22-7/w27-1/r0-32/r32-8/r0-107/w28-0/r3-91/w28-1/r3-93/r3-27/w32-14/w32-16.0
+2.RCS.1000.r9-2/r3-41/r3-27/r32-16/r3-93/w4-16/r0-3/w3-122/r3-91/r0-58.0
+2.RCS.6617.r9-2/r33-2/r3-6/r22-31/r3-27/w0-103/w0-29/r3-41/r2-54.0
+1.RCS.13317.r0-58/r3-80/r22-31/r3-41/r3-27/r9-2/w32-18/r3-18/r22-14/r9-5/r3-98/r32-14/r3-93/r33-2/r3-6/r32-16/r3-122/r3-106/r3-78/r2-54/r0-107/w32-7/w32-11/w32-2/r33-0/r25-116/r0-29/r16-0/r28-3/r0-3/r0-111/r22-32/r10-58/r4-13/r4-3/r4-1.0
+1.RCS.6237.r3-80/r22-31/r3-41/r3-27/r9-2/w9-5/r0-68/r0-58/w32-19/r3-18/r22-14/r3-78/r3-88/r22-5/r22-6/r22-29/r22-7/r22-1/r22-12/r22-18/r22-28/r22-3/r22-0/r3-75/r3-104/w3-64/r0-48/r22-20/r25-99/r22-16/r21-0/r0-67/r3-47/r0-115/r0-35/w28-2/r0-107/w8-0/r0-19.0
+d.38304
+2.RCS.1901.r9-2/r28-2/r3-27/r22-31/w8-0/r2-9/r20-0/w22-23/r3-47/r3-95/r0-58/w22-10/r3-80.0
+d.20018 +1.RCS.31362.r3-47/w27-0/r0-58/r3-80/r22-31/r3-27/r9-2/w34-0/r3-18/r3-41/r21-0/r9-5/r3-78/r25-4/r3-104/r3-23/r30-0/r3-88/r22-27/r22-1/r25-45/r3-50/r22-12/r22-22/r22-3/r22-0/r25-56/r3-4/r22-15/r25-113/r3-7/r22-18/r25-60/r3-81/r25-21/r3-89/r18-5/r3-93/r17-8/r25-28/r25-87/r25-9/r25-13/r25-42/r25-90/r22-16/r34-2/r3-15/w3-64/r0-92/r25-40/r3-90/r22-20/r0-87/w32-17/w32-16/w32-3/w32-1/w33-2/r28-2/r3-98/r3-87/r3-108/r3-26/r3-96/r22-29/r22-14/r3-68/r3-112/r3-103/r22-5/r3-49/r3-12/r22-6/r3-85/r25-14/r3-6/r25-104/r22-28/r24-23/r25-44/r25-19/r3-67/r18-17/r4-5/r18-4/r25-111/r3-66/r25-81/r25-78/r25-37/r25-50/r25-102/r25-35/r22-7/r18-18/r18-13/r18-12/r3-69/r3-19/r3-100/r18-19/r18-26/r18-21/r3-2/r3-117/r3-33/r22-2/r25-51/r25-64/r25-70/r25-105/r25-61/r25-11/r25-75/r25-20/r25-91/r25-55/r25-66/r25-24/r25-68/r25-86/r25-26/r22-21/r25-82/r25-77/r25-33/r22-10/r25-110/r25-62/r25-72/r22-9/r8-0/r18-23/r18-7/r18-11/r3-73/r25-99/r25-73/r25-92/r25-41/w33-3/r0-107/w19-0/w31-0/r32-19/r3-114/w32-4/w29-1/w32-8/r35-0/
r34-1/r3-92.0
+d.1960
+2.RCS.32169.r9-2/r0-22/r3-27/w7-2/r3-47/r0-109/r0-53/w6-1/r0-60/w7-0/r0-97/w7-1/r0-58/r32-8/r3-6/r22-31/w0-2/r3-113/r9-5/w0-32.0
+1.RCS.6329.r0-58/r3-80/r22-31/r3-47/r3-27/r9-2/w32-0/r3-18/r22-1/r9-5/r3-78/r3-98/r3-75/r3-104/r3-118/r3-6/r3-70/r30-0/r35-0/r34-1/r34-0/r32-19/r3-1/r3-113/w33-2/r22-29/r22-14/r3-109/r3-28/r3-79/r22-7/w27-1/r0-32/r32-8/r0-107/w28-0/r3-91/r3-110/w28-1/r3-60/r3-93/w32-14/w32-16.0
+2.RCS.1000.r9-2/r3-60/r3-110/r32-16/r3-93/w4-16/r0-3/w3-122/r3-91/r0-58.0
+2.RCS.6597.r9-2/r33-2/r3-6/r22-31/r3-110/w0-103/w0-98/r3-60/r2-54.0
+1.RCS.13180.r0-58/r3-80/r22-31/r3-60/r3-110/r9-2/w32-18/r3-18/r3-47/r22-14/r9-5/r3-98/r32-14/r3-93/r33-2/r3-6/r32-16/r3-122/r3-106/r3-78/r2-54/r0-107/w32-7/w32-11/w32-2/r33-0/r25-116/r0-98/r16-0/r28-3/r0-3/r0-111/r22-32/r10-58/r4-13/r4-3/r4-1.0
+1.RCS.6083.r3-80/r22-31/r3-60/r3-110/r9-2/w9-5/r0-84/r0-58/w32-19/r3-18/r3-47/r22-14/r3-78/r3-88/r22-5/r22-6/r22-29/r22-7/r22-1/r22-12/r22-18/r22-28/r22-3/r22-0/r3-75/r3-104/w3-64/r0-76/r22-20/r9-4/r25-99/r22-16/r21-0/r0-88/r0-45/r0-64/w28-2/r0-107/w8-0/r0-42.0
+d.31011
+2.RCS.1752.r0-58/r9-4/r28-2/r3-110/r22-31/w8-0/r2-47/r20-0/w22-23/r3-60/r3-95/w22-10/r3-80.0
+d.8789 +1.RCS.1000.r3-60/w27-0/r0-58/r3-80/r22-31/r3-110/r9-4/w34-0/r3-18/r3-47/r21-0/r9-5/r3-78/r25-4/r3-104/r3-23/r30-0/r3-88/r22-27/r22-1/r25-45/r3-50/r22-12/r22-22/r22-3/r22-0/r25-56/r3-4/r22-15/r25-113/r3-7/r22-18/r25-60/r3-81/r25-21/r3-89/r18-5/r3-93/r17-8/r25-28/r25-87/r25-9/r25-13/r25-42/r25-90/r22-16/r34-2/r3-15/w3-64/r0-52/r25-99/r25-73/r3-6/r25-40/r3-90/r22-20/r0-68/w32-17/w32-16/w32-3/w32-1/w33-2/r28-2/r3-98/r3-85/r25-14/r3-12/r3-87/r3-108/r3-26/r3-96/r22-29/r22-14/r3-68/r3-112/r3-103/r22-5/r3-49/r22-6/r25-104/r22-28/r24-23/r25-44/r25-19/r3-67/r18-17/r4-5/r18-4/r25-111/r3-66/r25-81/r25-78/r25-37/r25-50/r25-102/r25-35/r22-7/r18-18/r18-13/r18-12/r3-69/r3-19/r3-100/r18-19/r18-26/r18-21/r3-2/r3-117/r3-33/r22-2/r25-51/r25-64/r25-70/r25-105/r25-61/r25-11/r25-75/r25-20/r25-91/r25-55/r25-66/r25-24/r25-68/r25-86/r25-26/r22-21/r25-82/r25-77/r25-33/r22-10/r25-110/r25-62/r25-72/r22-9/r8-0/r18-23/r18-7/r18-11/r3-73/r25-92/r25-41/w33-3/r0-107/w19-0/w31-0/r3-74/r32-19/r3-0/r3-114/w32-4/w29-1/w
32-8.0
+d.3470
+1.RCS.32141.r9-4/r3-60/r3-18/r3-74/r22-3/r22-31/r9-5/w32-8/r3-98/r32-17/r3-6/r32-3/r32-1/w33-2/r29-1/r30-0/r3-104/r35-0/r34-1/r34-0/r3-78/r3-80/r3-92/r0-107/r34-2/r22-12/r22-1/r0-58/r3-0/w32-0/r3-75/r3-118/r3-70/r32-19/r3-1/r3-113/r22-29/r22-14/r3-109/r3-28/r3-79/r22-7.0
+d.2303
+2.RCS.33018.r9-4/r0-48/r3-0/w7-2/r3-60/r0-109/r3-74/r0-67/w6-1/r0-115/w7-0/r0-35/w7-1/r0-58/r32-8/r3-6/r22-31/w0-2/r3-113/r9-5/w0-32.0
+1.RCS.5660.r0-58/r3-80/r22-31/r3-74/r3-0/r9-4/w27-1/r3-18/r3-60/r22-14/r9-5/r0-32/r3-6/r32-8/r3-78/r3-113/r0-107/w28-0/r3-98/r3-91/w28-1/r3-93/w32-14/r32-0/r33-2/w32-16.0
+d.1494
+2.RCS.1000.r9-4/r3-74/r3-0/r32-16/r3-93/w4-16/r0-3/w3-122/r3-91/r0-58.0
+2.RCS.5873.r9-4/r33-2/r3-6/r22-31/r3-0/w0-103/w0-19/r3-74/r2-54.0
+d.1151
+1.RCS.12578.r0-58/r3-80/r22-31/r3-74/r3-0/r9-4/w32-18/r3-18/r3-60/r22-14/r9-5/r3-98/r32-14/r3-93/r33-2/r3-6/r32-16/r3-122/r3-106/r3-78/r2-54/r0-107/w32-7/w32-11/w32-2/r33-0/r25-116/r0-19/r16-0/r28-3/r0-3/r0-111/r22-32/r10-58/r4-13/r4-3/r4-1.0
+1.RCS.6159.r3-80/r22-31/r3-74/r3-0/r9-4/w9-5/r0-92/r0-58/w32-19/r3-18/r3-60/r22-14/r3-78/r3-88/r22-5/r22-6/r22-29/r22-7/r22-1/r22-12/r22-18/r22-28/r22-3/r22-0/r3-75/r3-104/w3-64/r0-87/r22-20/r25-99/r22-16/r21-0/r0-106/r0-71/r0-26/w28-2/r0-107/w8-0/r0-75.0
Signature · 6 lines
2.20.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [igt-dev] [Intel-gfx] [PATCH i-g-t 08/11] gem_wsim: Snippet of a workload extracted from carchase
Quoting Tvrtko Ursulin (2020-06-18 11:47:44)
Quoted 5 lines
From: Tvrtko Ursulin <[email protected]>
Some frames from the middle of a demo with corresponding buffers.
Signed-off-by Tvrtko Ursulin <[email protected]>
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH 9/11 gem_wsim: Implement device selection
In reply to Tvrtko UrsulinFrom: Tvrtko Ursulin <[email protected]>
New command line options -L and -D <device> can respectively be used to list and select a GPU when more than one is present.
--- benchmarks/gem_wsim.c | 62 +++++++++++++++++++++++++++++++------------ 1 file changed, 45 insertions(+), 17 deletions(-)
benchmarks/gem_wsim.c +45 -17
@@ -43,6 +43,7 @@#include <pthread.h> #include <math.h> +#include "igt_device_scan.h" #include "intel_chipset.h" #include "intel_reg.h" #include "drm.h"
@@ -2611,7 +2612,9 @@ static void print_help(void)" clients.\n" " -d Sync between data dependencies in userspace.\n" " -f <scale> Scale factor for batch durations.\n" -" -F <scale> Scale factor for delays." +" -F <scale> Scale factor for delays.\n" +" -L List GPUs.\n" +" -D <gpu> One of the GPUs from -L." ); }
@@ -2672,31 +2675,32 @@ int main(int argc, char **argv)char *append_workload_arg =NULL ;struct w_arg *w_args =NULL ;unsigned int tolerance_pct =1 ; +enum igt_devices_print_type printtype =IGT_PRINT_SIMPLE ; +bool list_devices_arg = false;int exitcode =EXIT_FAILURE ; +struct igt_device_card card;double scale_time =1.0f ;double scale_dur =1.0f ; +char *device_arg =NULL ;int prio =0 ;double t; -int i, c; +int i, c, ret;char *subopts, *value;int raw_number =0 ;long calib_val;int eng; -/* -* Open the device via the low-level API so we can do the GPU quiesce -* manually as close as possible in time to the start of the workload. -* This minimizes the gap in engine utilization tracking when observed -* via external tools like trace.pl. -*/ - fd =__drm_open_driver_render (DRIVER_INTEL ); -igt_require (fd); - master_prng =time (NULL );while ((c =getopt (argc, argv, -"ThqvsSdc:n:r:w:W:a:t:p:I:f:F:" )) !=-1 ) { +"LThqvsSdc:n:r:w:W:a:t:p:I:f:F:D:" )) !=-1 ) {switch (c) { +case 'L' : + list_devices_arg = true; +break ; +case 'D' : + device_arg =strdup (optarg); +break ;case 'W' :if (master_workload >=0 ) {wsim_err ("Only one master workload can be given!\n" );
@@ -2820,6 +2824,33 @@ int main(int argc, char **argv) } } + +igt_devices_scan (false); + +if (list_devices_arg) { +igt_devices_print (printtype); +return EXIT_SUCCESS ; + } + +if (device_arg) { + ret =igt_device_card_match (device_arg, &card); +if (!ret) { +wsim_err ("Requested device %s not found!\n" , device_arg); +free (device_arg); + +return EXIT_FAILURE ; + } +free (device_arg); + }else { +igt_device_find_first_i915_discrete_card (&card); + } + +if (card.render[0 ]) + fd =igt_open_render (&card); +else + fd =__drm_open_driver_render (DRIVER_INTEL ); +igt_require (fd); +if (!has_nop_calibration) {if (verbose >1 ) { printf("Calibrating nop delays with %u%% tolerance...\n",
@@ -2932,15 +2963,12 @@ int main(int argc, char **argv)clock_gettime (CLOCK_MONOTONIC , &t_start);for (i =0 ; i < clients; i++) { -int ret; - ret =pthread_create (&w[i]->thread,NULL , run_workload, w[i]);igt_assert_eq (ret,0 ); }if (master_workload >=0 ) { -int ret =pthread_join (w[master_workload]->thread,NULL ); - + ret =pthread_join (w[master_workload]->thread,NULL );igt_assert (ret ==0 );for (i =0 ; i < clients; i++)
@@ -2949,7 +2977,7 @@ int main(int argc, char **argv)for (i =0 ; i < clients; i++) {if (master_workload != i) { -int ret =pthread_join (w[i]->thread,NULL ); + ret =pthread_join (w[i]->thread,NULL );igt_assert (ret ==0 ); } }
Signature · 6 lines
2.20.1 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH 10/11 gem_wsim: Fix calibration handling
In reply to Tvrtko UrsulinFrom: Tvrtko Ursulin <[email protected]>
Intended use case was that run without arguments prints out the calibrations which can be simply copied and pasted to the -n argument and things should just work.
Two problems we need to solve: If the print out loops shows zero calibrations (engine not present) they are later rejected and also if some calibration is not given it is only an error if it needs to be used (engine present).
--- benchmarks/gem_wsim.c | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-)
benchmarks/gem_wsim.c +2 -18
@@ -296,8 +296,8 @@ print_engine_calibrations(void)printf ("Nop calibration for %uus delay is: " , nop_calibration_us);for (int i =0 ; i <NUM_ENGINES ; i++) { -/* skip DEFAULT and VCS engines */ -if (i !=DEFAULT && i !=VCS ) { +/* skip engines not present and DEFAULT and VCS */ +if (i !=DEFAULT && i !=VCS && engine_calib_map[i]) {if (first_entry) {printf ("%s=%lu" , ring_str_map[i], engine_calib_map[i]); first_entry = false;
@@ -2862,22 +2862,6 @@ int main(int argc, char **argv)if (verbose)print_engine_calibrations (); goto out; - }else { -bool missing = false; - -for (i =0 ; i <NUM_ENGINES ; i++) { -if (i ==VCS ) -continue ; - -if (!engine_calib_map[i]) { -wsim_err ("Missing calibration for '%s'!\n" , - ring_str_map[i]); - missing = true; - } - } - -if (missing) - goto err; }if (!nr_w_args) {
Signature · 6 lines
2.20.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [igt-dev] [PATCH i-g-t 10/11] gem_wsim: Fix calibration handling
Quoting Tvrtko Ursulin (2020-06-18 11:47:46)
Quoted 6 lines
From: Tvrtko Ursulin <[email protected]>
Intended use case was that run without arguments prints out the calibrations which can be simply copied and pasted to the -n argument and things should just work.
Quoted 6 lines
Two problems we need to solve: If the print out loops shows zero calibrations (engine not present) they are later rejected and also if some calibration is not given it is only an error if it needs to be used (engine present).
Signed-off-by Tvrtko Ursulin <[email protected]>
Good enough,
-Chris
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH 11/11 gem_wsim: Do not keep batch mapped unless needed
In reply to Tvrtko UrsulinFrom: Tvrtko Ursulin <[email protected]>
At this point we only need to keep the mapping for infinite batch buffers.
--- benchmarks/gem_wsim.c | 5 +++++ 1 file changed, 5 insertions(+)
benchmarks/gem_wsim.c +5 -0
@@ -1449,6 +1449,7 @@ static unsigned int terminate_bb(struct w_step *w)const uint32_t bbe =0xa <<23 ;unsigned long mmap_start, mmap_len;unsigned long batch_start = w->bb_sz; +bool keep_mmap = false;unsigned int r =0 ;uint32_t *ptr, *cs;
@@ -1472,6 +1473,7 @@ static unsigned int terminate_bb(struct w_step *w) *cs++ = w->preempt_us ?0x5 <<23 /* MI_ARB_CHK; */ :MI_NOOP ; w->recursive_bb_start = cs; + keep_mmap = true; *cs++ =MI_BATCH_BUFFER_START |1 <<8 |1 ; *cs++ =0 ; *cs++ =0 ;
@@ -1479,6 +1481,9 @@ static unsigned int terminate_bb(struct w_step *w) *cs = bbe; +if (!keep_mmap) +munmap (ptr, mmap_len); +return r; }
Signature · 6 lines
2.20.1 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
Patchwork
CI[igt-dev] ✗ Fi.CI.BUILD: failure for series starting with [i-g-t,01/11] gem_wsim: Rip out userspace balancing
In reply to Tvrtko Ursulin== Series Details ==
== Series Details ==
Series: series starting with [i-g-t,01/11] gem_wsim: Rip out userspace balancing
URL : https://patchwork.freedesktop.org/series/78525/
State : failure
== Summary ==
Applying: gem_wsim: Rip out userspace balancing
Applying: gem_wsim: Buffer objects working sets and complex dependencies
Applying: gem_wsim: Show workload timing stats
Applying: gem_wsim: Move BO allocation to a helper
Applying: gem_wsim: Support random buffer sizes
Applying: gem_wsim: Support scaling workload batch durations
Applying: gem_wsim: Log max and active working set sizes in verbose mode
Applying: gem_wsim: Snippet of a workload extracted from carchase Patch failed at 0008 gem_wsim: Snippet of a workload extracted from carchase When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort".
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
Quoting Tvrtko Ursulin (2020-06-18 11:47:37)
Quoted 5 lines
From: Tvrtko Ursulin <[email protected]>
Evaluation of userspace load balancing options was how this tool started but since we have settled on doing it in the kernel.
Quoted 7 lines
Tomorrow we will want to update the tool for new engine interfaces and all this legacy code will just be a distraction.
Rip out everything not related to explicit load balancing implemented via context engine maps and adjust the workloads to use it.
Signed-off-by Tvrtko Ursulin <[email protected]>
-Chris
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx