Allow compilation with nvcc 11.4 (#7131)
* Use type aliases for discard iterators * update to include host_vector as thrust 1.12 doesn't bring it in as a side-effect * cub::DispatchRadixSort requires signed offset types
This commit is contained in:
parent
7017dd5a26
commit
1a75f43304
@ -1329,22 +1329,22 @@ void ArgSort(xgboost::common::Span<U> keys, xgboost::common::Span<IdxT> sorted_i
|
|||||||
|
|
||||||
if (accending) {
|
if (accending) {
|
||||||
void *d_temp_storage = nullptr;
|
void *d_temp_storage = nullptr;
|
||||||
safe_cuda((cub::DispatchRadixSort<false, KeyT, ValueT, size_t>::Dispatch(
|
safe_cuda((cub::DispatchRadixSort<false, KeyT, ValueT, std::ptrdiff_t>::Dispatch(
|
||||||
d_temp_storage, bytes, d_keys, d_values, sorted_idx.size(), 0,
|
d_temp_storage, bytes, d_keys, d_values, sorted_idx.size(), 0,
|
||||||
sizeof(KeyT) * 8, false, nullptr, false)));
|
sizeof(KeyT) * 8, false, nullptr, false)));
|
||||||
TemporaryArray<char> storage(bytes);
|
TemporaryArray<char> storage(bytes);
|
||||||
d_temp_storage = storage.data().get();
|
d_temp_storage = storage.data().get();
|
||||||
safe_cuda((cub::DispatchRadixSort<false, KeyT, ValueT, size_t>::Dispatch(
|
safe_cuda((cub::DispatchRadixSort<false, KeyT, ValueT, std::ptrdiff_t>::Dispatch(
|
||||||
d_temp_storage, bytes, d_keys, d_values, sorted_idx.size(), 0,
|
d_temp_storage, bytes, d_keys, d_values, sorted_idx.size(), 0,
|
||||||
sizeof(KeyT) * 8, false, nullptr, false)));
|
sizeof(KeyT) * 8, false, nullptr, false)));
|
||||||
} else {
|
} else {
|
||||||
void *d_temp_storage = nullptr;
|
void *d_temp_storage = nullptr;
|
||||||
safe_cuda((cub::DispatchRadixSort<true, KeyT, ValueT, size_t>::Dispatch(
|
safe_cuda((cub::DispatchRadixSort<true, KeyT, ValueT, std::ptrdiff_t>::Dispatch(
|
||||||
d_temp_storage, bytes, d_keys, d_values, sorted_idx.size(), 0,
|
d_temp_storage, bytes, d_keys, d_values, sorted_idx.size(), 0,
|
||||||
sizeof(KeyT) * 8, false, nullptr, false)));
|
sizeof(KeyT) * 8, false, nullptr, false)));
|
||||||
TemporaryArray<char> storage(bytes);
|
TemporaryArray<char> storage(bytes);
|
||||||
d_temp_storage = storage.data().get();
|
d_temp_storage = storage.data().get();
|
||||||
safe_cuda((cub::DispatchRadixSort<true, KeyT, ValueT, size_t>::Dispatch(
|
safe_cuda((cub::DispatchRadixSort<true, KeyT, ValueT, std::ptrdiff_t>::Dispatch(
|
||||||
d_temp_storage, bytes, d_keys, d_values, sorted_idx.size(), 0,
|
d_temp_storage, bytes, d_keys, d_values, sorted_idx.size(), 0,
|
||||||
sizeof(KeyT) * 8, false, nullptr, false)));
|
sizeof(KeyT) * 8, false, nullptr, false)));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -185,10 +185,7 @@ struct TupleScanOp {
|
|||||||
|
|
||||||
// Change the value type of thrust discard iterator so we can use it with cub
|
// Change the value type of thrust discard iterator so we can use it with cub
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class TypedDiscard : public thrust::discard_iterator<T> {
|
using TypedDiscard = thrust::discard_iterator<T>;
|
||||||
public:
|
|
||||||
using value_type = T; // NOLINT
|
|
||||||
};
|
|
||||||
|
|
||||||
// Here the data is already correctly ordered and simply needs to be compacted
|
// Here the data is already correctly ordered and simply needs to be compacted
|
||||||
// to remove missing data
|
// to remove missing data
|
||||||
|
|||||||
@ -20,10 +20,7 @@ namespace xgboost {
|
|||||||
namespace metric {
|
namespace metric {
|
||||||
namespace {
|
namespace {
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class Discard : public thrust::discard_iterator<T> {
|
using Discard = thrust::discard_iterator<T>;
|
||||||
public:
|
|
||||||
using value_type = T; // NOLINT
|
|
||||||
};
|
|
||||||
|
|
||||||
struct GetWeightOp {
|
struct GetWeightOp {
|
||||||
common::Span<float const> weights;
|
common::Span<float const> weights;
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
#include <thrust/device_ptr.h>
|
#include <thrust/device_ptr.h>
|
||||||
#include <thrust/device_vector.h>
|
#include <thrust/device_vector.h>
|
||||||
#include <thrust/fill.h>
|
#include <thrust/fill.h>
|
||||||
|
#include <thrust/host_vector.h>
|
||||||
#include <GPUTreeShap/gpu_treeshap.h>
|
#include <GPUTreeShap/gpu_treeshap.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
|||||||
@ -61,10 +61,7 @@ struct WriteResultsFunctor {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Change the value type of thrust discard iterator so we can use it with cub
|
// Change the value type of thrust discard iterator so we can use it with cub
|
||||||
class DiscardOverload : public thrust::discard_iterator<IndexFlagTuple> {
|
using DiscardOverload = thrust::discard_iterator<IndexFlagTuple>;
|
||||||
public:
|
|
||||||
using value_type = IndexFlagTuple; // NOLINT
|
|
||||||
};
|
|
||||||
|
|
||||||
// Implement partitioning via single scan operation using transform output to
|
// Implement partitioning via single scan operation using transform output to
|
||||||
// write the result
|
// write the result
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user