选择#
此页面提供 cuvs/selection
包中公开元素的 C++ 类参考。
Select-K#
#include <cuvs/selection/select_k.hpp>
namespace cuvs::selection
- group 批量选择 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);
- 参数:
handle – [in] 可重用资源的容器
in_val – [in] 输入值 [batch_size, len];这些值将被比较和选择。
in_idx – [in] 可选的输入负载 [batch_size, len];通常,这些是对应
in_val
的索引。如果in_idx
为std::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)或最大(false)的键。
sorted – [in] 是否确保选定的对按值排序
algo – [in] 要使用的选择算法
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);
- 参数:
handle – [in] 可重用资源的容器
in_val – [in] 输入值 [batch_size, len];这些值将被比较和选择。
in_idx – [in] 可选的输入负载 [batch_size, len];通常,这些是对应
in_val
的索引。如果in_idx
为std::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)或最大(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);
- 参数:
handle – [in] 可重用资源的容器
in_val – [in] 输入值 [batch_size, len];这些值将被比较和选择。
in_idx – [in] 可选的输入负载 [batch_size, len];通常,这些是对应
in_val
的索引。如果in_idx
为std::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)或最大(false)的键。
sorted – [in] 是否确保选定的对按值排序
algo – [in] 要使用的选择算法
len_i – [in] 大小为 (batch_size) 的可选数组,提供每行的长度