Skip to content

Commit 0e2fd24

Browse files
committed
Update on "[aoti-backend-consolidation 2/3] backend.py"
Differential Revision: [D85704977](https://our.internmc.facebook.com/intern/diff/D85704977/) [ghstack-poisoned]
2 parents 6657f78 + ba7e4d5 commit 0e2fd24

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

exir/backend/backend_api.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from contextlib import contextmanager, nullcontext
1111
from dataclasses import dataclass
1212
from functools import singledispatch
13-
from typing import Dict, Generator, List, Mapping
13+
from typing import Dict, Generator, List, Mapping, Set
1414

1515
import torch
1616

@@ -581,9 +581,21 @@ def lower_all_submodules_to_backend(
581581
for method_name, call_submodule_nodes in method_to_submodules_nodes.items()
582582
}
583583

584+
def _get_all_final_backend_details_subclasses(cls) -> Set[type]:
585+
subclasses = set()
586+
for subclass in cls.__subclasses__():
587+
# Check if subclass is a final class (marked as @final)
588+
if getattr(subclass, "__final__", False):
589+
subclasses.add(subclass)
590+
# Recursively check subclasses
591+
subclasses.update(_get_all_final_backend_details_subclasses(subclass))
592+
return subclasses
593+
584594
backend_name_to_subclass = {
585-
subclass.__name__: subclass for subclass in BackendDetails.__subclasses__()
595+
subclass.__name__: subclass
596+
for subclass in _get_all_final_backend_details_subclasses(BackendDetails)
586597
}
598+
587599
if backend_id not in backend_name_to_subclass:
588600
raise NotImplementedError(f"Backend {backend_id} was not found.")
589601

0 commit comments

Comments
 (0)