45#ifndef KOKKOS_HALF_HPP_
46#define KOKKOS_HALF_HPP_
49#include <Kokkos_Macros.hpp>
52#include <Cuda/Kokkos_Cuda_Half.hpp>
59#ifndef KOKKOS_IMPL_HALF_TYPE_DEFINED
60#define KOKKOS_IMPL_HALF_TYPE_DEFINED
61#define KOKKOS_HALF_T_IS_FLOAT true
70using half_t = Kokkos::Impl::half_impl_t::type;
74half_t cast_to_half(
float val) {
return half_t(val); }
76half_t cast_to_half(
bool val) {
return half_t(val); }
78half_t cast_to_half(
double val) {
return half_t(val); }
80half_t cast_to_half(
short val) {
return half_t(val); }
82half_t cast_to_half(
unsigned short val) {
return half_t(val); }
84half_t cast_to_half(
int val) {
return half_t(val); }
86half_t cast_to_half(
unsigned int val) {
return half_t(val); }
88half_t cast_to_half(
long val) {
return half_t(val); }
90half_t cast_to_half(
unsigned long val) {
return half_t(val); }
92half_t cast_to_half(
long long val) {
return half_t(val); }
94half_t cast_to_half(
unsigned long long val) {
return half_t(val); }
100KOKKOS_INLINE_FUNCTION std::enable_if_t<
101 std::is_same<T, float>::value || std::is_same<T, bool>::value ||
102 std::is_same<T, double>::value || std::is_same<T, short>::value ||
103 std::is_same<T, unsigned short>::value || std::is_same<T, int>::value ||
104 std::is_same<T, unsigned int>::value || std::is_same<T, long>::value ||
105 std::is_same<T, unsigned long>::value ||
106 std::is_same<T, long long>::value ||
107 std::is_same<T, unsigned long long>::value,
109cast_from_half(half_t val) {
117#define KOKKOS_HALF_T_IS_FLOAT false