The atomic functions are shown below. Click an item in the table below for details about that function.
The optional extension cl_khr_int64_base_atomics
implements atomic operations on 64-bit signed and unsigned integers to locations in global
and local
memory.
The cl_khr_int64_extended_atomics
extension enables additional atomic functions using types long
and unsigned long
.
An application that wants to use this extension will need to include the #pragma OPENCL EXTENSION cl_khr_int64_extended_atomics : enable
in the OpenCL program source.
As of OpenCL version 1.1, cl_khr_global_int32_base_atomics
, cl_khr_global_int32_extended_atomics
, cl_khr_local_int32_base_atomics
and cl_khr_local_int32_extended_atomics
extensions are core features.
The built-in atomic function names are changed to use the atomic_ prefix
instead of atom_
.
The list of supported atomic type names are:
-
atomic_int
-
atomic_uint
-
atomic_long
-
atomic_ulong
-
atomic_float
-
atomic_double
-
atomic_intptr_t
-
atomic_uintptr_t
-
atomic_size_t
-
atomic_ptrdiff_t
The atomic_long
and atomic_ulong
types are supported if the cl_khr_int64_base_atomics
and cl_khr_int64_extended_atomics
extensions are supported.
The atomic_double
type is only supported if double precision is supported and the cl_khr_int64_base_atomics
and cl_khr_int64_extended_atomics
extensions are supported.
If the device address space is 64-bits, the data types atomic_intptr_t
, atomic_uintptr_t
, atomic_size_t
and atomic_ptrdiff_t
are supported if the cl_khr_int64_base_atomics
and cl_khr_int64_extended_atomics
extensions are supported.
Arguments to a kernel can be declared to be a pointer to the above atomic types or the atomic_flag
type.
The representation of atomic integer, floating-point and pointer types have the same size as their corresponding regular types.
The atomic_flag
type must be implemented as a 32-bit integer.