12#include <cuda_runtime_api.h>
18namespace uni20::linalg::detail::cuda_reference
21inline constexpr std::size_t elementwise_scale_maximum_rank = 8;
22using ElementwiseScalePlan32 = StridedElementwisePlan32<2, elementwise_scale_maximum_rank>;
23using ElementwiseScalePlan64 = StridedElementwisePlan64<2, elementwise_scale_maximum_rank>;
24using LoweredElementwiseScalePlan = LoweredStridedElementwisePlan<2, elementwise_scale_maximum_rank>;
26#define UNI20_DECLARE_ELEMENTWISE_SCALE(Scalar, Factor) \
27 void enqueue_elementwise_scale(Scalar* output, Scalar const* input, Factor factor, \
28 ElementwiseScalePlan32 const& plan, cudaStream_t stream, int device); \
29 void enqueue_elementwise_scale(Scalar* output, Scalar const* input, Factor factor, \
30 ElementwiseScalePlan64 const& plan, cudaStream_t stream, int device)
39#undef UNI20_DECLARE_ELEMENTWISE_SCALE
41template <
class Scalar,
class Factor>
42inline constexpr bool supports_elementwise_scale =
43 (std::same_as<Scalar, float> && std::same_as<Factor, float>) ||
44 (std::same_as<Scalar, double> && std::same_as<Factor, double>) ||
45 (std::same_as<Scalar, uni20::cfloat> && (std::same_as<Factor, float> || std::same_as<Factor, uni20::cfloat>)) ||
46 (std::same_as<Scalar, uni20::cdouble> && (std::same_as<Factor, double> || std::same_as<Factor, uni20::cdouble>));
CUDA lowering for compact affine elementwise iteration plans.
#define UNI20_DECLARE_ELEMENTWISE_SCALE(Scalar, Factor)
Definition elementwise_scale.hpp:26
complex< double > cdouble
Definition types.hpp:76
complex< float > cfloat
Definition types.hpp:75