|
|
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 () |
| | Calculate the dimension of sliced tensor.
|
| |
|
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 > |
| LINALG_HD constexpr 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) |
| | Convert index from parameter pack to C-style array.
|
| |
|
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]) |
| | Convert C-styple array to std::tuple.
|
| |
|
template<typename I , 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) |
| |
|
template<typename Fn , typename Tup , size_t... I> |
| LINALG_HD decltype(auto) constexpr | xgboost::linalg::detail::Apply (Fn &&f, Tup &&t, std::index_sequence< I... >) |
| |
| template<typename Fn , typename Tup > |
| LINALG_HD decltype(auto) constexpr | xgboost::linalg::detail::Apply (Fn &&f, Tup &&t) |
| | C++ 17 style apply.
|
| |
|
constexpr detail::AllTag | xgboost::linalg::All () |
| | Specify all elements in the axis for slicing.
|
| |
|
template<typename I > |
| constexpr detail::RangeTag< I > | xgboost::linalg::Range (I beg, I end) |
| | Specify a range of elements in the axis for slicing.
|
| |
|
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) |
| | Constructor for automatic type deduction.
|
| |
|
template<typename T , typename... S> |
| LINALG_HD auto | xgboost::linalg::MakeTensorView (std::int32_t device, common::Span< T > data, S &&...shape) |
| |
|
template<typename T , typename... S> |
| auto | xgboost::linalg::MakeTensorView (Context const *ctx, common::Span< T > 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) |
| | Turns linear index into multi-dimension index.
|
| |
|
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, int32_t device=-1) |
| | Create a vector view from contigious memory.
|
| |
|
template<typename T > |
| auto | xgboost::linalg::MakeVec (HostDeviceVector< T > *data) |
| |
|
template<typename T > |
| auto | xgboost::linalg::MakeVec (HostDeviceVector< T > const *data) |
| |
| template<typename T , int32_t D> |
| Json | xgboost::linalg::ArrayInterface (TensorView< T const, D > const &t) |
| | Array Interface defined by numpy.
|
| |
|
template<typename T , int32_t D> |
| Json | xgboost::linalg::ArrayInterface (TensorView< T, D > const &t) |
| | Same as const version, but returns non-readonly data pointer.
|
| |
|
template<typename T , int32_t D> |
| auto | xgboost::linalg::ArrayInterfaceStr (TensorView< T const, D > const &t) |
| | Return string representation of array interface.
|
| |
|
template<typename T , int32_t D> |
| auto | xgboost::linalg::ArrayInterfaceStr (TensorView< T, D > const &t) |
| |
|
template<typename T , typename... Index> |
| auto | xgboost::linalg::Empty (Context const *ctx, Index &&...index) |
| | Create an array without initialization.
|
| |
|
template<typename T , typename... Index> |
| auto | xgboost::linalg::Constant (Context const *ctx, T v, Index &&...index) |
| | Create an array with value v.
|
| |
|
template<typename T , typename... Index> |
| auto | xgboost::linalg::Zeros (Context const *ctx, Index &&...index) |
| | Like np.zeros, return a new array of given shape and type, filled with zeros.
|
| |
|
template<typename T , int32_t D> |
| void | xgboost::linalg::Stack (Tensor< T, D > *l, Tensor< T, D > const &r) |
| |
Copyright 2021-2023 by XGBoost Contributors.
Linear algebra related utilities.