aboutsummaryrefslogtreecommitdiff
path: root/verif/conformance/README.md
blob: 0869ab6bf20e76dbc8337fc392efe14e9b801b6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# Conformance

This directory contains the scripts and data files to generate the conformance tests.

The data files are in JSON format and they describe what tests to create and/or select from the `tosa_verif_build_tests` and `tosa_verif_framework_*` generator scripts.

## JSON files

### TOSA ops

Naming: `tosa_PPP_profile_ops_info.json`

Contains a dictionary of operator names.
Where `PPP` is the profile subset of either `base` for all integer tests, or `main` for all floating point tests.

Each operator entry contains:

* "group" - name of the group this operator is in, in the spec
* "profile" - list of profiles that this operator covers
* "support_for" - optional list of supported creation modes out of: lazy_data_gen (data generation just before test run)
* "gen_filter" - optional filter string for op to give to tosa_verif_build_tests - defaults to "^opname$"
* "generation" - dictionary of test generation details - see below
* "selection" - dictionary of test selection details - see below

In the generation dictionary each entry is a name for a generation group -
a set of tests generated together and then selected from using the selection
criteria.

Each generation group is a dictionary that contains:

* "from_version" - optional version string for when the tests have been introduced in TOSA
of the form "vM.mm.p" where `M` is the major version, `mm` is the minor version
and `p` is the patch version
* "no_negative_tests" - optional "true" indicator that no negative tests are relevant/generated
* "negative_dim_range" - optional range of dimensions for negative tests
* "generator_args" - list of argument lists to supply to the `tosa_verif_build_tests` (see that tool for more details)
* "selector" - optional name for the selection criteria to use for this generation group, if not supplied "default" will be used

In the selection dictionary each entry is a name for a selection criteria - there must be one called "default" which is used by default. Others may exist and be used by the different generation groups.

Each selection criteria is a dictionary that contains:

* "all": "true" - to select all tests (and not use test_select)

or (more information for each entry in `test_select.py`):

* "params" - optional dictionary with mappings of parameter names to the values to select
* "permutes" - optional list of parameter names to be permuted
* "preselected" - optional list of dictionaries containing parameter names and pre-chosen values
* "sparsity" - optional dictionary of parameter names with a sparsity value
* "exclude_patterns" - optional list of regex's whereby each match will not be considered for selection. Exclusion happens BEFORE test selection (i.e.
before permutes are applied)
* "errorifs" - optional list of ERRORIF case names to be selected after exclusion (negative tests)

### Framework ops

DEPRECATED - not supported for conformance testing.

NOTE: Currently assumed all framework ops will be TFLite.

Naming: `tosa_PPP_profile_framework_ops_info.json`

Contains a dictionary of operator names.
Where `PPP` is the profile subset of either `base` for all integer tests, or `main` for all floating point tests.

Each operator entry contains:

* "tests" - list of tests to be part of conformance
* "profile" - list of profiles that these tests cover
* "alternate_names" - optional list of names that are used by the framework test generator and can be renamed to the operator name.

Example:
```
    "average_pool_2d": {
        "alternate_names": [
            "avg_pool2d"
        ],
        "tests": [
            "average_pool_2d_1x4x4x4_qi8_st11_padSAME_kern11",
            "average_pool_2d_1x4x8x19_qi16_st21_padSAME_kern22",
            "average_pool_2d_1x7x7x9_qi8_st22_padSAME_kern11",
            "average_pool_2d_1x32x32x8_qu8_st12_padVALID_kern12",
            "average_pool_2d_1x8x4x17_qu8_st21_padVALID_kern21"
        ],
        "profile": [
            "tosa-bi",
            "tosa-mi"
        ]
    },
```