xgboost
| 命名空间 | | 类型定义 | 枚举 | 函数 | 变量
span.h 文件参考
#include <xgboost/base.h>
#include <cstddef>
#include <cstdio>
#include <iterator>
#include <limits>
#include <type_traits>
#include <utility>
#include <vector>
span.h 的包含依赖图
此图显示哪些文件直接或间接包含此文件

转到此文件的源代码。

类  xgboost::common::detail::SpanIterator< SpanType, IsConst >
 
结构  xgboost::common::detail::ExtentValue< Extent, Offset, Count >
 
结构  xgboost::common::detail::ExtentAsBytesValue< T, Extent >
 
结构  xgboost::common::detail::IsAllowedExtentConversion< From, To >
 
结构  xgboost::common::detail::IsAllowedElementTypeConversion< From, To >
 
结构  xgboost::common::detail::IsSpanOracle< T >
 
结构  xgboost::common::detail::IsSpanOracle< Span< T, Extent > >
 
结构  xgboost::common::detail::IsSpan< T >
 
结构  xgboost::common::detail::Less< T >
 
结构  xgboost::common::detail::Greater< T >
 
类  xgboost::common::Span< T, Extent >
 span 类实现,基于 ISO++20 span<T>。接口应该相同。 更多...
 
类  xgboost::common::IterSpan< It >
 一个简单的自定义 Span 类型,使用通用迭代器而不是指针。 更多...
 

命名空间

 xgboost
 Learner 接口,将目标、gbm 和评估整合在一起。这是用户界面 XGBoost 训练模块。
 
 xgboost::common
 
 xgboost::common::detail
 

#define __span_noexcept   noexcept
 基于 ISO++20 span 的 span 类 更多...
 
#define KERNEL_CHECK(cond)   (XGBOOST_EXPECT((cond), true) ? static_cast<void>(0) : std::terminate())
 
#define SPAN_CHECK(cond)   KERNEL_CHECK(cond)
 
#define SPAN_LT(lhs, rhs)   SPAN_CHECK((lhs) < (rhs))
 

类型定义

使用 xgboost::common::detail::ptrdiff_t = typename std::conditional_t< std::is_same_v< std::ptrdiff_t, std::int64_t >, std::ptrdiff_t, std::int64_t >
 

枚举

枚举类  xgboost::common::byte : unsigned char
 

函数

模板<class InputIt1 , class InputIt2 , class Compare = detail::Less<decltype(std::declval<InputIt1>().operator*())>>
XGBOOST_DEVICE bool xgboost::common::detail::LexicographicalCompare (InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2)
 
模板<class T , std::size_t X, class U , std::size_t Y>
XGBOOST_DEVICE bool xgboost::common::operator== (Span< T, X > l, Span< U, Y > r)
 
模板<class T , std::size_t X, class U , std::size_t Y>
constexpr XGBOOST_DEVICE bool xgboost::common::operator!= (Span< T, X > l, Span< U, Y > r)
 
模板<class T , std::size_t X, class U , std::size_t Y>
constexpr XGBOOST_DEVICE bool xgboost::common::operator< (Span< T, X > l, Span< U, Y > r)
 
模板<class T , std::size_t X, class U , std::size_t Y>
constexpr XGBOOST_DEVICE bool xgboost::common::operator<= (Span< T, X > l, Span< U, Y > r)
 
模板<class T , std::size_t X, class U , std::size_t Y>
constexpr XGBOOST_DEVICE bool xgboost::common::operator> (Span< T, X > l, Span< U, Y > r)
 
模板<class T , std::size_t X, class U , std::size_t Y>
constexpr XGBOOST_DEVICE bool xgboost::common::operator>= (Span< T, X > l, Span< U, Y > r)
 
模板<class T , std::size_t E>
XGBOOST_DEVICE auto xgboost::common::as_bytes (Span< T, E > s) __span_noexcept -> Span< const byte, detail::ExtentAsBytesValue< T, E >::value >
 
模板<class T , std::size_t E>
XGBOOST_DEVICE auto xgboost::common::as_writable_bytes (Span< T, E > s) __span_noexcept -> Span< byte, detail::ExtentAsBytesValue< T, E >::value >
 
template<typename T >
 xgboost::common::Span (std::vector< T > const &) -> Span< T const >
 
template<typename T >
 xgboost::common::Span (std::vector< T > &) -> Span< T >
 

变量

constexpr std::size_t xgboost::common::dynamic_extent = std::numeric_limits<std::size_t>::max()
 

宏定义文档

◆ __span_noexcept

#define __span_noexcept   noexcept

基于 ISO++20 span 的 span 类

版权所有 2018-2024, XGBoost 贡献者

关于此文件中的 NOLINT

如果我们希望 Span 与 std 接口(如范围 for 循环)一起工作,则命名必须与 std 一致,而不是 XGBoost。此外,接口也与 XGBoost 编码风格冲突,特别是“explicit”关键字的使用。

部分代码复制自 Guidelines Support Library,其许可证如下:

版权所有 (c) 2015 Microsoft Corporation。保留所有权利。

此代码根据 MIT 许可证 (MIT) 获得许可。

本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权诉讼或其他方面,由本软件或本软件的使用或其他交易引起、与之相关或由此产生。

版本号 1910 取自 GSL。

我们可能希望使用 dmlc/concurrentqueue.h 中的 MOODYCAMEL_NOEXCEPT。但该文件中还有许多其他定义会在 MSVC 2013 中引起警告/麻烦。目前我们试图将 Span 的闭包保持在最小。

还有其他针对 MSVC 的变通方法,如 _Unwrapped、_Verify_range ... 其中一些是 MSVC 的隐藏魔法,我试图避免它们。如果其中任何一个变得必要,请查阅 GSL 的源代码,并可能参考此线程中的一些解释:

https://github.com/Microsoft/GSL/pull/664

TODO(trivialfis): 将这些 MSVC 变通方法分组到一个易于管理的地方。

◆ KERNEL_CHECK

#define KERNEL_CHECK (   条件)    (XGBOOST_EXPECT((cond), true) ? static_cast<void>(0) : std::terminate())

◆ SPAN_CHECK

#define SPAN_CHECK (   条件)    KERNEL_CHECK(cond)

◆ SPAN_LT

#define SPAN_LT (   左值,
  右值 
)    SPAN_CHECK((lhs) < (rhs))