The remnants of the RAFT->cuVS migration, the two definitions CUVS_EXPLICIT_INSTANTIATE_ONLY and RAFT_COMPILED are still used internally in cuVS, but never defined.
As a result, *-ext.cuh files are never touched by the compiler and the detection of implicit instantiation is broken.
I'm not sure if we still need this in cuVS though. On the one hand, since the public API is free of templates, the implicit instantiation on the user side is not possible. On the other hand, these checks still have a value internally in cuVS - to make sure all relevant kernel instances are compiled in separate files in parallel and get used by the calling templated code (rather than re-compiled at the call side).
In any case, we either should remove these constructs or fix and use them.
The remnants of the RAFT->cuVS migration, the two definitions CUVS_EXPLICIT_INSTANTIATE_ONLY and RAFT_COMPILED are still used internally in cuVS, but never defined.
As a result,
*-ext.cuhfiles are never touched by the compiler and the detection of implicit instantiation is broken.I'm not sure if we still need this in cuVS though. On the one hand, since the public API is free of templates, the implicit instantiation on the user side is not possible. On the other hand, these checks still have a value internally in cuVS - to make sure all relevant kernel instances are compiled in separate files in parallel and get used by the calling templated code (rather than re-compiled at the call side).
In any case, we either should remove these constructs or fix and use them.