Move COMMON_TORCH_MLIR_LOWERING_XFAILS into test_suite

That way, downstreams don't have to duplicate this list.

Also, remove "external config" feature, since it is subsumed by just
importing the test suite.
pull/769/head snapshot-20220419.399
Sean Silva 2022-04-19 19:35:56 +00:00
parent 769f3a8870
commit 3b5310d6d2
3 changed files with 20 additions and 47 deletions

View File

@ -4,16 +4,15 @@
# Also available under a BSD-style license. See LICENSE. # Also available under a BSD-style license. See LICENSE.
import argparse import argparse
import os
import pickle
import re import re
import sys import sys
from torch_mlir_e2e_test.torchscript.framework import TestConfig, run_tests from torch_mlir_e2e_test.torchscript.framework import run_tests
from torch_mlir_e2e_test.torchscript.reporting import report_results from torch_mlir_e2e_test.torchscript.reporting import report_results
from torch_mlir_e2e_test.torchscript.registry import GLOBAL_TEST_REGISTRY from torch_mlir_e2e_test.torchscript.registry import GLOBAL_TEST_REGISTRY
from torch_mlir_e2e_test.torchscript.serialization import deserialize_all_tests_from from torch_mlir_e2e_test.torchscript.serialization import deserialize_all_tests_from
# Available test configs. # Available test configs.
from torch_mlir_e2e_test.torchscript.configs import ( from torch_mlir_e2e_test.torchscript.configs import (
LinalgOnTensorsBackendTestConfig, NativeTorchTestConfig, TorchScriptTestConfig, TosaBackendTestConfig, EagerModeTestConfig LinalgOnTensorsBackendTestConfig, NativeTorchTestConfig, TorchScriptTestConfig, TosaBackendTestConfig, EagerModeTestConfig
@ -22,14 +21,14 @@ from torch_mlir_e2e_test.torchscript.configs import (
from torch_mlir_e2e_test.linalg_on_tensors_backends.refbackend import RefBackendLinalgOnTensorsBackend from torch_mlir_e2e_test.linalg_on_tensors_backends.refbackend import RefBackendLinalgOnTensorsBackend
from torch_mlir_e2e_test.tosa_backends.linalg_on_tensors import LinalgOnTensorsTosaBackend from torch_mlir_e2e_test.tosa_backends.linalg_on_tensors import LinalgOnTensorsTosaBackend
from .xfail_sets import REFBACKEND_XFAIL_SET, TOSA_PASS_SET, COMMON_TORCH_MLIR_LOWERING_XFAILS, EAGER_MODE_XFAIL_SET from .xfail_sets import REFBACKEND_XFAIL_SET, TOSA_PASS_SET, EAGER_MODE_XFAIL_SET
# Import tests to register them in the global registry. # Import tests to register them in the global registry.
from torch_mlir_e2e_test.test_suite import register_all_tests from torch_mlir_e2e_test.test_suite import register_all_tests
register_all_tests() register_all_tests()
def _get_argparse(): def _get_argparse():
config_choices = ['native_torch', 'torchscript', 'refbackend', 'tosa', 'external', 'eager_mode'] config_choices = ['native_torch', 'torchscript', 'refbackend', 'tosa', 'eager_mode']
parser = argparse.ArgumentParser(description='Run torchscript e2e tests.') parser = argparse.ArgumentParser(description='Run torchscript e2e tests.')
parser.add_argument('-c', '--config', parser.add_argument('-c', '--config',
choices=config_choices, choices=config_choices,
@ -40,18 +39,7 @@ Meaning of options:
"tosa": run through torch-mlir's default TOSA backend. "tosa": run through torch-mlir's default TOSA backend.
"native_torch": run the torch.nn.Module as-is without compiling (useful for verifying model is deterministic; ALL tests should pass in this configuration). "native_torch": run the torch.nn.Module as-is without compiling (useful for verifying model is deterministic; ALL tests should pass in this configuration).
"torchscript": compile the model to a torch.jit.ScriptModule, and then run that as-is (useful for verifying TorchScript is modeling the program correctly). "torchscript": compile the model to a torch.jit.ScriptModule, and then run that as-is (useful for verifying TorchScript is modeling the program correctly).
"external": use an external backend, specified by the `--external-backend` option.
"eager_mode": run through torch-mlir's eager mode frontend, using RefBackend for execution. "eager_mode": run through torch-mlir's eager mode frontend, using RefBackend for execution.
''')
parser.add_argument('--external-config',
help=f'''
Specifies a path to a Python file, which will be `exec`'ed.
The file has the following contract:
- The global variable `config` should be set to an instance of `TestConfig`.
- `xfail_set` should be set to a set of test unique identifiers that are
expected to fail. The global `COMMON_TORCH_MLIR_LOWERING_XFAILS` provides
a common set of xfails that won't work on backends because torch-mlir
itself does not handle them.
''') ''')
parser.add_argument('-f', '--filter', default='.*', help=''' parser.add_argument('-f', '--filter', default='.*', help='''
Regular expression specifying which tests to include in this run. Regular expression specifying which tests to include in this run.
@ -94,24 +82,6 @@ def main():
elif args.config == 'eager_mode': elif args.config == 'eager_mode':
config = EagerModeTestConfig() config = EagerModeTestConfig()
xfail_set = EAGER_MODE_XFAIL_SET xfail_set = EAGER_MODE_XFAIL_SET
elif args.config == 'external':
with open(args.external_config, 'r') as f:
code = compile(f.read(), args.external_config, 'exec')
exec_globals = {
'COMMON_TORCH_MLIR_LOWERING_XFAILS': COMMON_TORCH_MLIR_LOWERING_XFAILS}
exec(code, exec_globals)
config = exec_globals.get('config')
xfail_set = exec_globals.get('xfail_set')
if config is None or not isinstance(config, TestConfig):
print(
f'ERROR: the script {args.external_config} did not set a global variable `config`'
)
sys.exit(1)
if xfail_set is None:
print(
f'ERROR: the script {args.external_config} did not set a global variable `xfail_set`'
)
sys.exit(1)
# Find the selected tests, and emit a diagnostic if none are found. # Find the selected tests, and emit a diagnostic if none are found.
tests = [ tests = [

View File

@ -10,19 +10,8 @@
# (this includes down into lower parts of the stack, where a side table # (this includes down into lower parts of the stack, where a side table
# might be used to keep more elaborate sets of testing configurations). # might be used to keep more elaborate sets of testing configurations).
# Lists of tests that fail to even reach the backends. from torch_mlir_e2e_test.test_suite import COMMON_TORCH_MLIR_LOWERING_XFAILS
# These represent further work needed in torch-mlir to lower them properly
# to the backend contract.
COMMON_TORCH_MLIR_LOWERING_XFAILS = {
"QuantizedMLP_basic",
"TableBatchEmbeddingModule_basic",
"MobilenetV2Module_basic",
"MobilenetV3Module_basic",
"ConvolutionModule3D_basic",
"ConvolutionModule1D_basic",
"MaxPool2dWith3dInputModule_basic",
"MaxPool2dWithIndicesWith3dInputModule_basic",
}
REFBACKEND_XFAIL_SET = COMMON_TORCH_MLIR_LOWERING_XFAILS REFBACKEND_XFAIL_SET = COMMON_TORCH_MLIR_LOWERING_XFAILS
EAGER_MODE_XFAIL_SET = REFBACKEND_XFAIL_SET.union({ EAGER_MODE_XFAIL_SET = REFBACKEND_XFAIL_SET.union({

View File

@ -3,6 +3,20 @@
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
# Also available under a BSD-style license. See LICENSE. # Also available under a BSD-style license. See LICENSE.
# Lists of tests that fail to even reach the backends.
# These represent further work needed in torch-mlir to lower them properly
# to the backend contract.
COMMON_TORCH_MLIR_LOWERING_XFAILS = {
"QuantizedMLP_basic",
"TableBatchEmbeddingModule_basic",
"MobilenetV2Module_basic",
"MobilenetV3Module_basic",
"ConvolutionModule3D_basic",
"ConvolutionModule1D_basic",
"MaxPool2dWith3dInputModule_basic",
"MaxPool2dWithIndicesWith3dInputModule_basic",
}
def register_all_tests(): def register_all_tests():
"""Registers all the built-in E2E tests that Torch-MLIR provides.""" """Registers all the built-in E2E tests that Torch-MLIR provides."""
# Side-effecting import statements. # Side-effecting import statements.