JIT compiling CAGRA search kernels is going to be pretty challenging. Currently, at least the single-cta search kernels use: 1. some kind of function-pointer indirection to load data and compute distance 2. the device functions for these are allocated in memory by launching a separate kernel 3. this doesn’t work in JIT-LTO because each kernel we compile is its own module, meaning we can’t share device function pointer addresses 4. we will need to reverse almost all of https://github.com/rapidsai/cuvs/pull/296
JIT compiling CAGRA search kernels is going to be pretty challenging. Currently, at least the single-cta search kernels use: