13#include <cuda_runtime_api.h>
18namespace uni20::linalg::detail::cuda_reference
21enum class ElementwiseCopyTransform
27inline constexpr std::size_t elementwise_copy_maximum_rank = 8;
28using ElementwiseCopyPlan32 = StridedElementwisePlan32<2, elementwise_copy_maximum_rank>;
29using ElementwiseCopyPlan64 = StridedElementwisePlan64<2, elementwise_copy_maximum_rank>;
30using LoweredElementwiseCopyPlan = LoweredStridedElementwisePlan<2, elementwise_copy_maximum_rank>;
32void enqueue_elementwise_copy(
float* output,
float const* input, ElementwiseCopyPlan32
const& plan,
33 ElementwiseCopyTransform transform, cudaStream_t stream,
int device);
34void enqueue_elementwise_copy(
float* output,
float const* input, ElementwiseCopyPlan64
const& plan,
35 ElementwiseCopyTransform transform, cudaStream_t stream,
int device);
36void enqueue_elementwise_copy(
double* output,
double const* input, ElementwiseCopyPlan32
const& plan,
37 ElementwiseCopyTransform transform, cudaStream_t stream,
int device);
38void enqueue_elementwise_copy(
double* output,
double const* input, ElementwiseCopyPlan64
const& plan,
39 ElementwiseCopyTransform transform, cudaStream_t stream,
int device);
41 ElementwiseCopyTransform transform, cudaStream_t stream,
int device);
43 ElementwiseCopyTransform transform, cudaStream_t stream,
int device);
45 ElementwiseCopyTransform transform, cudaStream_t stream,
int device);
47 ElementwiseCopyTransform transform, cudaStream_t stream,
int device);
49template <
class Scalar>
50inline constexpr bool supports_elementwise_copy =
51 std::same_as<Scalar, float> || std::same_as<Scalar, double> || std::same_as<Scalar, uni20::cfloat> ||
52 std::same_as<Scalar, uni20::cdouble>;
Project compiler annotations shared by host and device code.
CUDA lowering for compact affine elementwise iteration plans.
complex< double > cdouble
Definition types.hpp:76
complex< float > cfloat
Definition types.hpp:75