xgboost

Classes | Namespaces | Macros | Typedefs | Functions
linalg.h File Reference

Linear algebra related utilities. More...

`#include <dmlc/endian.h>`
`#include <xgboost/base.h>`
`#include <xgboost/host_device_vector.h>`
`#include <xgboost/json.h>`
`#include <xgboost/span.h>`
`#include <algorithm>`
`#include <cassert>`
`#include <limits>`
`#include <string>`
`#include <type_traits>`
`#include <utility>`
`#include <vector>`
Include dependency graph for linalg.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Classes
struct | xgboost::linalg::detail::ArrayInterfaceHandler
struct | xgboost::linalg::detail::AllTag
struct | xgboost::linalg::detail::IntTag
struct | xgboost::linalg::detail::RangeTag< I >
class | xgboost::linalg::TensorView< T, kDim >
| A tensor view with static type and dimension. It implements indexing and slicing. More...
class | xgboost::linalg::Tensor< T, kDim >
| A tensor storage. To use it for other functionality like slicing one needs to obtain a view first. This way we can use it on both host and device. More...

## Namespaces
| xgboost
| namespace of xgboost
| xgboost::linalg
| xgboost::linalg::detail

## Macros
#define | LINALG_HD

## Typedefs
template<typename S >
using | xgboost::linalg::detail::RemoveCRType = std::remove_const_t< std::remove_reference_t< S > >
template<typename S >
using | xgboost::linalg::detail::IndexToTag = std::conditional_t< std::is_integral< RemoveCRType< S > >::value, IntTag, S >
template<typename T >
using | xgboost::linalg::VectorView = TensorView< T, 1 >
| A view over a vector, specialization of Tensor. More...
template<typename T >
using | xgboost::linalg::MatrixView = TensorView< T, 2 >
| A view over a matrix, specialization of Tensor. More...

## Functions
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. More...
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<class T , std::size_t N, std::size_t... Idx>
constexpr auto | xgboost::linalg::detail::Arr2Tup (T(&arr)[N], std::index_sequence< Idx... >)
template<class T , std::size_t N>
constexpr auto | xgboost::linalg::detail::Arr2Tup (T(&arr)[N])
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>
decltype(auto) constexpr LINALG_HD | xgboost::linalg::detail::Apply (Fn &&f, Tup &&t, std::index_sequence< I... >)
template<typename Fn , typename Tup >
decltype(auto) constexpr LINALG_HD | xgboost::linalg::detail::Apply (Fn &&f, Tup &&t)
constexpr detail::AllTag | xgboost::linalg::All ()
| Specify all elements in the axis for slicing. More...
template<typename I >
constexpr detail::RangeTag< I > | xgboost::linalg::Range (I beg, I end)
| Specify a range of elements in the axis for slicing. More...
template<typename Container , typename I , int32_t D, std::enable_if_t<!common::detail::IsSpan< Container >::value > * = nullptr>
auto | xgboost::linalg::MakeTensorView (Container &data, I const (&shape)[D], int32_t device)
| Constructor for automatic type deduction. More...
template<typename T , typename I , int32_t D>
LINALG_HD auto | xgboost::linalg::MakeTensorView (common::Span< T > data, I const (&shape)[D], int32_t device)
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. Similar to numpy unravel. More...
template<typename T >
auto | xgboost::linalg::MakeVec (T *ptr, size_t s, int32_t device=-1)
| Create a vector view from contigious memory. More...
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. More...
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. More...
template<typename T , int32_t D>
auto | xgboost::linalg::ArrayInterfaceStr (TensorView< T const, D > const &t)
| Return string representation of array interface. More...
template<typename T , int32_t D>
auto | xgboost::linalg::ArrayInterfaceStr (TensorView< T, D > const &t)
template<typename T , int32_t D>
void | xgboost::linalg::Stack (Tensor< T, D > *l, Tensor< T, D > const &r)

## Detailed Description

Linear algebra related utilities.

Copyright 2021-2022 by XGBoost Contributors

## Macro Definition Documentation

## ◆ LINALG_HD

#define LINALG_HD