Go to the documentation of this file.
6 #ifndef XGBOOST_COMMON_COMMON_H_
7 #define XGBOOST_COMMON_COMMON_H_
10 #include <xgboost/logging.h>
16 #include <type_traits>
22 #if defined(__CUDACC__)
23 #include <thrust/system/cuda/error.h>
24 #include <thrust/system_error.h>
26 #define WITH_CUDA() true
30 #define WITH_CUDA() false
32 #endif // defined(__CUDACC__)
35 #if defined(__CUDACC__)
39 #define safe_cuda(ans) ThrowOnCudaError((ans), __FILE__, __LINE__)
41 inline cudaError_t ThrowOnCudaError(cudaError_t code,
const char *file,
43 if (code != cudaSuccess) {
44 LOG(FATAL) << thrust::system_error(code, thrust::cuda_category(),
45 std::string{file} +
": " +
46 std::to_string(line)).what();
50 #endif // defined(__CUDACC__)
60 inline std::vector<std::string>
Split(
const std::string& s,
char delim) {
62 std::istringstream is(s);
63 std::vector<std::string> ret;
64 while (std::getline(is, item, delim)) {
78 std::ostringstream os;
83 template <
typename T1,
typename T2>
85 return static_cast<T1
>(std::ceil(
static_cast<double>(a) / b));
111 return i_ >= other.i_;
114 return i_ < other.i_;
122 i_{start}, step_{step} {}
139 return *begin_ == *other.begin_ && *end_ == *other.end_;
142 return !(*
this == other);
155 #ifndef XGBOOST_USE_CUDA
156 LOG(FATAL) <<
"XGBoost version not compiled with GPU support.";
157 #endif // XGBOOST_USE_CUDA
161 #ifndef XGBOOST_USE_ONEAPI
162 LOG(FATAL) <<
"XGBoost version not compiled with OneAPI support.";
163 #endif // XGBOOST_USE_ONEAPI
166 template <
typename Idx,
typename V,
typename Comp = std::less<V>>
167 std::vector<Idx>
ArgSort(std::vector<V>
const &array, Comp comp = std::less<V>{}) {
168 std::vector<Idx> result(array.size());
169 std::iota(result.begin(), result.end(), 0);
171 result.begin(), result.end(),
172 [&array, comp](Idx
const &l, Idx
const &r) { return comp(array[l], array[r]); });
177 #endif // XGBOOST_COMMON_COMMON_H_
XGBOOST_DEVICE Iterator begin() const
Definition: common.h:129
XGBOOST_DEVICE bool operator==(const Iterator &other) const
Definition: common.h:110
XGBOOST_DEVICE T Max(T a, T b)
Definition: common.h:71
XGBOOST_DEVICE bool operator==(const Range &other) const
Definition: common.h:138
XGBOOST_DEVICE Iterator(DifferenceType start)
Definition: common.h:120
XGBOOST_DEVICE DifferenceType operator*() const
Definition: common.h:99
defines configuration macros of xgboost.
XGBOOST_DEVICE Iterator operator++(int)
Definition: common.h:104
const XGBOOST_DEVICE Iterator & operator++()
Definition: common.h:100
XGBOOST_DEVICE Iterator end() const
Definition: common.h:130
int64_t DifferenceType
Definition: common.h:93
XGBOOST_DEVICE void Step(DifferenceType s)
Definition: common.h:117
void AssertGPUSupport()
Definition: common.h:154
XGBOOST_DEVICE Range(DifferenceType begin, DifferenceType end)
Definition: common.h:132
XGBOOST_DEVICE Range(DifferenceType begin, DifferenceType end, DifferenceType step)
Definition: common.h:134
XGBOOST_DEVICE T1 DivRoundUp(const T1 a, const T2 b)
Definition: common.h:84
std::string ToString(const T &data)
Definition: common.h:77
XGBOOST_DEVICE bool operator!=(const Range &other) const
Definition: common.h:141
std::vector< Idx > ArgSort(std::vector< V > const &array, Comp comp=std::less< V >{})
Definition: common.h:167
XGBOOST_DEVICE Iterator(DifferenceType start, DifferenceType step)
Definition: common.h:121
XGBOOST_DEVICE bool operator!=(const Iterator &other) const
Definition: common.h:113
XGBOOST_DEVICE void Step(DifferenceType s)
Definition: common.h:145
void AssertOneAPISupport()
Definition: common.h:160
#define XGBOOST_DEVICE
Tag function as usable by device.
Definition: base.h:84
namespace of xgboost
Definition: base.h:110
std::vector< std::string > Split(const std::string &s, char delim)
Split a string by delimiter.
Definition: common.h:60