mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 11:20:07 +00:00
benchtests: Enable BENCHSET to run subset of tests
This patch adds BENCHSET variable to benchtests/Makefile in order to provide the capability to run a list of subsets of benchmark tests, ie; make bench BENCHSET="bench-pthread bench-math malloc-thread" This helps users to benchmark specific glibc area ChangeLog: * benchtests/Makefile:Add BENCHSET to allow subsets of benchmarks to be run. * benchtests/README: Add documentation for: Running subsets of benchmarks. Signed-off-by: Victor Rodriguez <victor.rodriguez.bahena@intel.com> Signed-off-by: Icarus Sparry <icarus.w.sparry@intel.com> Reviewed-By: Siddhesh Poyarekar <siddhesh@sourceware.org>
This commit is contained in:
parent
d5090db30e
commit
0422ed1e84
@ -1,3 +1,11 @@
|
|||||||
|
2017-11-28 Victor Rodriguez <victor.rodriguez.bahena@intel.com>
|
||||||
|
Icarus Sparry <icarus.w.sparry@intel.com>
|
||||||
|
|
||||||
|
* benchtests/Makefile:Add BENCHSET to allow subsets of
|
||||||
|
benchmarks to be run.
|
||||||
|
* benchtests/README: Add documentation for: Running subsets of
|
||||||
|
benchmarks.
|
||||||
|
|
||||||
2017-11-28 Victor Rodriguez <victor.rodriguez.bahena@intel.com>
|
2017-11-28 Victor Rodriguez <victor.rodriguez.bahena@intel.com>
|
||||||
|
|
||||||
* benchtests/scripts/benchout.schema.json: Fix regex to accept a wider
|
* benchtests/scripts/benchout.schema.json: Fix regex to accept a wider
|
||||||
|
@ -30,7 +30,11 @@ bench-pthread := pthread_once thread_create
|
|||||||
|
|
||||||
bench-string := ffs ffsll
|
bench-string := ffs ffsll
|
||||||
|
|
||||||
|
ifeq (${BENCHSET},)
|
||||||
bench := $(bench-math) $(bench-pthread) $(bench-string)
|
bench := $(bench-math) $(bench-pthread) $(bench-string)
|
||||||
|
else
|
||||||
|
bench := $(foreach B,$(filter bench-%,${BENCHSET}), ${${B}})
|
||||||
|
endif
|
||||||
|
|
||||||
# String function benchmarks.
|
# String function benchmarks.
|
||||||
string-benchset := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
|
string-benchset := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
|
||||||
@ -68,8 +72,12 @@ stdio-common-benchset := sprintf
|
|||||||
|
|
||||||
math-benchset := math-inlines
|
math-benchset := math-inlines
|
||||||
|
|
||||||
|
ifeq (${BENCHSET},)
|
||||||
benchset := $(string-benchset-all) $(stdlib-benchset) $(stdio-common-benchset) \
|
benchset := $(string-benchset-all) $(stdlib-benchset) $(stdio-common-benchset) \
|
||||||
$(math-benchset)
|
$(math-benchset)
|
||||||
|
else
|
||||||
|
benchset := $(foreach B,$(filter %-benchset,${BENCHSET}), ${${B}})
|
||||||
|
endif
|
||||||
|
|
||||||
CFLAGS-bench-ffs.c += -fno-builtin
|
CFLAGS-bench-ffs.c += -fno-builtin
|
||||||
CFLAGS-bench-ffsll.c += -fno-builtin
|
CFLAGS-bench-ffsll.c += -fno-builtin
|
||||||
@ -81,7 +89,11 @@ CFLAGS-bench-fmaxf.c += -fno-builtin
|
|||||||
CFLAGS-bench-trunc.c += -fno-builtin
|
CFLAGS-bench-trunc.c += -fno-builtin
|
||||||
CFLAGS-bench-truncf.c += -fno-builtin
|
CFLAGS-bench-truncf.c += -fno-builtin
|
||||||
|
|
||||||
|
ifeq (${BENCHSET},)
|
||||||
bench-malloc := malloc-thread
|
bench-malloc := malloc-thread
|
||||||
|
else
|
||||||
|
bench-malloc := $(filter malloc-%,${BENCHSET})
|
||||||
|
endif
|
||||||
|
|
||||||
$(addprefix $(objpfx)bench-,$(bench-math)): $(libm)
|
$(addprefix $(objpfx)bench-,$(bench-math)): $(libm)
|
||||||
$(addprefix $(objpfx)bench-,$(math-benchset)): $(libm)
|
$(addprefix $(objpfx)bench-,$(math-benchset)): $(libm)
|
||||||
@ -149,6 +161,19 @@ bench-clean:
|
|||||||
rm -f $(timing-type) $(addsuffix .o,$(timing-type))
|
rm -f $(timing-type) $(addsuffix .o,$(timing-type))
|
||||||
rm -f $(addprefix $(objpfx),$(bench-extra-objs))
|
rm -f $(addprefix $(objpfx),$(bench-extra-objs))
|
||||||
|
|
||||||
|
# Validate the passed in BENCHSET
|
||||||
|
ifneq ($(strip ${BENCHSET}),)
|
||||||
|
VALIDBENCHSETNAMES := bench-pthread bench-math bench-string string-benchset \
|
||||||
|
wcsmbs-benchset stdlib-benchset stdio-common-benchset math-benchset \
|
||||||
|
malloc-thread
|
||||||
|
INVALIDBENCHSETNAMES := $(filter-out ${VALIDBENCHSETNAMES},${BENCHSET})
|
||||||
|
ifneq (${INVALIDBENCHSETNAMES},)
|
||||||
|
$(info The following values in BENCHSET are invalid: ${INVALIDBENCHSETNAMES})
|
||||||
|
$(info The valid ones are: ${VALIDBENCHSETNAMES})
|
||||||
|
$(error Invalid BENCHSET value)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# Define the bench target only if the target has a usable python installation.
|
# Define the bench target only if the target has a usable python installation.
|
||||||
ifdef PYTHON
|
ifdef PYTHON
|
||||||
bench: bench-build bench-set bench-func bench-malloc
|
bench: bench-build bench-set bench-func bench-malloc
|
||||||
@ -175,10 +200,11 @@ bench-set: $(binaries-benchset)
|
|||||||
done
|
done
|
||||||
|
|
||||||
bench-malloc: $(binaries-bench-malloc)
|
bench-malloc: $(binaries-bench-malloc)
|
||||||
run=$(objpfx)bench-malloc-thread; \
|
for run in $^; do \
|
||||||
for thr in 1 8 16 32; do \
|
for thr in 1 8 16 32; do \
|
||||||
echo "Running $${run} $${thr}"; \
|
echo "Running $${run} $${thr}"; \
|
||||||
$(run-bench) $${thr} > $${run}-$${thr}.out; \
|
$(run-bench) $${thr} > $${run}-$${thr}.out; \
|
||||||
|
done;\
|
||||||
done
|
done
|
||||||
|
|
||||||
# Build and execute the benchmark functions. This target generates JSON
|
# Build and execute the benchmark functions. This target generates JSON
|
||||||
@ -186,6 +212,7 @@ bench-malloc: $(binaries-bench-malloc)
|
|||||||
# so one could even execute them individually and process it using any JSON
|
# so one could even execute them individually and process it using any JSON
|
||||||
# capable language or tool.
|
# capable language or tool.
|
||||||
bench-func: $(binaries-bench)
|
bench-func: $(binaries-bench)
|
||||||
|
if [ -n '$^' ] ; then \
|
||||||
{ timing_type=$$($(timing-type)); \
|
{ timing_type=$$($(timing-type)); \
|
||||||
echo "{\"timing_type\": \"$${timing_type}\","; \
|
echo "{\"timing_type\": \"$${timing_type}\","; \
|
||||||
echo " \"functions\": {"; \
|
echo " \"functions\": {"; \
|
||||||
@ -198,13 +225,15 @@ bench-func: $(binaries-bench)
|
|||||||
done; \
|
done; \
|
||||||
echo; \
|
echo; \
|
||||||
echo " }"; \
|
echo " }"; \
|
||||||
echo "}"; } > $(objpfx)bench.out-tmp; \
|
echo "}"; \
|
||||||
|
} > $(objpfx)bench.out-tmp; \
|
||||||
if [ -f $(objpfx)bench.out ]; then \
|
if [ -f $(objpfx)bench.out ]; then \
|
||||||
mv -f $(objpfx)bench.out $(objpfx)bench.out.old; \
|
mv -f $(objpfx)bench.out $(objpfx)bench.out.old; \
|
||||||
fi; \
|
fi; \
|
||||||
mv -f $(objpfx)bench.out-tmp $(objpfx)bench.out
|
mv -f $(objpfx)bench.out-tmp $(objpfx)bench.out; \
|
||||||
$(PYTHON) scripts/validate_benchout.py $(objpfx)bench.out \
|
$(PYTHON) scripts/validate_benchout.py $(objpfx)bench.out \
|
||||||
scripts/benchout.schema.json
|
scripts/benchout.schema.json; \
|
||||||
|
fi
|
||||||
|
|
||||||
$(timing-type) $(binaries-bench) $(binaries-benchset) \
|
$(timing-type) $(binaries-bench) $(binaries-benchset) \
|
||||||
$(binaries-bench-malloc): %: %.o $(objpfx)json-lib.o \
|
$(binaries-bench-malloc): %: %.o $(objpfx)json-lib.o \
|
||||||
|
@ -53,6 +53,25 @@ otherwise the above command may try to build the benchmark again. Benchmarks
|
|||||||
that require generated code to be executed during the build are skipped when
|
that require generated code to be executed during the build are skipped when
|
||||||
cross-building.
|
cross-building.
|
||||||
|
|
||||||
|
Running subsets of benchmarks:
|
||||||
|
==============================
|
||||||
|
|
||||||
|
To run only a subset of benchmarks, one may invoke make as follows
|
||||||
|
|
||||||
|
$ make bench BENCHSET="bench-pthread bench-math malloc-thread"
|
||||||
|
|
||||||
|
where BENCHSET may be a space-separated list of the following values:
|
||||||
|
|
||||||
|
bench-math
|
||||||
|
bench-pthread
|
||||||
|
bench-string
|
||||||
|
string-benchset
|
||||||
|
wcsmbs-benchset
|
||||||
|
stdlib-benchset
|
||||||
|
stdio-common-benchset
|
||||||
|
math-benchset
|
||||||
|
malloc-thread
|
||||||
|
|
||||||
Adding a function to benchtests:
|
Adding a function to benchtests:
|
||||||
===============================
|
===============================
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user