Template Struct CudaCanVectorise#

Struct Documentation#

template<typename ...Args>
struct CudaCanVectorise#

Public Types

using First = decltype(extractFirst<Args...>())#

Public Static Functions

template<typename First, typename ...Rest>
static inline constexpr auto extractFirst()#
template<typename T>
static inline constexpr bool edgeCases()#

Public Static Attributes

static constexpr bool supportsVectorisation = (typetraits::TypeInfo<std::decay_t<Args>>::allowVectorisation && ...)#
static constexpr bool dtypesAreSame = (std::is_same_v<typenametypetraits::TypeInfo<std::decay_t<Args>>::Scalar, typenametypetraits::TypeInfo<std::decay_t<Args>>::Scalar> && ...)#
static constexpr bool dtypeSupportsVectorisation = ((typetraits::TypeInfo<typename CudaVectorExtractor<typename typetraits::TypeInfo<std::decay_t<Args>>::Scalar>::Scalar>::cudaPacketWidth > 1) && ...)#
static constexpr bool fitsEdgeCases = (edgeCases<typename typetraits::TypeInfo<std::decay_t<Args>>::Scalar>() && ...)#
static constexpr bool value = supportsVectorisation && dtypesAreSame && dtypeSupportsVectorisation && fitsEdgeCases#