[FEATURE]: Add multiset host-bulk `contains`
PointKernel opened this issue · comments
Is your feature request related to a problem? Please describe.
Add contains
and contains_async
APIs
Describe the solution you'd like
Two APIs we want to add:
/**
* @brief Indicates whether the keys in the range `[first, last)` are contained in the multiset.
*
* @note This function synchronizes the given stream. For asynchronous execution use
* `contains_async`.
*
* @tparam InputIt Device accessible input iterator
* @tparam OutputIt Device accessible output iterator assignable from `bool`
*
* @param first Beginning of the sequence of keys
* @param last End of the sequence of keys
* @param output_begin Beginning of the sequence of booleans for the presence of each key
* @param stream Stream used for executing the kernels
*/
template <typename InputIt, typename OutputIt>
void contains(InputIt first,
InputIt last,
OutputIt output_begin,
cuda_stream_ref stream = {}) const;
/**
* @brief Asynchronously indicates whether the keys in the range `[first, last)` are contained in
* the multiset.
*
* @tparam InputIt Device accessible input iterator
* @tparam OutputIt Device accessible output iterator assignable from `bool`
*
* @param first Beginning of the sequence of keys
* @param last End of the sequence of keys
* @param output_begin Beginning of the sequence of booleans for the presence of each key
* @param stream Stream used for executing the kernels
*/
template <typename InputIt, typename OutputIt>
void contains_async(InputIt first,
InputIt last,
OutputIt output_begin,
cuda_stream_ref stream = {}) const noexcept;
Describe alternatives you've considered
No response
Additional context
- Invoking the OA bass contains should be sufficient. Fairly easy to add.
- Overloads taking custom hasher and comparator are not needed for now
closed by #468