rapidsai/cudf

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

Open

#13,154 建立於 2023年4月17日

在 GitHub 查看
 (1 留言) (0 反應) (1 負責人)C++ (735 fork)batch import
0 - Backlogfeature requestgood first issuelibcudf

倉庫指標

Star
 (6,000 star)
PR 合併指標
 (平均合併 17天 21小時) (30 天內合併 230 個 PR)

描述

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>&&) { ... }

貢獻者指南