property_op_utils.cuh#

namespace cugraph

Functions

template<typename T>
std::enable_if_t<is_thrust_tuple_of_arithmetic<T>::value, T> min_identity_element(
)
template<typename T>
std::enable_if_t<std::is_arithmetic<T>::value, T> min_identity_element(
)
template<typename T>
std::enable_if_t<is_thrust_tuple_of_arithmetic<T>::value, T> max_identity_element(
)
template<typename T>
std::enable_if_t<std::is_arithmetic<T>::value, T> max_identity_element(
)
template<typename GraphViewType, typename key_t, typename EdgePartitionSrcValueInputWrapper, typename EdgePartitionDstValueInputWrapper, typename EdgePartitionEdgeValueInputWrapper, typename EdgeOp, typename T>
struct cast_edge_op_bool_to_integer

Public Types

using vertex_type = typename GraphViewType::vertex_type#
using src_value_type = typename EdgePartitionSrcValueInputWrapper::value_type#
using dst_value_type = typename EdgePartitionDstValueInputWrapper::value_type#
using e_value_type = typename EdgePartitionEdgeValueInputWrapper::value_type#

Public Functions

template<typename K = key_t, typename V = vertex_type, typename SV = src_value_type, typename DV = dst_value_type, typename EV = e_value_type, typename E = EdgeOp> inline __device__ std::enable_if_t< std::is_invocable_v< E, K, V, SV, DV, EV >, T > operator() (K s, V d, SV sv, DV dv, EV ev) const

Public Members

EdgeOp e_op = {}#
template<typename T, template<typename> typename Op>
struct property_op : public Op<T>
template<typename ...Args, template<typename> typename Op>
struct property_op<cuda::std::tuple<Args...>, Op> : public Op<cuda::std::tuple<Args...>>

Public Types

using Type = cuda::std::tuple<Args...>#

Public Functions

inline __host__ __device__ constexpr auto operator() (const Type &t1, const Type &t2) const

Private Functions

template<typename T, std::size_t... Is> inline __host__ __device__ constexpr auto binary_op_impl (T &t1, T &t2, std::index_sequence< Is... >) const
namespace detail
template<typename GraphViewType, typename key_t, typename EdgePartitionSrcValueInputWrapper, typename EdgePartitionDstValueInputWrapper, typename EdgePartitionEdgeValueInputWrapper, typename EdgeOp>
struct edge_op_result_type

Public Types

using type = typename std::invoke_result<EdgeOp, std::conditional_t<GraphViewType::is_storage_transposed, typename GraphViewType::vertex_type, key_t>, std::conditional_t<GraphViewType::is_storage_transposed, key_t, typename GraphViewType::vertex_type>, typename EdgePartitionSrcValueInputWrapper::value_type, typename EdgePartitionDstValueInputWrapper::value_type, typename EdgePartitionEdgeValueInputWrapper::value_type>::type#
template<typename vertex_t, typename src_value_t, typename dst_value_t, typename IntersectionOp>
struct intersection_op_result_type<vertex_t, src_value_t, dst_value_t, IntersectionOp, std::enable_if_t<std::is_invocable_v<IntersectionOp, vertex_t, vertex_t, src_value_t, dst_value_t, raft::device_span<vertex_t const>>>>

Public Types

using type = typename std::invoke_result<IntersectionOp, vertex_t, vertex_t, src_value_t, dst_value_t, raft::device_span<vertex_t const>>::type#