mirror of https://github.com/llvm/torch-mlir
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
parent
769f3a8870
commit
3b5310d6d2
|
@ -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 = [
|
||||||
|
|
|
@ -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({
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue