![SYCL](./combine3.png "SYCL")
```
q.parallel_for([=](sycl::item<1> it) {
sycl::atomic_ref<T,
sycl::memory_order_relaxed,
sycl::memory_scope_device>
(a[0])
.fetch_add(it.get_global_linear_id());
});
```
* Using atomics, values can be combined across work items without data races.
* `fetch_add`, `fetch_sub`, `fetch_max`, `fetch_min` are some of the ways we can
combine values atomically.
* `fetch_and` and `fetch_or` can also be used for
integral types
* Please see the SYCL Specification for more details.