选择#

本页面提供了cuvs/selection包中公开元素的C++类参考。

选择-K#

#include

命名空间 cuvs::selection

group select_k

函数

void select_k(raft::resources const &handle, raft::device_matrix_view<const float, int64_t, raft::row_major> in_val, std::optional<raft::device_matrix_view<const int64_t, int64_t, raft::row_major>> in_idx, raft::device_matrix_view<float, int64_t, raft::row_major> out_val, raft::device_matrix_view<int64_t, int64_t, raft::row_major> out_idx, bool select_min, bool sorted = false, SelectAlgo algo = SelectAlgo::kAuto, std::optional<raft::device_vector_view<const int64_t, int64_t>> len_i = std::nullopt)#

从输入数据的每一行中选择k个最小或最大的键/值。

如果你将输入数据 in_val 视为一个具有 len 列和 batch_size 行的行主序矩阵,那么此函数会在每一行中选择 k 个最小/最大值,并填充大小为 (batch_size, k) 的行主序矩阵 out_val

示例用法

using namespace raft;
// get a 2D row-major array of values to search through
auto in_values = {... input device_matrix_view<const float, int64_t, row_major> ...}
// prepare output arrays
auto out_extents = make_extents<int64_t>(in_values.extent(0), k);
auto out_values  = make_device_mdarray<float>(handle, out_extents);
auto out_indices = make_device_mdarray<int64_t>(handle, out_extents);
// search `k` smallest values in each row
cuvs::selection::select_k(
  handle, in_values, std::nullopt, out_values.view(), out_indices.view(), true);

Parameters:
  • handle[in] container of reusable resources

  • in_val[in] inputs values [batch_size, len]; these are compared and selected.

  • in_idx[in] optional input payload [batch_size, len]; typically, these are indices of the corresponding in_val. If in_idx is std::nullopt, a contiguous array 0...len-1 is implied.

  • out_val[out] output values [batch_size, k]; the k smallest/largest values from each row of the in_val.

  • out_idx[out] output payload (e.g. indices) [batch_size, k]; the payload selected together with out_val.

  • select_min[in] whether to select k smallest (true) or largest (false) keys.

  • sorted[in] whether to make sure selected pairs are sorted by value

  • algo[in] the selection algorithm to use

  • len_i[in] 可选的大小为 (batch_size) 的数组,提供每行的长度

void select_k(raft::resources const &handle, raft::device_matrix_view<const float, int64_t, raft::row_major> in_val, std::optional<raft::device_matrix_view<const int, int64_t, raft::row_major>> in_idx, raft::device_matrix_view<float, int64_t, raft::row_major> out_val, raft::device_matrix_view<int, int64_t, raft::row_major> out_idx, bool select_min, bool sorted = false, SelectAlgo algo = SelectAlgo::kAuto, std::optional<raft::device_vector_view<const int, int64_t>> len_i = std::nullopt)#
void select_k(raft::resources const &handle, raft::device_matrix_view<const float, int64_t, raft::row_major> in_val, std::optional<raft::device_matrix_view<const uint32_t, int64_t, raft::row_major>> in_idx, raft::device_matrix_view<float, int64_t, raft::row_major> out_val, raft::device_matrix_view<uint32_t, int64_t, raft::row_major> out_idx, bool select_min, bool sorted = false, SelectAlgo algo = SelectAlgo::kAuto, std::optional<raft::device_vector_view<const uint32_t, int64_t>> len_i = std::nullopt)#

从输入数据的每一行中选择k个最小或最大的键/值。

如果你将输入数据 in_val 视为一个具有 len 列和 batch_size 行的行主序矩阵,那么此函数会在每一行中选择 k 个最小/最大值,并填充大小为 (batch_size, k) 的行主序矩阵 out_val

示例用法

using namespace raft;
// get a 2D row-major array of values to search through
auto in_values = {... input device_matrix_view<const float, int64_t, row_major> ...}
// prepare output arrays
auto out_extents = make_extents<int64_t>(in_values.extent(0), k);
auto out_values  = make_device_mdarray<float>(handle, out_extents);
auto out_indices = make_device_mdarray<uint32_t>(handle, out_extents);
// search `k` smallest values in each row
cuvs::selection::select_k(
  handle, in_values, std::nullopt, out_values.view(), out_indices.view(), true);

Parameters:
  • handle[in] 可重用资源的容器

  • in_val[in] 输入值 [batch_size, len];这些值被比较和选择。

  • in_idx[in] 可选的输入载荷 [batch_size, len];通常,这些是相应的 in_val 的索引。如果 in_idxstd::nullopt,则隐含一个连续的数组 0...len-1

  • out_val[out] 输出值 [batch_size, k]; 来自 in_val 每一行的 k 个最小/最大值。

  • out_idx[out] 输出有效载荷(例如索引)[batch_size, k];与 out_val 一起选择的有效载荷。

  • select_min[in] 是否选择最小的k个键(true)或最大的k个键(false)。

  • sorted[in] 是否确保选定的对按值排序

  • algo[in] 使用的选择算法

  • len_i[in] 可选的大小为 (batch_size) 的数组,提供每行的长度

void select_k(raft::resources const &handle, raft::device_matrix_view<const half, int64_t, raft::row_major> in_val, std::optional<raft::device_matrix_view<const uint32_t, int64_t, raft::row_major>> in_idx, raft::device_matrix_view<half, int64_t, raft::row_major> out_val, raft::device_matrix_view<uint32_t, int64_t, raft::row_major> out_idx, bool select_min, bool sorted = false, SelectAlgo algo = SelectAlgo::kAuto, std::optional<raft::device_vector_view<const uint32_t, int64_t>> len_i = std::nullopt)#

从输入数据的每一行中选择k个最小或最大的键/值。

如果你将输入数据 in_val 视为一个具有 len 列和 batch_size 行的行主序矩阵,那么此函数会在每一行中选择 k 个最小/最大值,并填充大小为 (batch_size, k) 的行主序矩阵 out_val

示例用法

using namespace raft;
// get a 2D row-major array of values to search through
auto in_values = {... input device_matrix_view<const half, int64_t, row_major> ...}
// prepare output arrays
auto out_extents = make_extents<int64_t>(in_values.extent(0), k);
auto out_values  = make_device_mdarray<half>(handle, out_extents);
auto out_indices = make_device_mdarray<uint32_t>(handle, out_extents);
// search `k` smallest values in each row
cuvs::selection::select_k(
  handle, in_values, std::nullopt, out_values.view(), out_indices.view(), true);

Parameters:
  • handle[in] 可重用资源的容器

  • in_val[in] 输入值 [batch_size, len];这些值被比较和选择。

  • in_idx[in] 可选的输入载荷 [batch_size, len];通常,这些是相应的 in_val 的索引。如果 in_idxstd::nullopt,则隐含一个连续的数组 0...len-1

  • out_val[out] 输出值 [batch_size, k]; 来自 in_val 每一行的 k 个最小/最大值。

  • out_idx[out] 输出负载(例如索引)[batch_size, k];与 out_val 一起选择的负载。

  • select_min[in] 是否选择最小的k个键(true)或最大的k个键(false)。

  • sorted[in] 是否确保选定的对按值排序

  • algo[in] 使用的选择算法

  • len_i[in] 可选的大小为 (batch_size) 的数组,提供每行的长度