We have a custom target and a few custom strategies/schedules, but want to revert to the generic strategy for most operators, (softmax, for example). For such operators, since there is no custom strategy, it reverts to “default_strategy” which contains this line:
if target.kind.name not in ("llvm", "c"): raise RuntimeError("schedule not registered for '%s'" % target)
Sure enough, this error gets thrown since my target is not “llvm” or “c”. I tried using relay.build with target set to a few other custom targets (hexagon, stackvm) and the same error is thrown.
Am I doing something wrong or is it just a requirement that any target that’s not c or llvm must register strategies for every operator instead of using defaults?
Also it seems to me that the idea of ‘target’ and the code generation method for a target is conflated somewhat. Our target generates C that’s compiled by our offline C compiler, but we have customized the C backend so we can’t just make the target “c -cpu=whatever”; to have a custom backend you need a distinct target kind.