llvm/test/tools/llvm-profdata/weight-sample.test
Nathan Slingerland 824c3eccff [llvm-profdata] Add support for weighted merge of profile data (2nd try)
Summary:
This change adds support for specifying a weight when merging profile data with the llvm-profdata tool.
Weights are specified by using the --weighted-input=<weight>,<filename> option. Input files not specified
with this option (normal positional list after options) are given a default weight of 1.

Adding support for arbitrary weighting of input profile data allows for relative importance to be placed on the
input data from multiple training runs.

Both sampled and instrumented profiles are supported.

Reviewers: davidxl, dnovillo, bogner, silvas

Subscribers: silvas, davidxl, llvm-commits

Differential Revision: http://reviews.llvm.org/D15306

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255659 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-15 17:37:09 +00:00

57 lines
3.4 KiB
Plaintext

Tests for weighted merge of sample profiles.
1- Merge the foo and bar profiles with unity weight and verify the combined output
RUN: llvm-profdata merge -sample -text -weighted-input=1,%p/Inputs/weight-sample-bar.proftext -weighted-input=1,%p/Inputs/weight-sample-foo.proftext -o - | FileCheck %s -check-prefix=1X_1X_WEIGHT
RUN: llvm-profdata merge -sample -text -weighted-input=1,%p/Inputs/weight-sample-bar.proftext %p/Inputs/weight-sample-foo.proftext -o - | FileCheck %s -check-prefix=1X_1X_WEIGHT
1X_1X_WEIGHT: foo:1763288:35327
1X_1X_WEIGHT-NEXT: 7: 35327
1X_1X_WEIGHT-NEXT: 8: 35327
1X_1X_WEIGHT-NEXT: 9: 6930
1X_1X_WEIGHT-NEXT: 10: 29341
1X_1X_WEIGHT-NEXT: 11: 11906
1X_1X_WEIGHT-NEXT: 13: 18185 foo:19531
1X_1X_WEIGHT-NEXT: 15: 36458
1X_1X_WEIGHT-NEXT: bar:1772037:35370
1X_1X_WEIGHT-NEXT: 17: 35370
1X_1X_WEIGHT-NEXT: 18: 35370
1X_1X_WEIGHT-NEXT: 19: 7005
1X_1X_WEIGHT-NEXT: 20: 29407
1X_1X_WEIGHT-NEXT: 21: 12170
1X_1X_WEIGHT-NEXT: 23: 18150 bar:19829
1X_1X_WEIGHT-NEXT: 25: 36666
2- Merge the foo and bar profiles with weight 3x and 5x respectively and verify the combined output
RUN: llvm-profdata merge -sample -text -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=5,%p/Inputs/weight-sample-foo.proftext -o - | FileCheck %s -check-prefix=3X_5X_WEIGHT
3X_5X_WEIGHT: foo:8816440:176635
3X_5X_WEIGHT-NEXT: 7: 176635
3X_5X_WEIGHT-NEXT: 8: 176635
3X_5X_WEIGHT-NEXT: 9: 34650
3X_5X_WEIGHT-NEXT: 10: 146705
3X_5X_WEIGHT-NEXT: 11: 59530
3X_5X_WEIGHT-NEXT: 13: 90925 foo:97655
3X_5X_WEIGHT-NEXT: 15: 182290
3X_5X_WEIGHT-NEXT: bar:5316111:106110
3X_5X_WEIGHT-NEXT: 17: 106110
3X_5X_WEIGHT-NEXT: 18: 106110
3X_5X_WEIGHT-NEXT: 19: 21015
3X_5X_WEIGHT-NEXT: 20: 88221
3X_5X_WEIGHT-NEXT: 21: 36510
3X_5X_WEIGHT-NEXT: 23: 54450 bar:59487
3X_5X_WEIGHT-NEXT: 25: 109998
3- Bad merge: invalid weight
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=0,%p/Inputs/weight-sample-foo.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=0.75,%p/Inputs/weight-sample-foo.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=-5,%p/Inputs/weight-sample-foo.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=,%p/Inputs/weight-sample-foo.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=%p/Inputs/weight-sample-foo.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
INVALID_WEIGHT: error: Input weight must be a positive integer.
4- Bad merge: input path does not exist
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/does-not-exist.proftext -weighted-input=2,%p/Inputs/does-not-exist-either.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_INPUT
INVALID_INPUT: {{.*}}: {{.*}}does-not-exist.proftext: {{[Nn]}}o such file or directory
5- No inputs
RUN: not llvm-profdata merge -sample -o %t.out 2>&1 | FileCheck %s -check-prefix=NO_INPUT
NO_INPUT: {{.*}}: No input files specified. See llvm-profdata{{(\.EXE|\.exe)?}} merge -help