(functional, input_type, *, tv_tensor_wrapper=True)
| 36 | |
| 37 | |
| 38 | def _register_kernel_internal(functional, input_type, *, tv_tensor_wrapper=True): |
| 39 | registry = _KERNEL_REGISTRY.setdefault(functional, {}) |
| 40 | if input_type in registry: |
| 41 | raise ValueError(f"Functional {functional} already has a kernel registered for type {input_type}.") |
| 42 | |
| 43 | def decorator(kernel): |
| 44 | registry[input_type] = ( |
| 45 | _kernel_tv_tensor_wrapper(kernel) |
| 46 | if issubclass(input_type, tv_tensors.TVTensor) and tv_tensor_wrapper |
| 47 | else kernel |
| 48 | ) |
| 49 | return kernel |
| 50 | |
| 51 | return decorator |
| 52 | |
| 53 | |
| 54 | def _name_to_functional(name): |
no outgoing calls
searching dependent graphs…