The documentation on implementing new backends points to RegistrationDeclaration.h. I noticed that existing implementations register functions with slightly different signatures. For instance:
implemented version refers to the backend right - cpu/cuda etc? In that case, dispatcher can distinguish across the implementations. It maintains a dispatch table and dispatches the operation to the corresponding backend.
I read that blog post. It’s just that some implementations seem to assume more specialized types in the function arguments. AFAIK the dispatcher won’t know about that.