|  | 
| template<size_t dim, typename S , typename Head , size_t D> | 
| constexpr size_t | xgboost::linalg::detail::Offset (S(&strides)[D], size_t n, Head head) | 
|  | 
| template<size_t dim, typename S , size_t D, typename Head , typename... Tail> | 
| constexpr std::enable_if_t< sizeof...(Tail) !=0, size_t > | xgboost::linalg::detail::Offset (S(&strides)[D], size_t n, Head head, Tail &&...rest) | 
|  | 
| template<int32_t D, bool f_array = false> | 
| constexpr void | xgboost::linalg::detail::CalcStride (size_t const (&shape)[D], size_t(&stride)[D]) | 
|  | 
| template<typename T > | 
| constexpr int32_t | xgboost::linalg::detail::CalcSliceDim () | 
|  | 计算切片张量的维度。 更多... 
 | 
|  | 
| template<typename T , typename... S> | 
| constexpr std::enable_if_t< sizeof...(S) !=0, int32_t > | xgboost::linalg::detail::CalcSliceDim () | 
|  | 
| template<int32_t D> | 
| constexpr size_t | xgboost::linalg::detail::CalcSize (size_t(&shape)[D]) | 
|  | 
| template<int32_t n, typename Fn > | 
| constexpr LINALG_HD auto | xgboost::linalg::detail::UnrollLoop (Fn fn) | 
|  | 
| template<typename T > | 
| int32_t | xgboost::linalg::detail::NativePopc (T v) | 
|  | 
| LINALG_HD int | xgboost::linalg::detail::Popc (uint32_t v) | 
|  | 
| LINALG_HD int | xgboost::linalg::detail::Popc (uint64_t v) | 
|  | 
| template<std::size_t D, typename Head > | 
| LINALG_HD void | xgboost::linalg::detail::IndexToArr (std::size_t(&arr)[D], Head head) | 
|  | 
| template<std::size_t D, typename Head , typename... Rest> | 
| LINALG_HD void | xgboost::linalg::detail::IndexToArr (std::size_t(&arr)[D], Head head, Rest &&...index) | 
|  | 将索引从参数包转换为 C 风格数组。 更多... 
 | 
|  | 
| template<class T , std::size_t N, std::size_t... Idx> | 
| constexpr auto | xgboost::linalg::detail::ArrToTuple (T(&arr)[N], std::index_sequence< Idx... >) | 
|  | 
| template<class T , std::size_t N> | 
| constexpr auto | xgboost::linalg::detail::ArrToTuple (T(&arr)[N]) | 
|  | 将 C 风格数组转换为 std::tuple。 更多... 
 | 
|  | 
| template<typename I , std::int32_t D> | 
| LINALG_HD auto | xgboost::linalg::detail::UnravelImpl (I idx, common::Span< size_t const, D > shape) | 
|  | 
| template<size_t dim, typename I , int32_t D> | 
| void | xgboost::linalg::detail::ReshapeImpl (size_t(&out_shape)[D], I s) | 
|  | 
| template<size_t dim, int32_t D, typename... S, typename I , std::enable_if_t< sizeof...(S) !=0 > * = nullptr> | 
| void | xgboost::linalg::detail::ReshapeImpl (size_t(&out_shape)[D], I &&s, S &&...rest) | 
|  | 
| constexpr detail::AllTag | xgboost::linalg::All () | 
|  | 指定用于切片的轴中的所有元素。 更多... 
 | 
|  | 
| template<typename I > | 
| constexpr detail::RangeTag< I > | xgboost::linalg::Range (I beg, I end) | 
|  | 指定用于切片的轴中的元素范围。 更多... 
 | 
|  | 
| template<typename Container , typename... S, std::enable_if_t<!common::detail::IsSpan< Container >::value &&!std::is_pointer_v< Container >> * = nullptr> | 
| auto | xgboost::linalg::MakeTensorView (Context const *ctx, Container &data, S &&...shape) | 
|  | 用于自动类型推断的构造函数。 更多... 
 | 
|  | 
| template<typename T , decltype(common::dynamic_extent) ext, typename... S> | 
| LINALG_HD auto | xgboost::linalg::MakeTensorView (DeviceOrd device, common::Span< T, ext > data, S &&...shape) | 
|  | 
| template<typename T , decltype(common::dynamic_extent) ext, typename... S> | 
| auto | xgboost::linalg::MakeTensorView (Context const *ctx, common::Span< T, ext > data, S &&...shape) | 
|  | 
| template<typename T , decltype(common::dynamic_extent) ext, typename... S> | 
| auto | xgboost::linalg::MakeTensorView (Context const *ctx, Order order, common::Span< T, ext > data, S &&...shape) | 
|  | 
| template<typename T , typename... S> | 
| auto | xgboost::linalg::MakeTensorView (Context const *ctx, HostDeviceVector< T > *data, S &&...shape) | 
|  | 
| template<typename T , typename... S> | 
| auto | xgboost::linalg::MakeTensorView (Context const *ctx, HostDeviceVector< T > const *data, S &&...shape) | 
|  | 
| template<size_t D> | 
| LINALG_HD auto | xgboost::linalg::UnravelIndex (size_t idx, common::Span< size_t const, D > shape) | 
|  | 将线性索引转换为多维索引。类似于 numpy unravel。 更多... 
 | 
|  | 
| template<size_t D> | 
| LINALG_HD auto | xgboost::linalg::UnravelIndex (size_t idx, std::size_t const (&shape)[D]) | 
|  | 
| template<typename... S> | 
| LINALG_HD auto | xgboost::linalg::UnravelIndex (std::size_t idx, S... shape) | 
|  | 
| template<typename T > | 
| auto | xgboost::linalg::MakeVec (T *ptr, size_t s, DeviceOrd device=DeviceOrd::CPU()) | 
|  | 从连续内存创建向量视图。 更多... 
 | 
|  | 
| template<typename T > | 
| auto | xgboost::linalg::MakeVec (HostDeviceVector< T > *data) | 
|  | 
| template<typename T > | 
| auto | xgboost::linalg::MakeVec (HostDeviceVector< T > const *data) | 
|  | 
| template<typename T , std::int32_t D> | 
| Json | xgboost::linalg::ArrayInterface (TensorView< T const, D > const &t) | 
|  | numpy 定义的数组接口。 更多... 
 | 
|  | 
| template<typename T , int32_t D> | 
| Json | xgboost::linalg::ArrayInterface (TensorView< T, D > const &t) | 
|  | 与 const 版本相同,但返回非只读数据指针。 更多... 
 | 
|  | 
| template<typename T , int32_t D> | 
| auto | xgboost::linalg::ArrayInterfaceStr (TensorView< T const, D > const &t) | 
|  | 返回数组接口的字符串表示。 更多... 
 | 
|  | 
| template<typename T , int32_t D> | 
| auto | xgboost::linalg::ArrayInterfaceStr (TensorView< T, D > const &t) | 
|  | 
| template<typename T > | 
| auto | xgboost::linalg::Make1dInterface (T const *vec, std::size_t len) | 
|  | 
| template<typename T , typename... Index> | 
| auto | xgboost::linalg::Empty (Context const *ctx, Index &&...index) | 
|  | 创建未初始化的数组。 更多... 
 | 
|  | 
| template<typename T , typename... Index> | 
| auto | xgboost::linalg::Constant (Context const *ctx, T v, Index &&...index) | 
|  | 创建值为 v 的数组。 更多... 
 | 
|  | 
| template<typename T , typename... Index> | 
| auto | xgboost::linalg::Zeros (Context const *ctx, Index &&...index) | 
|  | 类似于 `np.zeros`,返回一个给定形状和类型的新数组,并用零填充。 更多... 
 | 
|  | 
| template<typename T , int32_t D> | 
| void | xgboost::linalg::Stack (Tensor< T, D > *l, Tensor< T, D > const &r) | 
|  |