Wrap cub with CUB_NS_PREFIX and remove dependency on Thrust to avoid potential linking issues
GitOrigin-RevId: 53893b0a39
release-1.4
@@ -41,14 +41,6 @@ | |||
#include "../util_device.cuh" | |||
#include "../util_namespace.cuh" | |||
#include <thrust/version.h> | |||
#if (THRUST_VERSION >= 100700) | |||
// This iterator is compatible with Thrust API 1.7 and newer | |||
#include <thrust/iterator/iterator_facade.h> | |||
#include <thrust/iterator/iterator_traits.h> | |||
#endif // THRUST_VERSION | |||
/// Optional outer namespace(s) | |||
CUB_NS_PREFIX | |||
@@ -121,17 +113,7 @@ public: | |||
typedef value_type* pointer; ///< The type of a pointer to an element the iterator can point to | |||
typedef value_type reference; ///< The type of a reference to an element the iterator can point to | |||
#if (THRUST_VERSION >= 100700) | |||
// Use Thrust's iterator categories so we can use these iterators in Thrust 1.7 (or newer) methods | |||
typedef typename thrust::detail::iterator_facade_category< | |||
thrust::any_system_tag, | |||
thrust::random_access_traversal_tag, | |||
value_type, | |||
reference | |||
>::type iterator_category; ///< The iterator category | |||
#else | |||
typedef std::random_access_iterator_tag iterator_category; ///< The iterator category | |||
#endif // THRUST_VERSION | |||
private: | |||
@@ -41,12 +41,6 @@ | |||
#include "../util_device.cuh" | |||
#include "../util_namespace.cuh" | |||
#if (THRUST_VERSION >= 100700) | |||
// This iterator is compatible with Thrust API 1.7 and newer | |||
#include <thrust/iterator/iterator_facade.h> | |||
#include <thrust/iterator/iterator_traits.h> | |||
#endif // THRUST_VERSION | |||
/// Optional outer namespace(s) | |||
CUB_NS_PREFIX | |||
@@ -115,17 +109,7 @@ public: | |||
typedef ValueType* pointer; ///< The type of a pointer to an element the iterator can point to | |||
typedef ValueType reference; ///< The type of a reference to an element the iterator can point to | |||
#if (THRUST_VERSION >= 100700) | |||
// Use Thrust's iterator categories so we can use these iterators in Thrust 1.7 (or newer) methods | |||
typedef typename thrust::detail::iterator_facade_category< | |||
thrust::device_system_tag, | |||
thrust::random_access_traversal_tag, | |||
value_type, | |||
reference | |||
>::type iterator_category; ///< The iterator category | |||
#else | |||
typedef std::random_access_iterator_tag iterator_category; ///< The iterator category | |||
#endif // THRUST_VERSION | |||
public: | |||
@@ -41,13 +41,6 @@ | |||
#include "../util_device.cuh" | |||
#include "../util_namespace.cuh" | |||
#if (THRUST_VERSION >= 100700) | |||
// This iterator is compatible with Thrust API 1.7 and newer | |||
#include <thrust/iterator/iterator_facade.h> | |||
#include <thrust/iterator/iterator_traits.h> | |||
#endif // THRUST_VERSION | |||
/// Optional outer namespace(s) | |||
CUB_NS_PREFIX | |||
@@ -135,17 +128,7 @@ public: | |||
typedef void pointer; ///< The type of a pointer to an element the iterator can point to | |||
typedef Reference reference; ///< The type of a reference to an element the iterator can point to | |||
#if (THRUST_VERSION >= 100700) | |||
// Use Thrust's iterator categories so we can use these iterators in Thrust 1.7 (or newer) methods | |||
typedef typename thrust::detail::iterator_facade_category< | |||
thrust::device_system_tag, | |||
thrust::random_access_traversal_tag, | |||
value_type, | |||
reference | |||
>::type iterator_category; ///< The iterator category | |||
#else | |||
typedef std::random_access_iterator_tag iterator_category; ///< The iterator category | |||
#endif // THRUST_VERSION | |||
private: | |||
@@ -40,13 +40,6 @@ | |||
#include "../thread/thread_store.cuh" | |||
#include "../util_namespace.cuh" | |||
#if (THRUST_VERSION >= 100700) | |||
// This iterator is compatible with Thrust API 1.7 and newer | |||
#include <thrust/iterator/iterator_facade.h> | |||
#include <thrust/iterator/iterator_traits.h> | |||
#endif // THRUST_VERSION | |||
/// Optional outer namespace(s) | |||
CUB_NS_PREFIX | |||
@@ -104,17 +97,7 @@ public: | |||
typedef ValueType* pointer; ///< The type of a pointer to an element the iterator can point to | |||
typedef ValueType reference; ///< The type of a reference to an element the iterator can point to | |||
#if (THRUST_VERSION >= 100700) | |||
// Use Thrust's iterator categories so we can use these iterators in Thrust 1.7 (or newer) methods | |||
typedef typename thrust::detail::iterator_facade_category< | |||
thrust::any_system_tag, | |||
thrust::random_access_traversal_tag, | |||
value_type, | |||
reference | |||
>::type iterator_category; ///< The iterator category | |||
#else | |||
typedef std::random_access_iterator_tag iterator_category; ///< The iterator category | |||
#endif // THRUST_VERSION | |||
private: | |||
@@ -41,13 +41,6 @@ | |||
#include "../util_device.cuh" | |||
#include "../util_namespace.cuh" | |||
#if (THRUST_VERSION >= 100700) | |||
// This iterator is compatible with Thrust API 1.7 and newer | |||
#include <thrust/iterator/iterator_facade.h> | |||
#include <thrust/iterator/iterator_traits.h> | |||
#endif // THRUST_VERSION | |||
/// Optional outer namespace(s) | |||
CUB_NS_PREFIX | |||
@@ -102,17 +95,7 @@ public: | |||
typedef ValueType* pointer; ///< The type of a pointer to an element the iterator can point to | |||
typedef ValueType reference; ///< The type of a reference to an element the iterator can point to | |||
#if (THRUST_VERSION >= 100700) | |||
// Use Thrust's iterator categories so we can use these iterators in Thrust 1.7 (or newer) methods | |||
typedef typename thrust::detail::iterator_facade_category< | |||
thrust::any_system_tag, | |||
thrust::random_access_traversal_tag, | |||
value_type, | |||
reference | |||
>::type iterator_category; ///< The iterator category | |||
#else | |||
typedef std::random_access_iterator_tag iterator_category; ///< The iterator category | |||
#endif // THRUST_VERSION | |||
private: | |||
@@ -39,13 +39,6 @@ | |||
#include "../util_namespace.cuh" | |||
#include "../util_macro.cuh" | |||
#if (THRUST_VERSION >= 100700) | |||
// This iterator is compatible with Thrust API 1.7 and newer | |||
#include <thrust/iterator/iterator_facade.h> | |||
#include <thrust/iterator/iterator_traits.h> | |||
#endif // THRUST_VERSION | |||
/// Optional outer namespace(s) | |||
CUB_NS_PREFIX | |||
@@ -74,17 +67,7 @@ public: | |||
typedef void pointer; ///< The type of a pointer to an element the iterator can point to | |||
typedef void reference; ///< The type of a reference to an element the iterator can point to | |||
#if (THRUST_VERSION >= 100700) | |||
// Use Thrust's iterator categories so we can use these iterators in Thrust 1.7 (or newer) methods | |||
typedef typename thrust::detail::iterator_facade_category< | |||
thrust::any_system_tag, | |||
thrust::random_access_traversal_tag, | |||
value_type, | |||
reference | |||
>::type iterator_category; ///< The iterator category | |||
#else | |||
typedef std::random_access_iterator_tag iterator_category; ///< The iterator category | |||
#endif // THRUST_VERSION | |||
private: | |||
@@ -42,13 +42,6 @@ | |||
#include "../util_debug.cuh" | |||
#include "../util_namespace.cuh" | |||
#if (THRUST_VERSION >= 100700) | |||
// This iterator is compatible with Thrust API 1.7 and newer | |||
#include <thrust/iterator/iterator_facade.h> | |||
#include <thrust/iterator/iterator_traits.h> | |||
#endif // THRUST_VERSION | |||
/// Optional outer namespace(s) | |||
CUB_NS_PREFIX | |||
@@ -119,17 +112,7 @@ public: | |||
typedef T* pointer; ///< The type of a pointer to an element the iterator can point to | |||
typedef T reference; ///< The type of a reference to an element the iterator can point to | |||
#if (THRUST_VERSION >= 100700) | |||
// Use Thrust's iterator categories so we can use these iterators in Thrust 1.7 (or newer) methods | |||
typedef typename thrust::detail::iterator_facade_category< | |||
thrust::device_system_tag, | |||
thrust::random_access_traversal_tag, | |||
value_type, | |||
reference | |||
>::type iterator_category; ///< The iterator category | |||
#else | |||
typedef std::random_access_iterator_tag iterator_category; ///< The iterator category | |||
#endif // THRUST_VERSION | |||
private: | |||
@@ -44,12 +44,6 @@ | |||
#if (CUDA_VERSION >= 5050) || defined(DOXYGEN_ACTIVE) // This iterator is compatible with CUDA 5.5 and newer | |||
#if (THRUST_VERSION >= 100700) // This iterator is compatible with Thrust API 1.7 and newer | |||
#include <thrust/iterator/iterator_facade.h> | |||
#include <thrust/iterator/iterator_traits.h> | |||
#endif // THRUST_VERSION | |||
/// Optional outer namespace(s) | |||
CUB_NS_PREFIX | |||
@@ -212,17 +206,7 @@ public: | |||
typedef T* pointer; ///< The type of a pointer to an element the iterator can point to | |||
typedef T reference; ///< The type of a reference to an element the iterator can point to | |||
#if (THRUST_VERSION >= 100700) | |||
// Use Thrust's iterator categories so we can use these iterators in Thrust 1.7 (or newer) methods | |||
typedef typename thrust::detail::iterator_facade_category< | |||
thrust::device_system_tag, | |||
thrust::random_access_traversal_tag, | |||
value_type, | |||
reference | |||
>::type iterator_category; ///< The iterator category | |||
#else | |||
typedef std::random_access_iterator_tag iterator_category; ///< The iterator category | |||
#endif // THRUST_VERSION | |||
private: | |||
@@ -41,12 +41,6 @@ | |||
#include "../util_device.cuh" | |||
#include "../util_namespace.cuh" | |||
#if (THRUST_VERSION >= 100700) | |||
// This iterator is compatible with Thrust API 1.7 and newer | |||
#include <thrust/iterator/iterator_facade.h> | |||
#include <thrust/iterator/iterator_traits.h> | |||
#endif // THRUST_VERSION | |||
/// Optional outer namespace(s) | |||
CUB_NS_PREFIX | |||
@@ -125,17 +119,7 @@ public: | |||
typedef ValueType* pointer; ///< The type of a pointer to an element the iterator can point to | |||
typedef ValueType reference; ///< The type of a reference to an element the iterator can point to | |||
#if (THRUST_VERSION >= 100700) | |||
// Use Thrust's iterator categories so we can use these iterators in Thrust 1.7 (or newer) methods | |||
typedef typename thrust::detail::iterator_facade_category< | |||
thrust::any_system_tag, | |||
thrust::random_access_traversal_tag, | |||
value_type, | |||
reference | |||
>::type iterator_category; ///< The iterator category | |||
#else | |||
typedef std::random_access_iterator_tag iterator_category; ///< The iterator category | |||
#endif // THRUST_VERSION | |||
private: | |||
@@ -38,9 +38,9 @@ | |||
//#define CUB_NS_POSTFIX } } | |||
#ifndef CUB_NS_PREFIX | |||
#define CUB_NS_PREFIX | |||
#define CUB_NS_PREFIX namespace megdnn { namespace cuda { | |||
#endif | |||
#ifndef CUB_NS_POSTFIX | |||
#define CUB_NS_POSTFIX | |||
#define CUB_NS_POSTFIX } } | |||
#endif |
@@ -16,6 +16,7 @@ | |||
namespace { | |||
using namespace megdnn; | |||
using namespace cuda; | |||
template <typename T> __global__ void kernel(const T *a, const T *b, | |||
dt_float32 *c, | |||
@@ -43,6 +43,8 @@ | |||
namespace { | |||
using namespace megdnn::cuda; | |||
template <int block_size_log2, int max_nr_threads_per_row> | |||
__global__ void reduce_column_with_scale_u4(const uint8_t* src, int32_t scale, | |||
int rows, int cols_int32, | |||
@@ -355,8 +355,8 @@ static __global__ void kern_reduce_block_cnt(const ctype* input_data, | |||
static MEGDNN_NOINLINE cudaError_t | |||
invoke_cub_scan(const uint64_t* input, uint64_t* output, void* workspace, | |||
size_t& workspace_size, uint32_t size, cudaStream_t stream) { | |||
return cub::DeviceScan::InclusiveSum(workspace, workspace_size, input, | |||
output, size, stream); | |||
return cub::DeviceScan::InclusiveSum(workspace, workspace_size, | |||
input, output, size, stream); | |||
} | |||
static __global__ void kern_init_zero(uint64_t* dst) { | |||