diff --git a/scripts/codegen/gen_backend_stubs.py b/scripts/codegen/gen_backend_stubs.py index 7fe0321a777c3ee2e48bbaae3dd5dccc4b105480..9d8056a254736f159a45a14e57b0cdd0762bd9dc 100644 --- a/scripts/codegen/gen_backend_stubs.py +++ b/scripts/codegen/gen_backend_stubs.py @@ -242,10 +242,16 @@ def error_on_missing_kernels( expected_backend_kernel_name_counts[dispatcher.name(native_f.func)].append(native_f) missing_kernels_err_msg = "" + unsupported_ops_list = "" for expected_name, funcs in expected_backend_kernel_name_counts.items(): expected_overload_count = len(funcs) actual_overload_count = actual_backend_kernel_name_counts[expected_name] - if expected_overload_count != actual_overload_count: + if actual_overload_count == 0: + for func in funcs: + backend_indices[backend_key].index.pop(func.func.name, None) + backend_indices[autograd_key].index.pop(func.func.name, None) + unsupported_ops_list += f"{func.func.name}\n" + elif expected_overload_count != actual_overload_count: def create_decl(f: NativeFunction) -> str: with native_function_manager(f): return DispatcherSignature.from_schema(f.func).decl() @@ -256,6 +262,8 @@ but expected {expected_overload_count} kernel(s). The expected function schemas {expected_schemas_str} """ assert missing_kernels_err_msg == "", missing_kernels_err_msg + if unsupported_ops_list != "": + print(f"Unsupported Ops List:\n{unsupported_ops_list}") def main() -> None: parser = argparse.ArgumentParser(description='Generate backend stub files') diff --git a/scripts/generate_code.sh b/scripts/generate_code.sh index b00a8d685fc47996fb0b44fbff020752ae27aecb..8e8cc4ada8774eef4cb92823399e4c3ac5b71680 100644 --- a/scripts/generate_code.sh +++ b/scripts/generate_code.sh @@ -30,9 +30,20 @@ python3 -m codegen.gen_backend_stubs \ --source_yaml="$NDIR/torch_npu/csrc/aten/npu_native_functions.yaml" \ --impl_path="$NDIR/torch_npu/csrc/aten" # Used to double-check the yaml file definitions. +if [ $? -ne 0 ]; then + echo "Failed to generate NPU backend stubs." + mv -f codegen/native_functions.yaml_bk codegen/native_functions.yaml + exit 1 +fi + mv -f codegen/native_functions.yaml_bk codegen/native_functions.yaml python3 -m codegen.gen_python_functions \ --output_dir="$NDIR/torch_npu/csrc/" \ --source_yaml="$NDIR/torch_npu/csrc/aten/npu_native_functions.yaml" \ - --template_path="$NDIR/scripts/codegen/templates" \ No newline at end of file + --template_path="$NDIR/scripts/codegen/templates" + +if [ $? -ne 0 ]; then + echo "Failed to generate python bindings." + exit 1 +fi \ No newline at end of file diff --git a/setup.py b/setup.py index facd108a1eb43dd11c96e0fd533e7c561a99742b..c7ebcbea64422d11d515053812a4cd64044c94b2 100644 --- a/setup.py +++ b/setup.py @@ -18,7 +18,6 @@ import inspect import multiprocessing import multiprocessing.pool import os -import platform import re import shutil import subprocess @@ -149,10 +148,11 @@ class Clean(distutils.command.clean.clean): class Build(build_ext, object): - def run(self): - # Run the original BuildExtension first. We need this before building - # the tests. - build_ext.run(self) + def build_extensions(self): + if self.compiler and '-Wstrict-prototypes' in self.compiler.compiler_so: + self.compiler.compiler_so.remove('-Wstrict-prototypes') + + return super(Build, self).build_extensions() build_mode = _get_build_mode()