reduce_op.cuh#

namespace cugraph
namespace reduce_op

Functions

template<typename ReduceOp, typename Iterator> __device__ std::enable_if_t< has_compatible_raft_comms_op_v< ReduceOp >, void > atomic_reduce (Iterator iter, typename thrust::iterator_traits< Iterator >::value_type value)
template<typename ReduceOp, typename EdgePartitionEndpointPropertyValueWrapper> __device__ std::enable_if_t< has_compatible_raft_comms_op_v< ReduceOp >, void > atomic_reduce (EdgePartitionEndpointPropertyValueWrapper edge_partition_endpoint_property_value, typename EdgePartitionEndpointPropertyValueWrapper::vertex_type offset, typename EdgePartitionEndpointPropertyValueWrapper::value_type value)

Variables

template<typename ReduceOp>
bool has_compatible_raft_comms_op_v = = has_compatible_raft_comms_op<ReduceOp>::value
template<typename ReduceOp>
bool has_identity_element_v = has_identity_element<ReduceOp>::value
struct null

Public Types

using value_type = void#
template<typename T>
struct any

Public Types

using value_type = T#

Public Functions

inline __host__ __device__ T operator() (T const &lhs, T const &rhs) const

Public Static Attributes

static bool pure_function = true#
template<typename T>
struct minimum<T, std::enable_if_t<std::is_arithmetic_v<T>>>

Public Types

using value_type = T#

Public Functions

inline __host__ __device__ T operator() (T const &lhs, T const &rhs) const

Public Static Attributes

static bool pure_function = true#
static raft::comms::op_t compatible_raft_comms_op = raft::comms::op_t::MIN#
static T const identity_element = max_identity_element<T>()#
template<typename T>
struct minimum<T, std::enable_if_t<cugraph::is_thrust_tuple_of_arithmetic<T>::value>>

Public Types

using value_type = T#

Public Functions

inline __host__ __device__ T operator() (T const &lhs, T const &rhs) const

Public Static Attributes

static bool pure_function = true#
static T const identity_element = max_identity_element<T>()#
template<typename T>
struct elementwise_minimum

Public Types

using value_type = T#

Public Functions

template<typename U = T> inline __host__ __device__ std::enable_if_t< std::is_arithmetic_v< U >, T > operator() (T const &lhs, T const &rhs) const
template<typename U = T> inline __host__ __device__ std::enable_if_t< cugraph::is_thrust_tuple_of_arithmetic< U >::value, T > operator() (T const &lhs, T const &rhs) const

Public Static Attributes

static bool pure_function = true#
static raft::comms::op_t compatible_raft_comms_op = raft::comms::op_t::MIN#
static T const identity_element = max_identity_element<T>()#
template<typename T>
struct maximum<T, std::enable_if_t<std::is_arithmetic_v<T>>>

Public Types

using value_type = T#

Public Functions

inline __host__ __device__ T operator() (T const &lhs, T const &rhs) const

Public Static Attributes

static bool pure_function = true#
static raft::comms::op_t compatible_raft_comms_op = raft::comms::op_t::MAX#
static T const identity_element = min_identity_element<T>()#
template<typename T>
struct maximum<T, std::enable_if_t<cugraph::is_thrust_tuple_of_arithmetic<T>::value>>

Public Types

using value_type = T#

Public Functions

inline __host__ __device__ T operator() (T const &lhs, T const &rhs) const

Public Static Attributes

static bool pure_function = true#
static T const identity_element = min_identity_element<T>()#
template<typename T>
struct elementwise_maximum

Public Types

using value_type = T#

Public Functions

template<typename U = T> inline __host__ __device__ std::enable_if_t< std::is_arithmetic_v< U >, T > operator() (T const &lhs, T const &rhs) const
template<typename U = T> inline __host__ __device__ std::enable_if_t< cugraph::is_thrust_tuple_of_arithmetic< U >::value, T > operator() (T const &lhs, T const &rhs) const

Public Static Attributes

static bool pure_function = true#
static raft::comms::op_t compatible_raft_comms_op = raft::comms::op_t::MAX#
static T const identity_element = min_identity_element<T>()#
template<typename T>
struct plus

Public Types

using value_type = T#

Public Functions

inline __host__ __device__ T operator() (T const &lhs, T const &rhs) const

Public Members

property_op<T, cuda::std::plus> op = {}#

Public Static Attributes

static bool pure_function = true#
static raft::comms::op_t compatible_raft_comms_op = raft::comms::op_t::SUM#
static T const identity_element = T{}#
template<typename ReduceOp, typename = raft::comms::op_t>
struct has_compatible_raft_comms_op : public std::false_type
template<typename ReduceOp>
struct has_compatible_raft_comms_op<ReduceOp, std::remove_cv_t<decltype(ReduceOp::compatible_raft_comms_op)>> : public std::false_type, public std::true_type
template<typename ReduceOp, typename = typename ReduceOp::value_type>
struct has_identity_element : public std::false_type
template<typename ReduceOp>
struct has_identity_element<ReduceOp, std::remove_cv_t<decltype(ReduceOp::identity_element)>> : public std::false_type, public std::true_type
namespace detail

Functions

template<typename T, std::size_t... Is> __host__ __device__ std::enable_if_t< cugraph::is_thrust_tuple_of_arithmetic< T >::value, T > elementwise_thrust_min (T lhs, T rhs, std::index_sequence< Is... >)
template<typename T, std::size_t... Is> __host__ __device__ std::enable_if_t< cugraph::is_thrust_tuple_of_arithmetic< T >::value, T > elementwise_thrust_max (T lhs, T rhs, std::index_sequence< Is... >)