rapidsai/cudf

[FEA] Add overload for `set_null_mask` that accept result of `make_null_mask` directly

Open

#13 154 ouverte le 17 avr. 2023

Voir sur GitHub
 (1 commentaire) (0 réactions) (1 assigné)C++ (735 forks)batch import
0 - Backlogfeature requestgood first issuelibcudf

Métriques du dépôt

Stars
 (6 000 stars)
Métriques de merge PR
 (Merge moyen 17j 21h) (230 PRs mergées en 30 j)

Description

Currently, we have the make_null_mask API returning both null mask and null count:

template <typename ValidityIterator>
std::pair<rmm::device_buffer, cudf::size_type> make_null_mask(ValidityIterator begin,
                                                              ValidityIterator end)

However, the set_null_mask function can't accept that result. As such, we have to pass the result of make_null_mask into set_null_mask by two steps:

auto [null_mask, null_count] =
    cudf::test::detail::make_null_mask(valid_iter, valid_iter + input.size());
  output.set_null_mask(std::move(null_mask), null_count);

This is a bit inconvenient. We can do that in just one step like this:

output.set_null_mask(cudf::test::detail::make_null_mask(valid_iter, valid_iter + input.size()));

In order to do that, we need to have a new overload of set_null_mask that accept the return type of make_null_mask such as:

void set_null_mask(std::pair<rmm::device_buffer, cudf::size_type>&&) { ... }

Guide contributeur