CUDA Math API (PDF) - v10.1.168 (older) - Last updated April 24, 2019 - Send Feedback

## 1.1.5. Half Precision Conversion And Data Movement

## [Half Precision Intrinsics]

To use these functions include the header file `cuda_fp16.h` in your program.

### Functions

__host__ ​ __device__ ​ __half2 __float22half2_rn ( const float2 a ) throw ( )
  Converts both components of float2 number to half precision in round-to-nearest-even mode and returns `half2` with converted values.
__host__ ​ __device__ ​ __half __float2half ( const float a ) throw ( )
  Converts float number to half precision in round-to-nearest-even mode and returns `half` with converted value.
__host__ ​ __device__ ​ __half2 __float2half2_rn ( const float a ) throw ( )
  Converts input to half precision in round-to-nearest-even mode and populates both halves of `half2` with converted value.
__host__ ​ __device__ ​ __half __float2half_rd ( const float a ) throw ( )
  Converts float number to half precision in round-down mode and returns `half` with converted value.
__host__ ​ __device__ ​ __half __float2half_rn ( const float a ) throw ( )
  Converts float number to half precision in round-to-nearest-even mode and returns `half` with converted value.
__host__ ​ __device__ ​ __half __float2half_ru ( const float a ) throw ( )
  Converts float number to half precision in round-up mode and returns `half` with converted value.
__host__ ​ __device__ ​ __half __float2half_rz ( const float a ) throw ( )
  Converts float number to half precision in round-towards-zero mode and returns `half` with converted value.
__host__ ​ __device__ ​ __half2 __floats2half2_rn ( const float a, const float b ) throw ( )
  Converts both input floats to half precision in round-to-nearest-even mode and returns `half2` with converted values.
__host__ ​ __device__ ​ float2 __half22float2 ( const __half2 a ) throw ( )
  Converts both halves of `half2` to float2 and returns the result.
__host__ ​ __device__ ​ float __half2float ( const __half a ) throw ( )
  Converts `half` number to float.
__device__ ​ __half2 __half2half2 ( const __half a ) throw ( )
  Returns `half2` with both halves equal to the input value.
__device__ ​ int __half2int_rd ( __half h ) throw ( )
  Convert a half to a signed integer in round-down mode.
__device__ ​ int __half2int_rn ( __half h ) throw ( )
  Convert a half to a signed integer in round-to-nearest-even mode.
__device__ ​ int __half2int_ru ( __half h ) throw ( )
  Convert a half to a signed integer in round-up mode.
__device__ ​ int __half2int_rz ( __half h ) throw ( )
  Convert a half to a signed integer in round-towards-zero mode.
__device__ ​ long long int __half2ll_rd ( __half h ) throw ( )
  Convert a half to a signed 64-bit integer in round-down mode.
__device__ ​ long long int __half2ll_rn ( __half h ) throw ( )
  Convert a half to a signed 64-bit integer in round-to-nearest-even mode.
__device__ ​ long long int __half2ll_ru ( __half h ) throw ( )
  Convert a half to a signed 64-bit integer in round-up mode.
__device__ ​ long long int __half2ll_rz ( __half h ) throw ( )
  Convert a half to a signed 64-bit integer in round-towards-zero mode.
__device__ ​ short int __half2short_rd ( __half h ) throw ( )
  Convert a half to a signed short integer in round-down mode.
__device__ ​ short int __half2short_rn ( __half h ) throw ( )
  Convert a half to a signed short integer in round-to-nearest-even mode.
__device__ ​ short int __half2short_ru ( __half h ) throw ( )
  Convert a half to a signed short integer in round-up mode.
__device__ ​ short int __half2short_rz ( __half h ) throw ( )
  Convert a half to a signed short integer in round-towards-zero mode.
__device__ ​ unsigned int __half2uint_rd ( __half h ) throw ( )
  Convert a half to an unsigned integer in round-down mode.
__device__ ​ unsigned int __half2uint_rn ( __half h ) throw ( )
  Convert a half to an unsigned integer in round-to-nearest-even mode.
__device__ ​ unsigned int __half2uint_ru ( __half h ) throw ( )
  Convert a half to an unsigned integer in round-up mode.
__device__ ​ unsigned int __half2uint_rz ( __half h ) throw ( )
  Convert a half to an unsigned integer in round-towards-zero mode.
__device__ ​ unsigned long long int __half2ull_rd ( __half h ) throw ( )
  Convert a half to an unsigned 64-bit integer in round-down mode.
__device__ ​ unsigned long long int __half2ull_rn ( __half h ) throw ( )
  Convert a half to an unsigned 64-bit integer in round-to-nearest-even mode.
__device__ ​ unsigned long long int __half2ull_ru ( __half h ) throw ( )
  Convert a half to an unsigned 64-bit integer in round-up mode.
__device__ ​ unsigned long long int __half2ull_rz ( __half h ) throw ( )
  Convert a half to an unsigned 64-bit integer in round-towards-zero mode.
__device__ ​ unsigned short int __half2ushort_rd ( __half h )
  Convert a half to an unsigned short integer in round-down mode.
__device__ ​ unsigned short int __half2ushort_rn ( __half h ) throw ( )
  Convert a half to an unsigned short integer in round-to-nearest-even mode.
__device__ ​ unsigned short int __half2ushort_ru ( __half h )
  Convert a half to an unsigned short integer in round-up mode.
__device__ ​ unsigned short int __half2ushort_rz ( __half h ) throw ( )
  Convert a half to an unsigned short integer in round-towards-zero mode.
__device__ ​ short int __half_as_short ( const __half h ) throw ( )
  Reinterprets bits in a `half` as a signed short integer.
__device__ ​ unsigned short int __half_as_ushort ( const __half h ) throw ( )
  Reinterprets bits in a `half` as an unsigned short integer.
__device__ ​ __half2 __halves2half2 ( const __half a, const __half b ) throw ( )
  Combines two `half` numbers into one `half2` number.
__host__ ​ __device__ ​ float __high2float ( const __half2 a ) throw ( )
  Converts high 16 bits of `half2` to float and returns the result.
__device__ ​ __half __high2half ( const __half2 a ) throw ( )
  Returns high 16 bits of `half2` input.
__device__ ​ __half2 __high2half2 ( const __half2 a ) throw ( )
  Extracts high 16 bits from `half2` input.
__device__ ​ __half2 __highs2half2 ( const __half2 a, const __half2 b ) throw ( )
  Extracts high 16 bits from each of the two `half2` inputs and combines into one `half2` number.
__device__ ​ __half __int2half_rd ( int i ) throw ( )
  Convert a signed integer to a half in round-down mode.
__device__ ​ __half __int2half_rn ( int i ) throw ( )
  Convert a signed integer to a half in round-to-nearest-even mode.
__device__ ​ __half __int2half_ru ( int i ) throw ( )
  Convert a signed integer to a half in round-up mode.
__device__ ​ __half __int2half_rz ( int i ) throw ( )
  Convert a signed integer to a half in round-towards-zero mode.
__device__ ​ __half __ll2half_rd ( long long int i ) throw ( )
  Convert a signed 64-bit integer to a half in round-down mode.
__device__ ​ __half __ll2half_rn ( long long int i ) throw ( )
  Convert a signed 64-bit integer to a half in round-to-nearest-even mode.
__device__ ​ __half __ll2half_ru ( long long int i ) throw ( )
  Convert a signed 64-bit integer to a half in round-up mode.
__device__ ​ __half __ll2half_rz ( long long int i )
  Convert a signed 64-bit integer to a half in round-towards-zero mode.
__host__ ​ __device__ ​ float __low2float ( const __half2 a ) throw ( )
  Converts low 16 bits of `half2` to float and returns the result.
__device__ ​ __half __low2half ( const __half2 a ) throw ( )
  Returns low 16 bits of `half2` input.
__device__ ​ __half2 __low2half2 ( const __half2 a ) throw ( )
  Extracts low 16 bits from `half2` input.
__device__ ​ __half2 __lowhigh2highlow ( const __half2 a ) throw ( )
  Swaps both halves of the `half2` input.
__device__ ​ __half2 __lows2half2 ( const __half2 a, const __half2 b ) throw ( )
  Extracts low 16 bits from each of the two `half2` inputs and combines into one `half2` number.
__device__ ​ __half __shfl_down_sync ( unsigned mask, __half var, unsigned int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Copy from a thread with higher ID relative to the caller.
__device__ ​ __half2 __shfl_down_sync ( unsigned mask, __half2 var, unsigned int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Copy from a thread with higher ID relative to the caller.
__device__ ​ __half __shfl_sync ( unsigned mask, __half var, int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Direct copy from indexed thread.
__device__ ​ __half2 __shfl_sync ( unsigned mask, __half2 var, int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Direct copy from indexed thread.
__device__ ​ __half __shfl_up_sync ( unsigned mask, __half var, unsigned int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Copy from a thread with lower ID relative to the caller.
__device__ ​ __half2 __shfl_up_sync ( unsigned mask, __half2 var, unsigned int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Copy from a thread with lower ID relative to the caller.
__device__ ​ __half __shfl_xor_sync ( unsigned mask, __half var, int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Copy from a thread based on bitwise XOR of own thread ID.
__device__ ​ __half2 __shfl_xor_sync ( unsigned mask, __half2 var, int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Copy from a thread based on bitwise XOR of own thread ID.
__device__ ​ __half __short2half_rd ( short int i ) throw ( )
  Convert a signed short integer to a half in round-down mode.
__device__ ​ __half __short2half_rn ( short int i ) throw ( )
  Convert a signed short integer to a half in round-to-nearest-even mode.
__device__ ​ __half __short2half_ru ( short int i ) throw ( )
  Convert a signed short integer to a half in round-up mode.
__device__ ​ __half __short2half_rz ( short int i ) throw ( )
  Convert a signed short integer to a half in round-towards-zero mode.
__device__ ​ __half __short_as_half ( const short int i ) throw ( )
  Reinterprets bits in a signed short integer as a `half`.
__device__ ​ __half __uint2half_rd ( unsigned int i ) throw ( )
  Convert an unsigned integer to a half in round-down mode.
__device__ ​ __half __uint2half_rn ( unsigned int i ) throw ( )
  Convert an unsigned integer to a half in round-to-nearest-even mode.
__device__ ​ __half __uint2half_ru ( unsigned int i ) throw ( )
  Convert an unsigned integer to a half in round-up mode.
__device__ ​ __half __uint2half_rz ( unsigned int i ) throw ( )
  Convert an unsigned integer to a half in round-towards-zero mode.
__device__ ​ __half __ull2half_rd ( unsigned long long int i ) throw ( )
  Convert an unsigned 64-bit integer to a half in round-down mode.
__device__ ​ __half __ull2half_rn ( unsigned long long int i ) throw ( )
  Convert an unsigned 64-bit integer to a half in round-to-nearest-even mode.
__device__ ​ __half __ull2half_ru ( unsigned long long int i ) throw ( )
  Convert an unsigned 64-bit integer to a half in round-up mode.
__device__ ​ __half __ull2half_rz ( unsigned long long int i ) throw ( )
  Convert an unsigned 64-bit integer to a half in round-towards-zero mode.
__device__ ​ __half __ushort2half_rd ( unsigned short int i ) throw ( )
  Convert an unsigned short integer to a half in round-down mode.
__device__ ​ __half __ushort2half_rn ( unsigned short int i ) throw ( )
  Convert an unsigned short integer to a half in round-to-nearest-even mode.
__device__ ​ __half __ushort2half_ru ( unsigned short int i ) throw ( )
  Convert an unsigned short integer to a half in round-up mode.
__device__ ​ __half __ushort2half_rz ( unsigned short int i ) throw ( )
  Convert an unsigned short integer to a half in round-towards-zero mode.
__device__ ​ __half __ushort_as_half ( const unsigned short int i ) throw ( )
  Reinterprets bits in an unsigned short integer as a `half`.

### Functions

__host__ ​ __device__ ​ __half2 __float22half2_rn ( const float2 a ) throw ( )
  Converts both components of float2 number to half precision in round-to-nearest-even mode and returns `half2` with converted values.

  ###### Parameters

  `a`
    - float2. Is only being read.

  ###### Returns

  half2

  - The

    `half2` which has corresponding halves equal to the converted float2 components.

  ###### Description

  Converts both components of float2 to half precision in round-to-nearest mode and combines the results into one `half2` number. Low 16 bits of the return value correspond to `a.x` and high 16 bits of the return value correspond to `a.y`. TBR

__host__ ​ __device__ ​ __half __float2half ( const float a ) throw ( )
  Converts float number to half precision in round-to-nearest-even mode and returns `half` with converted value.

  ###### Parameters

  `a`
    - float. Is only being read.

  ###### Returns

  half

  - \p

    a converted to half.

  ###### Description

  Converts float number `a` to half precision in round-to-nearest-even mode. TBR

__host__ ​ __device__ ​ __half2 __float2half2_rn ( const float a ) throw ( )
  Converts input to half precision in round-to-nearest-even mode and populates both halves of `half2` with converted value.

  ###### Parameters

  `a`
    - float. Is only being read.

  ###### Returns

  half2

  - The

    `half2` value with both halves equal to the converted half precision number.

  ###### Description

  Converts input `a` to half precision in round-to-nearest-even mode and populates both halves of `half2` with converted value. TBR

__host__ ​ __device__ ​ __half __float2half_rd ( const float a ) throw ( )
  Converts float number to half precision in round-down mode and returns `half` with converted value.

  ###### Parameters

  `a`
    - float. Is only being read.

  ###### Returns

  half

  - \p

    a converted to half.

  ###### Description

  Converts float number `a` to half precision in round-down mode. TBR

__host__ ​ __device__ ​ __half __float2half_rn ( const float a ) throw ( )
  Converts float number to half precision in round-to-nearest-even mode and returns `half` with converted value.

  ###### Parameters

  `a`
    - float. Is only being read.

  ###### Returns

  half

  - \p

    a converted to half.

  ###### Description

  Converts float number `a` to half precision in round-to-nearest-even mode. TBR

__host__ ​ __device__ ​ __half __float2half_ru ( const float a ) throw ( )
  Converts float number to half precision in round-up mode and returns `half` with converted value.

  ###### Parameters

  `a`
    - float. Is only being read.

  ###### Returns

  half

  - \p

    a converted to half.

  ###### Description

  Converts float number `a` to half precision in round-up mode. TBR

__host__ ​ __device__ ​ __half __float2half_rz ( const float a ) throw ( )
  Converts float number to half precision in round-towards-zero mode and returns `half` with converted value.

  ###### Parameters

  `a`
    - float. Is only being read.

  ###### Returns

  half

  - \p

    a converted to half.

  ###### Description

  Converts float number `a` to half precision in round-towards-zero mode. TBR

__host__ ​ __device__ ​ __half2 __floats2half2_rn ( const float a, const float b ) throw ( )
  Converts both input floats to half precision in round-to-nearest-even mode and returns `half2` with converted values.

  ###### Parameters

  `a`
    - float. Is only being read.
  `b`
    - float. Is only being read.

  ###### Returns

  half2

  - The

    `half2` value with corresponding halves equal to the converted input floats.

  ###### Description

  Converts both input floats to half precision in round-to-nearest-even mode and combines the results into one `half2` number. Low 16 bits of the return value correspond to the input `a`, high 16 bits correspond to the input `b`. TBR

__host__ ​ __device__ ​ float2 __half22float2 ( const __half2 a ) throw ( )
  Converts both halves of `half2` to float2 and returns the result.

  ###### Parameters

  `a`
    - half2. Is only being read.

  ###### Returns

  float2

  - \p

    a converted to float2.

  ###### Description

  Converts both halves of `half2` input `a` to float2 and returns the result. TBR

__host__ ​ __device__ ​ float __half2float ( const __half a ) throw ( )
  Converts `half` number to float.

  ###### Parameters

  `a`
    - float. Is only being read.

  ###### Returns

  float

  - \p

    a converted to float.

  ###### Description

  Converts half number `a` to float. TBR

__device__ ​ __half2 __half2half2 ( const __half a ) throw ( )
  Returns `half2` with both halves equal to the input value.

  ###### Parameters

  `a`
    - half. Is only being read.

  ###### Returns

  half2

  - The

    vector which has both its halves equal to the input `a`.

  ###### Description

  Returns `half2` number with both halves equal to the input `a` `half` number. TBR

__device__ ​ int __half2int_rd ( __half h ) throw ( )
  Convert a half to a signed integer in round-down mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  int

  - \p

    h converted to a signed integer.

  ###### Description

  Convert the half-precision floating point value `h` to a signed integer in round-down mode. TBR

__device__ ​ int __half2int_rn ( __half h ) throw ( )
  Convert a half to a signed integer in round-to-nearest-even mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  int

  - \p

    h converted to a signed integer.

  ###### Description

  Convert the half-precision floating point value `h` to a signed integer in round-to-nearest-even mode. TBR

__device__ ​ int __half2int_ru ( __half h ) throw ( )
  Convert a half to a signed integer in round-up mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  int

  - \p

    h converted to a signed integer.

  ###### Description

  Convert the half-precision floating point value `h` to a signed integer in round-up mode. TBR

__device__ ​ int __half2int_rz ( __half h ) throw ( )
  Convert a half to a signed integer in round-towards-zero mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  int

  - \p

    h converted to a signed integer.

  ###### Description

  Convert the half-precision floating point value `h` to a signed integer in round-towards-zero mode. TBR

__device__ ​ long long int __half2ll_rd ( __half h ) throw ( )
  Convert a half to a signed 64-bit integer in round-down mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  long long int

  - \p

    h converted to a signed 64-bit integer.

  ###### Description

  Convert the half-precision floating point value `h` to a signed 64-bit integer in round-down mode. TBR

__device__ ​ long long int __half2ll_rn ( __half h ) throw ( )
  Convert a half to a signed 64-bit integer in round-to-nearest-even mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  long long int

  - \p

    h converted to a signed 64-bit integer.

  ###### Description

  Convert the half-precision floating point value `h` to a signed 64-bit integer in round-to-nearest-even mode. TBR

__device__ ​ long long int __half2ll_ru ( __half h ) throw ( )
  Convert a half to a signed 64-bit integer in round-up mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  long long int

  - \p

    h converted to a signed 64-bit integer.

  ###### Description

  Convert the half-precision floating point value `h` to a signed 64-bit integer in round-up mode. TBR

__device__ ​ long long int __half2ll_rz ( __half h ) throw ( )
  Convert a half to a signed 64-bit integer in round-towards-zero mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  long long int

  - \p

    h converted to a signed 64-bit integer.

  ###### Description

  Convert the half-precision floating point value `h` to a signed 64-bit integer in round-towards-zero mode. TBR

__device__ ​ short int __half2short_rd ( __half h ) throw ( )
  Convert a half to a signed short integer in round-down mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  short int

  - \p

    h converted to a signed short integer.

  ###### Description

  Convert the half-precision floating point value `h` to a signed short integer in round-down mode. TBR

__device__ ​ short int __half2short_rn ( __half h ) throw ( )
  Convert a half to a signed short integer in round-to-nearest-even mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  short int

  - \p

    h converted to a signed short integer.

  ###### Description

  Convert the half-precision floating point value `h` to a signed short integer in round-to-nearest-even mode. TBR

__device__ ​ short int __half2short_ru ( __half h ) throw ( )
  Convert a half to a signed short integer in round-up mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  short int

  - \p

    h converted to a signed short integer.

  ###### Description

  Convert the half-precision floating point value `h` to a signed short integer in round-up mode. TBR

__device__ ​ short int __half2short_rz ( __half h ) throw ( )
  Convert a half to a signed short integer in round-towards-zero mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  short int

  - \p

    h converted to a signed short integer.

  ###### Description

  Convert the half-precision floating point value `h` to a signed short integer in round-towards-zero mode. TBR

__device__ ​ unsigned int __half2uint_rd ( __half h ) throw ( )
  Convert a half to an unsigned integer in round-down mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  unsigned int

  - \p

    h converted to an unsigned integer.

  ###### Description

  Convert the half-precision floating point value `h` to an unsigned integer in round-down mode. TBR

__device__ ​ unsigned int __half2uint_rn ( __half h ) throw ( )
  Convert a half to an unsigned integer in round-to-nearest-even mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  unsigned int

  - \p

    h converted to an unsigned integer.

  ###### Description

  Convert the half-precision floating point value `h` to an unsigned integer in round-to-nearest-even mode. TBR

__device__ ​ unsigned int __half2uint_ru ( __half h ) throw ( )
  Convert a half to an unsigned integer in round-up mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  unsigned int

  - \p

    h converted to an unsigned integer.

  ###### Description

  Convert the half-precision floating point value `h` to an unsigned integer in round-up mode. TBR

__device__ ​ unsigned int __half2uint_rz ( __half h ) throw ( )
  Convert a half to an unsigned integer in round-towards-zero mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  unsigned int

  - \p

    h converted to an unsigned integer.

  ###### Description

  Convert the half-precision floating point value `h` to an unsigned integer in round-towards-zero mode. TBR

__device__ ​ unsigned long long int __half2ull_rd ( __half h ) throw ( )
  Convert a half to an unsigned 64-bit integer in round-down mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  unsigned long long int

  - \p

    h converted to an unsigned 64-bit integer.

  ###### Description

  Convert the half-precision floating point value `h` to an unsigned 64-bit integer in round-down mode. TBR

__device__ ​ unsigned long long int __half2ull_rn ( __half h ) throw ( )
  Convert a half to an unsigned 64-bit integer in round-to-nearest-even mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  unsigned long long int

  - \p

    h converted to an unsigned 64-bit integer.

  ###### Description

  Convert the half-precision floating point value `h` to an unsigned 64-bit integer in round-to-nearest-even mode. TBR

__device__ ​ unsigned long long int __half2ull_ru ( __half h ) throw ( )
  Convert a half to an unsigned 64-bit integer in round-up mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  unsigned long long int

  - \p

    h converted to an unsigned 64-bit integer.

  ###### Description

  Convert the half-precision floating point value `h` to an unsigned 64-bit integer in round-up mode. TBR

__device__ ​ unsigned long long int __half2ull_rz ( __half h ) throw ( )
  Convert a half to an unsigned 64-bit integer in round-towards-zero mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  unsigned long long int

  - \p

    h converted to an unsigned 64-bit integer.

  ###### Description

  Convert the half-precision floating point value `h` to an unsigned 64-bit integer in round-towards-zero mode. TBR

__device__ ​ unsigned short int __half2ushort_rd ( __half h )
  Convert a half to an unsigned short integer in round-down mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  unsigned short int

  - \p

    h converted to an unsigned short integer.

  ###### Description

  Convert the half-precision floating point value `h` to an unsigned short integer in round-down mode. TBR

__device__ ​ unsigned short int __half2ushort_rn ( __half h ) throw ( )
  Convert a half to an unsigned short integer in round-to-nearest-even mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  unsigned short int

  - \p

    h converted to an unsigned short integer.

  ###### Description

  Convert the half-precision floating point value `h` to an unsigned short integer in round-to-nearest-even mode. TBR

__device__ ​ unsigned short int __half2ushort_ru ( __half h )
  Convert a half to an unsigned short integer in round-up mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  unsigned short int

  - \p

    h converted to an an unsigned short integer.

  ###### Description

  Convert the half-precision floating point value `h` to an unsigned short integer in round-up mode. TBR

__device__ ​ unsigned short int __half2ushort_rz ( __half h ) throw ( )
  Convert a half to an unsigned short integer in round-towards-zero mode.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  unsigned short int

  - \p

    h converted to an unsigned short integer.

  ###### Description

  Convert the half-precision floating point value `h` to an unsigned short integer in round-towards-zero mode. TBR

__device__ ​ short int __half_as_short ( const __half h ) throw ( )
  Reinterprets bits in a `half` as a signed short integer.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  short int

  - The

    reinterpreted value.

  ###### Description

  Reinterprets the bits in the half-precision floating point number `h` as a signed short integer. TBR

__device__ ​ unsigned short int __half_as_ushort ( const __half h ) throw ( )
  Reinterprets bits in a `half` as an unsigned short integer.

  ###### Parameters

  `h`
    - half. Is only being read.

  ###### Returns

  unsigned short int

  - The

    reinterpreted value.

  ###### Description

  Reinterprets the bits in the half-precision floating point `h` as an unsigned short number. TBR

__device__ ​ __half2 __halves2half2 ( const __half a, const __half b ) throw ( )
  Combines two `half` numbers into one `half2` number.

  ###### Parameters

  `a`
    - half. Is only being read.
  `b`
    - half. Is only being read.

  ###### Returns

  half2

  - The

    half2 with one half equal to `a` and the other to `b`.

  ###### Description

  Combines two input `half` number `a` and `b` into one `half2` number. Input `a` is stored in low 16 bits of the return value, input `b` is stored in high 16 bits of the return value. TBR

__host__ ​ __device__ ​ float __high2float ( const __half2 a ) throw ( )
  Converts high 16 bits of `half2` to float and returns the result.

  ###### Parameters

  `a`
    - half2. Is only being read.

  ###### Returns

  float

  - The

    high 16 bits of `a` converted to float.

  ###### Description

  Converts high 16 bits of `half2` input `a` to 32 bit floating point number and returns the result. TBR

__device__ ​ __half __high2half ( const __half2 a ) throw ( )
  Returns high 16 bits of `half2` input.

  ###### Parameters

  `a`
    - half2. Is only being read.

  ###### Returns

  half

  - The

    high 16 bits of the input.

  ###### Description

  Returns high 16 bits of `half2` input `a`. TBR

__device__ ​ __half2 __high2half2 ( const __half2 a ) throw ( )
  Extracts high 16 bits from `half2` input.

  ###### Parameters

  `a`
    - half2. Is only being read.

  ###### Returns

  half2

  - The

    half2 with both halves equal to the high 16 bits of the input.

  ###### Description

  Extracts high 16 bits from `half2` input `a` and returns a new `half2` number which has both halves equal to the extracted bits. TBR

__device__ ​ __half2 __highs2half2 ( const __half2 a, const __half2 b ) throw ( )
  Extracts high 16 bits from each of the two `half2` inputs and combines into one `half2` number.

  ###### Parameters

  `a`
    - half2. Is only being read.
  `b`
    - half2. Is only being read.

  ###### Returns

  half2

  - The

    high 16 bits of `a` and of `b`.

  ###### Description

  Extracts high 16 bits from each of the two `half2` inputs and combines into one `half2` number. High 16 bits from input `a` is stored in low 16 bits of the return value, high 16 bits from input `b` is stored in high 16 bits of the return value. TBR

__device__ ​ __half __int2half_rd ( int i ) throw ( )
  Convert a signed integer to a half in round-down mode.

  ###### Parameters

  `i`
    - int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the signed integer value `i` to a half-precision floating point value in round-down mode. TBR

__device__ ​ __half __int2half_rn ( int i ) throw ( )
  Convert a signed integer to a half in round-to-nearest-even mode.

  ###### Parameters

  `i`
    - int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the signed integer value `i` to a half-precision floating point value in round-to-nearest-even mode. TBR

__device__ ​ __half __int2half_ru ( int i ) throw ( )
  Convert a signed integer to a half in round-up mode.

  ###### Parameters

  `i`
    - int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the signed integer value `i` to a half-precision floating point value in round-up mode. TBR

__device__ ​ __half __int2half_rz ( int i ) throw ( )
  Convert a signed integer to a half in round-towards-zero mode.

  ###### Parameters

  `i`
    - int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the signed integer value `i` to a half-precision floating point value in round-towards-zero mode. TBR

__device__ ​ __half __ll2half_rd ( long long int i ) throw ( )
  Convert a signed 64-bit integer to a half in round-down mode.

  ###### Parameters

  `i`
    - long long int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the signed 64-bit integer value `i` to a half-precision floating point value in round-down mode. TBR

__device__ ​ __half __ll2half_rn ( long long int i ) throw ( )
  Convert a signed 64-bit integer to a half in round-to-nearest-even mode.

  ###### Parameters

  `i`
    - long long int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the signed 64-bit integer value `i` to a half-precision floating point value in round-to-nearest-even mode. TBR

__device__ ​ __half __ll2half_ru ( long long int i ) throw ( )
  Convert a signed 64-bit integer to a half in round-up mode.

  ###### Parameters

  `i`
    - long long int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the signed 64-bit integer value `i` to a half-precision floating point value in round-up mode. TBR

__device__ ​ __half __ll2half_rz ( long long int i )
  Convert a signed 64-bit integer to a half in round-towards-zero mode.

  ###### Parameters

  `i`
    - long long int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the signed 64-bit integer value `i` to a half-precision floating point value in round-towards-zero mode. TBR

__host__ ​ __device__ ​ float __low2float ( const __half2 a ) throw ( )
  Converts low 16 bits of `half2` to float and returns the result.

  ###### Parameters

  `a`
    - half2. Is only being read.

  ###### Returns

  float

  - The

    low 16 bits of `a` converted to float.

  ###### Description

  Converts low 16 bits of `half2` input `a` to 32 bit floating point number and returns the result. TBR

__device__ ​ __half __low2half ( const __half2 a ) throw ( )
  Returns low 16 bits of `half2` input.

  ###### Parameters

  `a`
    - half2. Is only being read.

  ###### Returns

  half

  - Returns

    `half` which contains low 16 bits of the input `a`.

  ###### Description

  Returns low 16 bits of `half2` input `a`. TBR

__device__ ​ __half2 __low2half2 ( const __half2 a ) throw ( )
  Extracts low 16 bits from `half2` input.

  ###### Parameters

  `a`
    - half2. Is only being read.

  ###### Returns

  half2

  - The

    half2 with both halves equal to the low 16 bits of the input.

  ###### Description

  Extracts low 16 bits from `half2` input `a` and returns a new `half2` number which has both halves equal to the extracted bits. TBR

__device__ ​ __half2 __lowhigh2highlow ( const __half2 a ) throw ( )
  Swaps both halves of the `half2` input.

  ###### Parameters

  `a`
    - half2. Is only being read.

  ###### Returns

  half2

  - \p

    a with its halves being swapped.

  ###### Description

  Swaps both halves of the `half2` input and returns a new `half2` number with swapped halves. TBR

__device__ ​ __half2 __lows2half2 ( const __half2 a, const __half2 b ) throw ( )
  Extracts low 16 bits from each of the two `half2` inputs and combines into one `half2` number.

  ###### Parameters

  `a`
    - half2. Is only being read.
  `b`
    - half2. Is only being read.

  ###### Returns

  half2

  - The

    low 16 bits of `a` and of `b`.

  ###### Description

  Extracts low 16 bits from each of the two `half2` inputs and combines into one `half2` number. Low 16 bits from input `a` is stored in low 16 bits of the return value, low 16 bits from input `b` is stored in high 16 bits of the return value. TBR

__device__ ​ __half __shfl_down_sync ( unsigned mask, __half var, unsigned int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Copy from a thread with higher ID relative to the caller.

  ###### Parameters

  `mask`
    - unsigned int. Is only being read.
  `var`
    - half. Is only being read.
  `delta`
    - int. Is only being read.
  `width`
    - int. Is only being read.

  ###### Returns

  Returns the 2-byte word referenced by var from the source thread ID as half. If the source thread ID is out of range or the source thread has exited, the calling thread's own var is returned.

  ###### Description

  Calculates a source thread ID by adding delta to the caller's thread ID. The value of var held by the resulting thread ID is returned: this has the effect of shifting var down the warp by delta threads. If width is less than warpSize then each subsection of the warp behaves as a separate entity with a starting logical thread ID of 0. As for __shfl_up_sync(), the ID number of the source thread will not wrap around the value of width and so the upper delta threads will remain unchanged.

__device__ ​ __half2 __shfl_down_sync ( unsigned mask, __half2 var, unsigned int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Copy from a thread with higher ID relative to the caller.

  ###### Parameters

  `mask`
    - unsigned int. Is only being read.
  `var`
    - half2. Is only being read.
  `delta`
    - int. Is only being read.
  `width`
    - int. Is only being read.

  ###### Returns

  Returns the 4-byte word referenced by var from the source thread ID as half2. If the source thread ID is out of range or the source thread has exited, the calling thread's own var is returned.

  ###### Description

  Calculates a source thread ID by adding delta to the caller's thread ID. The value of var held by the resulting thread ID is returned: this has the effect of shifting var down the warp by delta threads. If width is less than warpSize then each subsection of the warp behaves as a separate entity with a starting logical thread ID of 0. As for __shfl_up_sync(), the ID number of the source thread will not wrap around the value of width and so the upper delta threads will remain unchanged.

__device__ ​ __half __shfl_sync ( unsigned mask, __half var, int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Direct copy from indexed thread.

  ###### Parameters

  `mask`
    - unsigned int. Is only being read.
  `var`
    - half. Is only being read.
  `delta`
    - int. Is only being read.
  `width`
    - int. Is only being read.

  ###### Returns

  Returns the 2-byte word referenced by var from the source thread ID as half. If the source thread ID is out of range or the source thread has exited, the calling thread's own var is returned.

  ###### Description

  Returns the value of var held by the thread whose ID is given by delta. If width is less than warpSize then each subsection of the warp behaves as a separate entity with a starting logical thread ID of 0. If delta is outside the range [0:width-1], the value returned corresponds to the value of var held by the delta modulo width (i.e. ithin the same subsection). width must have a value which is a power of 2; results are undefined if width is not a power of 2, or is a number greater than warpSize.

__device__ ​ __half2 __shfl_sync ( unsigned mask, __half2 var, int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Direct copy from indexed thread.

  ###### Parameters

  `mask`
    - unsigned int. Is only being read.
  `var`
    - half2. Is only being read.
  `delta`
    - int. Is only being read.
  `width`
    - int. Is only being read.

  ###### Returns

  Returns the 4-byte word referenced by var from the source thread ID as half2. If the source thread ID is out of range or the source thread has exited, the calling thread's own var is returned.

  ###### Description

  Returns the value of var held by the thread whose ID is given by delta. If width is less than warpSize then each subsection of the warp behaves as a separate entity with a starting logical thread ID of 0. If delta is outside the range [0:width-1], the value returned corresponds to the value of var held by the delta modulo width (i.e. ithin the same subsection). width must have a value which is a power of 2; results are undefined if width is not a power of 2, or is a number greater than warpSize. TBR

__device__ ​ __half __shfl_up_sync ( unsigned mask, __half var, unsigned int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Copy from a thread with lower ID relative to the caller.

  ###### Parameters

  `mask`
    - unsigned int. Is only being read.
  `var`
    - half. Is only being read.
  `delta`
    - int. Is only being read.
  `width`
    - int. Is only being read.

  ###### Returns

  Returns the 2-byte word referenced by var from the source thread ID as half. If the source thread ID is out of range or the source thread has exited, the calling thread's own var is returned.

  ###### Description

  Calculates a source thread ID by subtracting delta from the caller's lane ID. The value of var held by the resulting lane ID is returned: in effect, var is shifted up the warp by delta threads. If width is less than warpSize then each subsection of the warp behaves as a separate entity with a starting logical thread ID of 0. The source thread index will not wrap around the value of width, so effectively the lower delta threads will be unchanged. width must have a value which is a power of 2; results are undefined if width is not a power of 2, or is a number greater than warpSize.

__device__ ​ __half2 __shfl_up_sync ( unsigned mask, __half2 var, unsigned int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Copy from a thread with lower ID relative to the caller.

  ###### Parameters

  `mask`
    - unsigned int. Is only being read.
  `var`
    - half2. Is only being read.
  `delta`
    - int. Is only being read.
  `width`
    - int. Is only being read.

  ###### Returns

  Returns the 4-byte word referenced by var from the source thread ID as half2. If the source thread ID is out of range or the source thread has exited, the calling thread's own var is returned.

  ###### Description

  Calculates a source thread ID by subtracting delta from the caller's lane ID. The value of var held by the resulting lane ID is returned: in effect, var is shifted up the warp by delta threads. If width is less than warpSize then each subsection of the warp behaves as a separate entity with a starting logical thread ID of 0. The source thread index will not wrap around the value of width, so effectively the lower delta threads will be unchanged. width must have a value which is a power of 2; results are undefined if width is not a power of 2, or is a number greater than warpSize.

__device__ ​ __half __shfl_xor_sync ( unsigned mask, __half var, int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Copy from a thread based on bitwise XOR of own thread ID.

  ###### Parameters

  `mask`
    - unsigned int. Is only being read.
  `var`
    - half. Is only being read.
  `delta`
    - int. Is only being read.
  `width`
    - int. Is only being read.

  ###### Returns

  Returns the 2-byte word referenced by var from the source thread ID as half. If the source thread ID is out of range or the source thread has exited, the calling thread's own var is returned.

  ###### Description

  Calculates a source thread ID by performing a bitwise XOR of the caller's thread ID with mask: the value of var held by the resulting thread ID is returned. If width is less than warpSize then each group of width consecutive threads are able to access elements from earlier groups of threads, however if they attempt to access elements from later groups of threads their own value of var will be returned. This mode implements a butterfly addressing pattern such as is used in tree reduction and broadcast.

__device__ ​ __half2 __shfl_xor_sync ( unsigned mask, __half2 var, int delta, int width = warpSize ) throw ( )
  Exchange a variable between threads within a warp. Copy from a thread based on bitwise XOR of own thread ID.

  ###### Parameters

  `mask`
    - unsigned int. Is only being read.
  `var`
    - half2. Is only being read.
  `delta`
    - int. Is only being read.
  `width`
    - int. Is only being read.

  ###### Returns

  Returns the 4-byte word referenced by var from the source thread ID as half2. If the source thread ID is out of range or the source thread has exited, the calling thread's own var is returned.

  ###### Description

  Calculates a source thread ID by performing a bitwise XOR of the caller's thread ID with mask: the value of var held by the resulting thread ID is returned. If width is less than warpSize then each group of width consecutive threads are able to access elements from earlier groups of threads, however if they attempt to access elements from later groups of threads their own value of var will be returned. This mode implements a butterfly addressing pattern such as is used in tree reduction and broadcast.

__device__ ​ __half __short2half_rd ( short int i ) throw ( )
  Convert a signed short integer to a half in round-down mode.

  ###### Parameters

  `i`
    - short int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the signed short integer value `i` to a half-precision floating point value in round-down mode. TBR

__device__ ​ __half __short2half_rn ( short int i ) throw ( )
  Convert a signed short integer to a half in round-to-nearest-even mode.

  ###### Parameters

  `i`
    - short int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the signed short integer value `i` to a half-precision floating point value in round-to-nearest-even mode. TBR

__device__ ​ __half __short2half_ru ( short int i ) throw ( )
  Convert a signed short integer to a half in round-up mode.

  ###### Parameters

  `i`
    - short int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the signed short integer value `i` to a half-precision floating point value in round-up mode. TBR

__device__ ​ __half __short2half_rz ( short int i ) throw ( )
  Convert a signed short integer to a half in round-towards-zero mode.

  ###### Parameters

  `i`
    - short int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the signed short integer value `i` to a half-precision floating point value in round-towards-zero mode. TBR

__device__ ​ __half __short_as_half ( const short int i ) throw ( )
  Reinterprets bits in a signed short integer as a `half`.

  ###### Parameters

  `i`
    - short int. Is only being read.

  ###### Returns

  half

  - The

    reinterpreted value.

  ###### Description

  Reinterprets the bits in the signed short integer `i` as a half-precision floating point number. TBR

__device__ ​ __half __uint2half_rd ( unsigned int i ) throw ( )
  Convert an unsigned integer to a half in round-down mode.

  ###### Parameters

  `i`
    - unsigned int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the unsigned integer value `i` to a half-precision floating point value in round-down mode. TBR

__device__ ​ __half __uint2half_rn ( unsigned int i ) throw ( )
  Convert an unsigned integer to a half in round-to-nearest-even mode.

  ###### Parameters

  `i`
    - unsigned int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the unsigned integer value `i` to a half-precision floating point value in round-to-nearest-even mode. TBR

__device__ ​ __half __uint2half_ru ( unsigned int i ) throw ( )
  Convert an unsigned integer to a half in round-up mode.

  ###### Parameters

  `i`
    - unsigned int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the unsigned integer value `i` to a half-precision floating point value in round-up mode. TBR

__device__ ​ __half __uint2half_rz ( unsigned int i ) throw ( )
  Convert an unsigned integer to a half in round-towards-zero mode.

  ###### Parameters

  `i`
    - unsigned int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the unsigned integer value `i` to a half-precision floating point value in round-towards-zero mode. TBR

__device__ ​ __half __ull2half_rd ( unsigned long long int i ) throw ( )
  Convert an unsigned 64-bit integer to a half in round-down mode.

  ###### Parameters

  `i`
    - unsigned long long int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the unsigned 64-bit integer value `i` to a half-precision floating point value in round-down mode. TBR

__device__ ​ __half __ull2half_rn ( unsigned long long int i ) throw ( )
  Convert an unsigned 64-bit integer to a half in round-to-nearest-even mode.

  ###### Parameters

  `i`
    - unsigned long long int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the unsigned 64-bit integer value `i` to a half-precision floating point value in round-to-nearest-even mode. TBR

__device__ ​ __half __ull2half_ru ( unsigned long long int i ) throw ( )
  Convert an unsigned 64-bit integer to a half in round-up mode.

  ###### Parameters

  `i`
    - unsigned long long int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the unsigned 64-bit integer value `i` to a half-precision floating point value in round-up mode. TBR

__device__ ​ __half __ull2half_rz ( unsigned long long int i ) throw ( )
  Convert an unsigned 64-bit integer to a half in round-towards-zero mode.

  ###### Parameters

  `i`
    - unsigned long long int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the unsigned 64-bit integer value `i` to a half-precision floating point value in round-towards-zero mode. TBR

__device__ ​ __half __ushort2half_rd ( unsigned short int i ) throw ( )
  Convert an unsigned short integer to a half in round-down mode.

  ###### Parameters

  `i`
    - unsigned short int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the unsigned short integer value `i` to a half-precision floating point value in round-down mode. TBR

__device__ ​ __half __ushort2half_rn ( unsigned short int i ) throw ( )
  Convert an unsigned short integer to a half in round-to-nearest-even mode.

  ###### Parameters

  `i`
    - unsigned short int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the unsigned short integer value `i` to a half-precision floating point value in round-to-nearest-even mode. TBR

__device__ ​ __half __ushort2half_ru ( unsigned short int i ) throw ( )
  Convert an unsigned short integer to a half in round-up mode.

  ###### Parameters

  `i`
    - unsigned short int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the unsigned short integer value `i` to a half-precision floating point value in round-up mode. TBR

__device__ ​ __half __ushort2half_rz ( unsigned short int i ) throw ( )
  Convert an unsigned short integer to a half in round-towards-zero mode.

  ###### Parameters

  `i`
    - unsigned short int. Is only being read.

  ###### Returns

  half

  - \p

    i converted to half.

  ###### Description

  Convert the unsigned short integer value `i` to a half-precision floating point value in round-towards-zero mode. TBR

__device__ ​ __half __ushort_as_half ( const unsigned short int i ) throw ( )
  Reinterprets bits in an unsigned short integer as a `half`.

  ###### Parameters

  `i`
    - unsigned short int. Is only being read.

  ###### Returns

  half

  - The

    reinterpreted value.

  ###### Description

  Reinterprets the bits in the unsigned short integer `i` as a half-precision floating point number. TBR