Currently, many of Alpaka operators (like Gather, Split, BasicBinary, and BasicUnary operators except softplus in #13 ) don't register a specific ID in their constructor, so they all default to OperatorKind::UNDEFINED.
Because the code generator tries to skip generating duplicate kernels to save space, it sees the second UNDEFINED operator and skips generating its code. If a user runs a model with a Gather followed by a LeakyRelu, the compiler will crash with a leakyReluKernel was not declared in this scope error.
to fix this, we need to expand the OperatorKind enum in Roperator.hxx and make sure every operator assigns itself a unique ID in its constructor so they stop clashing.
Currently, many of Alpaka operators (like Gather, Split, BasicBinary, and BasicUnary operators except softplus in #13 ) don't register a specific ID in their constructor, so they all default to OperatorKind::UNDEFINED.
Because the code generator tries to skip generating duplicate kernels to save space, it sees the second UNDEFINED operator and skips generating its code. If a user runs a model with a Gather followed by a LeakyRelu, the compiler will crash with a leakyReluKernel was not declared in this scope error.
to fix this, we need to expand the OperatorKind enum in Roperator.hxx and make sure every operator assigns itself a unique ID in its constructor so they stop clashing.